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

Side by Side Diff: components/policy/core/common/cloud/cloud_policy_client.cc

Issue 845313008: Refactored device status uploading out of policy fetch infrastructure. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added tests, fixed existing tests. Created 5 years, 11 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 "components/policy/core/common/cloud/cloud_policy_client.h" 5 #include "components/policy/core/common/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 27 matching lines...) Expand all
38 type == GetChromeUserPolicyType(); 38 type == GetChromeUserPolicyType();
39 } 39 }
40 40
41 } // namespace 41 } // namespace
42 42
43 CloudPolicyClient::Observer::~Observer() {} 43 CloudPolicyClient::Observer::~Observer() {}
44 44
45 void CloudPolicyClient::Observer::OnRobotAuthCodesFetched( 45 void CloudPolicyClient::Observer::OnRobotAuthCodesFetched(
46 CloudPolicyClient* client) {} 46 CloudPolicyClient* client) {}
47 47
48 CloudPolicyClient::StatusProvider::~StatusProvider() {}
49
50 CloudPolicyClient::CloudPolicyClient( 48 CloudPolicyClient::CloudPolicyClient(
51 const std::string& machine_id, 49 const std::string& machine_id,
52 const std::string& machine_model, 50 const std::string& machine_model,
53 const std::string& verification_key_hash, 51 const std::string& verification_key_hash,
54 UserAffiliation user_affiliation, 52 UserAffiliation user_affiliation,
55 DeviceManagementService* service, 53 DeviceManagementService* service,
56 scoped_refptr<net::URLRequestContextGetter> request_context) 54 scoped_refptr<net::URLRequestContextGetter> request_context)
57 : machine_id_(machine_id), 55 : machine_id_(machine_id),
58 machine_model_(machine_model), 56 machine_model_(machine_model),
59 verification_key_hash_(verification_key_hash), 57 verification_key_hash_(verification_key_hash),
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 last_policy_timestamp_ - base::Time::UnixEpoch()); 177 last_policy_timestamp_ - base::Time::UnixEpoch());
180 fetch_request->set_timestamp(timestamp.InMilliseconds()); 178 fetch_request->set_timestamp(timestamp.InMilliseconds());
181 } 179 }
182 if (!invalidation_payload_.empty()) { 180 if (!invalidation_payload_.empty()) {
183 fetch_request->set_invalidation_version(invalidation_version_); 181 fetch_request->set_invalidation_version(invalidation_version_);
184 fetch_request->set_invalidation_payload(invalidation_payload_); 182 fetch_request->set_invalidation_payload(invalidation_payload_);
185 } 183 }
186 } 184 }
187 } 185 }
188 186
189 // Add status data.
190 if (status_provider_) {
191 if (!status_provider_->GetDeviceStatus(
192 request->mutable_device_status_report_request())) {
193 request->clear_device_status_report_request();
194 }
195 if (!status_provider_->GetSessionStatus(
196 request->mutable_session_status_report_request())) {
197 request->clear_session_status_report_request();
198 }
199 }
200
201 // Add device state keys. 187 // Add device state keys.
202 if (!state_keys_to_upload_.empty()) { 188 if (!state_keys_to_upload_.empty()) {
203 em::DeviceStateKeyUpdateRequest* key_update_request = 189 em::DeviceStateKeyUpdateRequest* key_update_request =
204 request->mutable_device_state_key_update_request(); 190 request->mutable_device_state_key_update_request();
205 for (std::vector<std::string>::const_iterator key( 191 for (std::vector<std::string>::const_iterator key(
206 state_keys_to_upload_.begin()); 192 state_keys_to_upload_.begin());
207 key != state_keys_to_upload_.end(); 193 key != state_keys_to_upload_.end();
208 ++key) { 194 ++key) {
209 key_update_request->add_server_backed_state_key(*key); 195 key_update_request->add_server_backed_state_key(*key);
210 } 196 }
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 request->mutable_cert_upload_request()->set_device_certificate( 255 request->mutable_cert_upload_request()->set_device_certificate(
270 certificate_data); 256 certificate_data);
271 257
272 DeviceManagementRequestJob::Callback job_callback = base::Bind( 258 DeviceManagementRequestJob::Callback job_callback = base::Bind(
273 &CloudPolicyClient::OnCertificateUploadCompleted, 259 &CloudPolicyClient::OnCertificateUploadCompleted,
274 base::Unretained(this), 260 base::Unretained(this),
275 callback); 261 callback);
276 request_job_->Start(job_callback); 262 request_job_->Start(job_callback);
277 } 263 }
278 264
265 scoped_ptr<DeviceManagementRequestJob> CloudPolicyClient::CreateUploadStatusJob(
266 const em::DeviceStatusReportRequest* device_status,
267 const em::SessionStatusReportRequest* session_status) {
268 CHECK(is_registered());
269 // Should pass in at least one type of status.
270 DCHECK(device_status || session_status);
271 scoped_ptr<DeviceManagementRequestJob> job(
272 service_->CreateJob(DeviceManagementRequestJob::TYPE_UPLOAD_STATUS,
273 GetRequestContext()));
274 job->SetDMToken(dm_token_);
275 job->SetClientID(client_id_);
276
277 em::DeviceManagementRequest* request = job->GetRequest();
278 if (device_status)
279 *request->mutable_device_status_report_request() = *device_status;
280 if (session_status)
281 *request->mutable_session_status_report_request() = *session_status;
282
283 return job;
284 }
285
279 void CloudPolicyClient::AddObserver(Observer* observer) { 286 void CloudPolicyClient::AddObserver(Observer* observer) {
280 observers_.AddObserver(observer); 287 observers_.AddObserver(observer);
281 } 288 }
282 289
283 void CloudPolicyClient::RemoveObserver(Observer* observer) { 290 void CloudPolicyClient::RemoveObserver(Observer* observer) {
284 observers_.RemoveObserver(observer); 291 observers_.RemoveObserver(observer);
285 } 292 }
286 293
287 void CloudPolicyClient::SetStatusProvider(scoped_ptr<StatusProvider> provider) {
288 status_provider_ = provider.Pass();
289 }
290
291 bool CloudPolicyClient::HasStatusProviderForTest() {
292 return status_provider_;
293 }
294
295 void CloudPolicyClient::AddPolicyTypeToFetch( 294 void CloudPolicyClient::AddPolicyTypeToFetch(
296 const std::string& policy_type, 295 const std::string& policy_type,
297 const std::string& settings_entity_id) { 296 const std::string& settings_entity_id) {
298 types_to_fetch_.insert(std::make_pair(policy_type, settings_entity_id)); 297 types_to_fetch_.insert(std::make_pair(policy_type, settings_entity_id));
299 } 298 }
300 299
301 void CloudPolicyClient::RemovePolicyTypeToFetch( 300 void CloudPolicyClient::RemovePolicyTypeToFetch(
302 const std::string& policy_type, 301 const std::string& policy_type,
303 const std::string& settings_entity_id) { 302 const std::string& settings_entity_id) {
304 types_to_fetch_.erase(std::make_pair(policy_type, settings_entity_id)); 303 types_to_fetch_.erase(std::make_pair(policy_type, settings_entity_id));
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 if (policy_data.has_settings_entity_id()) 415 if (policy_data.has_settings_entity_id())
417 entity_id = policy_data.settings_entity_id(); 416 entity_id = policy_data.settings_entity_id();
418 std::pair<std::string, std::string> key(type, entity_id); 417 std::pair<std::string, std::string> key(type, entity_id);
419 if (ContainsKey(responses_, key)) { 418 if (ContainsKey(responses_, key)) {
420 LOG(WARNING) << "Duplicate PolicyFetchResponse for type: " 419 LOG(WARNING) << "Duplicate PolicyFetchResponse for type: "
421 << type << ", entity: " << entity_id << ", ignoring"; 420 << type << ", entity: " << entity_id << ", ignoring";
422 continue; 421 continue;
423 } 422 }
424 responses_[key] = new em::PolicyFetchResponse(response); 423 responses_[key] = new em::PolicyFetchResponse(response);
425 } 424 }
426 if (status_provider_)
427 status_provider_->OnSubmittedSuccessfully();
428 state_keys_to_upload_.clear(); 425 state_keys_to_upload_.clear();
429 NotifyPolicyFetched(); 426 NotifyPolicyFetched();
430 } else { 427 } else {
431 NotifyClientError(); 428 NotifyClientError();
432 } 429 }
433 } 430 }
434 431
435 void CloudPolicyClient::OnUnregisterCompleted( 432 void CloudPolicyClient::OnUnregisterCompleted(
436 DeviceManagementStatus status, 433 DeviceManagementStatus status,
437 int net_error, 434 int net_error,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 477
481 void CloudPolicyClient::NotifyRobotAuthCodesFetched() { 478 void CloudPolicyClient::NotifyRobotAuthCodesFetched() {
482 FOR_EACH_OBSERVER(Observer, observers_, OnRobotAuthCodesFetched(this)); 479 FOR_EACH_OBSERVER(Observer, observers_, OnRobotAuthCodesFetched(this));
483 } 480 }
484 481
485 void CloudPolicyClient::NotifyClientError() { 482 void CloudPolicyClient::NotifyClientError() {
486 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this)); 483 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this));
487 } 484 }
488 485
489 } // namespace policy 486 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698