Index: chrome/browser/policy/cloud/cloud_policy_client.cc |
diff --git a/chrome/browser/policy/cloud/cloud_policy_client.cc b/chrome/browser/policy/cloud/cloud_policy_client.cc |
index a9b30c3d6f9fd9bdc8300f1ac71caf633d6de85f..8afbc94b157f083920e8e44586f9d67e7d72916d 100644 |
--- a/chrome/browser/policy/cloud/cloud_policy_client.cc |
+++ b/chrome/browser/policy/cloud/cloud_policy_client.cc |
@@ -58,6 +58,8 @@ CloudPolicyClient::CloudPolicyClient(const std::string& machine_id, |
submit_machine_id_(false), |
public_key_version_(-1), |
public_key_version_valid_(false), |
+ invalidation_version_(0), |
+ fetched_invalidation_version_(0), |
service_(service), // Can be NULL for unit tests. |
status_provider_(status_provider), // Can be NULL for unit tests. |
status_(DM_STATUS_SUCCESS) { |
@@ -125,6 +127,13 @@ void CloudPolicyClient::Register(em::DeviceRegisterRequest::Type type, |
base::Unretained(this))); |
} |
+void CloudPolicyClient::SetInvalidationInfo( |
+ int64 version, |
+ const std::string& payload) { |
+ invalidation_version_ = version; |
+ invalidation_payload_ = payload; |
+} |
+ |
void CloudPolicyClient::FetchPolicy() { |
CHECK(is_registered()); |
CHECK(!namespaces_to_fetch_.empty()); |
@@ -165,6 +174,10 @@ void CloudPolicyClient::FetchPolicy() { |
last_policy_timestamp_ - base::Time::UnixEpoch()); |
fetch_request->set_timestamp(timestamp.InMilliseconds()); |
} |
+ if (!invalidation_payload_.empty()) { |
+ fetch_request->set_invalidation_version(invalidation_version_); |
+ fetch_request->set_invalidation_payload(invalidation_payload_); |
+ } |
} |
} |
@@ -180,6 +193,10 @@ void CloudPolicyClient::FetchPolicy() { |
} |
} |
+ // Set the fetched invalidation version to the latest invalidation version |
+ // since it is now the invalidation version used for the latest fetch. |
+ fetched_invalidation_version_ = invalidation_version_; |
+ |
// Fire the job. |
request_job_->Start(base::Bind(&CloudPolicyClient::OnPolicyFetchCompleted, |
base::Unretained(this))); |