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

Unified 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: Review feedback. 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 side-by-side diff with in-line comments
Download patch
Index: components/policy/core/common/cloud/cloud_policy_client.cc
diff --git a/components/policy/core/common/cloud/cloud_policy_client.cc b/components/policy/core/common/cloud/cloud_policy_client.cc
index d5f03d1bb8c2b7a3ac55d96dfeb7763de4298b9c..6f4768afc73f61a1e67b79ef146b8e86b677be02 100644
--- a/components/policy/core/common/cloud/cloud_policy_client.cc
+++ b/components/policy/core/common/cloud/cloud_policy_client.cc
@@ -45,8 +45,6 @@ CloudPolicyClient::Observer::~Observer() {}
void CloudPolicyClient::Observer::OnRobotAuthCodesFetched(
CloudPolicyClient* client) {}
-CloudPolicyClient::StatusProvider::~StatusProvider() {}
-
CloudPolicyClient::CloudPolicyClient(
const std::string& machine_id,
const std::string& machine_model,
@@ -186,18 +184,6 @@ void CloudPolicyClient::FetchPolicy() {
}
}
- // Add status data.
- if (status_provider_) {
- if (!status_provider_->GetDeviceStatus(
- request->mutable_device_status_report_request())) {
- request->clear_device_status_report_request();
- }
- if (!status_provider_->GetSessionStatus(
- request->mutable_session_status_report_request())) {
- request->clear_session_status_report_request();
- }
- }
-
// Add device state keys.
if (!state_keys_to_upload_.empty()) {
em::DeviceStateKeyUpdateRequest* key_update_request =
@@ -276,6 +262,36 @@ void CloudPolicyClient::UploadCertificate(
request_job_->Start(job_callback);
}
+void CloudPolicyClient::UploadDeviceStatus(
+ const em::DeviceStatusReportRequest* device_status,
+ const em::SessionStatusReportRequest* session_status,
+ const CloudPolicyClient::StatusCallback& callback) {
+ CHECK(is_registered());
+ // Should pass in at least one type of status.
+ DCHECK(device_status || session_status);
+ request_job_.reset(
+ service_->CreateJob(DeviceManagementRequestJob::TYPE_UPLOAD_STATUS,
+ GetRequestContext()));
+ request_job_->SetDMToken(dm_token_);
+ request_job_->SetClientID(client_id_);
+
+ em::DeviceManagementRequest* request = request_job_->GetRequest();
+ if (device_status)
+ *request->mutable_device_status_report_request() = *device_status;
+ if (session_status)
+ *request->mutable_session_status_report_request() = *session_status;
+
+ DeviceManagementRequestJob::Callback job_callback = base::Bind(
+ &CloudPolicyClient::OnStatusUploadCompleted,
+ base::Unretained(this),
+ callback);
+
+ // TODO(atwilson): Change CloudPolicyClient to support multiple requests in
+ // parallel, so status upload requests don't get cancelled by things like
+ // policy fetches (http://crbug.com/452563).
+ request_job_->Start(job_callback);
+}
+
void CloudPolicyClient::AddObserver(Observer* observer) {
observers_.AddObserver(observer);
}
@@ -284,14 +300,6 @@ void CloudPolicyClient::RemoveObserver(Observer* observer) {
observers_.RemoveObserver(observer);
}
-void CloudPolicyClient::SetStatusProvider(scoped_ptr<StatusProvider> provider) {
- status_provider_ = provider.Pass();
-}
-
-bool CloudPolicyClient::HasStatusProviderForTest() {
- return status_provider_;
-}
-
void CloudPolicyClient::AddPolicyTypeToFetch(
const std::string& policy_type,
const std::string& settings_entity_id) {
@@ -423,8 +431,6 @@ void CloudPolicyClient::OnPolicyFetchCompleted(
}
responses_[key] = new em::PolicyFetchResponse(response);
}
- if (status_provider_)
- status_provider_->OnSubmittedSuccessfully();
state_keys_to_upload_.clear();
NotifyPolicyFetched();
} else {
@@ -470,6 +476,18 @@ void CloudPolicyClient::OnCertificateUploadCompleted(
callback.Run(true);
}
+void CloudPolicyClient::OnStatusUploadCompleted(
+ const CloudPolicyClient::StatusCallback& callback,
+ DeviceManagementStatus status,
+ int net_error,
+ const enterprise_management::DeviceManagementResponse& response) {
+ status_ = status;
+ if (status != DM_STATUS_SUCCESS)
+ NotifyClientError();
+
+ callback.Run(status == DM_STATUS_SUCCESS);
+}
+
void CloudPolicyClient::NotifyPolicyFetched() {
FOR_EACH_OBSERVER(Observer, observers_, OnPolicyFetched(this));
}

Powered by Google App Engine
This is Rietveld 408576698