Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Side by Side Diff: chrome/browser/policy/cloud/cloud_policy_client.cc

Issue 19733003: Implement cloud policy invalidations using the invalidation service framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/policy/cloud/cloud_policy_client.h" 5 #include "chrome/browser/policy/cloud/cloud_policy_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/guid.h" 8 #include "base/guid.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 UserAffiliation user_affiliation, 51 UserAffiliation user_affiliation,
52 StatusProvider* status_provider, 52 StatusProvider* status_provider,
53 DeviceManagementService* service) 53 DeviceManagementService* service)
54 : machine_id_(machine_id), 54 : machine_id_(machine_id),
55 machine_model_(machine_model), 55 machine_model_(machine_model),
56 user_affiliation_(user_affiliation), 56 user_affiliation_(user_affiliation),
57 device_mode_(DEVICE_MODE_NOT_SET), 57 device_mode_(DEVICE_MODE_NOT_SET),
58 submit_machine_id_(false), 58 submit_machine_id_(false),
59 public_key_version_(-1), 59 public_key_version_(-1),
60 public_key_version_valid_(false), 60 public_key_version_valid_(false),
61 invalidation_version_(0),
62 fetched_invalidation_version_(0),
61 service_(service), // Can be NULL for unit tests. 63 service_(service), // Can be NULL for unit tests.
62 status_provider_(status_provider), // Can be NULL for unit tests. 64 status_provider_(status_provider), // Can be NULL for unit tests.
63 status_(DM_STATUS_SUCCESS) { 65 status_(DM_STATUS_SUCCESS) {
64 } 66 }
65 67
66 CloudPolicyClient::~CloudPolicyClient() { 68 CloudPolicyClient::~CloudPolicyClient() {
67 STLDeleteValues(&responses_); 69 STLDeleteValues(&responses_);
68 } 70 }
69 71
70 void CloudPolicyClient::SetupRegistration(const std::string& dm_token, 72 void CloudPolicyClient::SetupRegistration(const std::string& dm_token,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 if (!requisition.empty()) 120 if (!requisition.empty())
119 request->set_requisition(requisition); 121 request->set_requisition(requisition);
120 122
121 request_job_->SetRetryCallback( 123 request_job_->SetRetryCallback(
122 base::Bind(&CloudPolicyClient::OnRetryRegister, base::Unretained(this))); 124 base::Bind(&CloudPolicyClient::OnRetryRegister, base::Unretained(this)));
123 125
124 request_job_->Start(base::Bind(&CloudPolicyClient::OnRegisterCompleted, 126 request_job_->Start(base::Bind(&CloudPolicyClient::OnRegisterCompleted,
125 base::Unretained(this))); 127 base::Unretained(this)));
126 } 128 }
127 129
130 void CloudPolicyClient::SetInvalidationInfo(
131 int64 version,
132 const std::string& payload) {
133 invalidation_version_ = version;
134 invalidation_payload_ = payload;
135 }
136
128 void CloudPolicyClient::FetchPolicy() { 137 void CloudPolicyClient::FetchPolicy() {
129 CHECK(is_registered()); 138 CHECK(is_registered());
130 CHECK(!namespaces_to_fetch_.empty()); 139 CHECK(!namespaces_to_fetch_.empty());
131 140
132 request_job_.reset( 141 request_job_.reset(
133 service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH)); 142 service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH));
134 request_job_->SetDMToken(dm_token_); 143 request_job_->SetDMToken(dm_token_);
135 request_job_->SetClientID(client_id_); 144 request_job_->SetClientID(client_id_);
136 request_job_->SetUserAffiliation(user_affiliation_); 145 request_job_->SetUserAffiliation(user_affiliation_);
137 146
(...skipping 20 matching lines...) Expand all
158 167
159 // These fields are included only in requests for chrome policy. 168 // These fields are included only in requests for chrome policy.
160 if (IsChromePolicy(it->first)) { 169 if (IsChromePolicy(it->first)) {
161 if (submit_machine_id_ && !machine_id_.empty()) 170 if (submit_machine_id_ && !machine_id_.empty())
162 fetch_request->set_machine_id(machine_id_); 171 fetch_request->set_machine_id(machine_id_);
163 if (!last_policy_timestamp_.is_null()) { 172 if (!last_policy_timestamp_.is_null()) {
164 base::TimeDelta timestamp( 173 base::TimeDelta timestamp(
165 last_policy_timestamp_ - base::Time::UnixEpoch()); 174 last_policy_timestamp_ - base::Time::UnixEpoch());
166 fetch_request->set_timestamp(timestamp.InMilliseconds()); 175 fetch_request->set_timestamp(timestamp.InMilliseconds());
167 } 176 }
177 if (!invalidation_payload_.empty()) {
178 fetch_request->set_invalidation_version(invalidation_version_);
179 fetch_request->set_invalidation_payload(invalidation_payload_);
180 }
168 } 181 }
169 } 182 }
170 183
171 // Add status data. 184 // Add status data.
172 if (status_provider_) { 185 if (status_provider_) {
173 if (!status_provider_->GetDeviceStatus( 186 if (!status_provider_->GetDeviceStatus(
174 request->mutable_device_status_report_request())) { 187 request->mutable_device_status_report_request())) {
175 request->clear_device_status_report_request(); 188 request->clear_device_status_report_request();
176 } 189 }
177 if (!status_provider_->GetSessionStatus( 190 if (!status_provider_->GetSessionStatus(
178 request->mutable_session_status_report_request())) { 191 request->mutable_session_status_report_request())) {
179 request->clear_session_status_report_request(); 192 request->clear_session_status_report_request();
180 } 193 }
181 } 194 }
182 195
183 // Fire the job. 196 // Fire the job.
197 fetched_invalidation_version_ = invalidation_version_;
Joao da Silva 2013/07/24 15:34:07 This should be at OnPolicyFetchCompleted, and done
Steve Condie 2013/07/25 01:18:08 That actually wouldn't do what I want because it's
Joao da Silva 2013/07/25 18:03:53 I see, thanks for clarifying. Please add a comment
Steve Condie 2013/07/26 01:39:25 Done.
184 request_job_->Start(base::Bind(&CloudPolicyClient::OnPolicyFetchCompleted, 198 request_job_->Start(base::Bind(&CloudPolicyClient::OnPolicyFetchCompleted,
185 base::Unretained(this))); 199 base::Unretained(this)));
186 } 200 }
187 201
188 void CloudPolicyClient::FetchRobotAuthCodes(const std::string& auth_token) { 202 void CloudPolicyClient::FetchRobotAuthCodes(const std::string& auth_token) {
189 CHECK(is_registered()); 203 CHECK(is_registered());
190 DCHECK(!auth_token.empty()); 204 DCHECK(!auth_token.empty());
191 205
192 request_job_.reset(service_->CreateJob( 206 request_job_.reset(service_->CreateJob(
193 DeviceManagementRequestJob::TYPE_API_AUTH_CODE_FETCH)); 207 DeviceManagementRequestJob::TYPE_API_AUTH_CODE_FETCH));
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 432
419 void CloudPolicyClient::NotifyRobotAuthCodesFetched() { 433 void CloudPolicyClient::NotifyRobotAuthCodesFetched() {
420 FOR_EACH_OBSERVER(Observer, observers_, OnRobotAuthCodesFetched(this)); 434 FOR_EACH_OBSERVER(Observer, observers_, OnRobotAuthCodesFetched(this));
421 } 435 }
422 436
423 void CloudPolicyClient::NotifyClientError() { 437 void CloudPolicyClient::NotifyClientError() {
424 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this)); 438 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this));
425 } 439 }
426 440
427 } // namespace policy 441 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698