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 e2060fa0a67871344d3d8b6c4753edb1dcbd7508..396402c5d7bf95b827ac5e621d960ef6ba823d9b 100644 |
--- a/components/policy/core/common/cloud/cloud_policy_client.cc |
+++ b/components/policy/core/common/cloud/cloud_policy_client.cc |
@@ -377,6 +377,30 @@ void CloudPolicyClient::UpdateDeviceAttributes( |
request_jobs_.back()->Start(job_callback); |
} |
+void CloudPolicyClient::UpdateGcmIdMapping( |
+ const std::string& gcm_id, |
+ const CloudPolicyClient::StatusCallback& callback) { |
+ CHECK(is_registered()); |
+ |
+ scoped_ptr<DeviceManagementRequestJob> request_job(service_->CreateJob( |
+ DeviceManagementRequestJob::TYPE_GCM_ID_MAPPING, GetRequestContext())); |
+ |
+ request_job->SetDMToken(dm_token_); |
+ request_job->SetClientID(client_id_); |
+ |
+ em::GcmIdMappingRequest* const request = |
+ request_job->GetRequest()->mutable_gcm_id_mapping_request(); |
+ |
+ request->set_gcm_id(gcm_id); |
+ |
+ const DeviceManagementRequestJob::Callback job_callback = |
+ base::Bind(&CloudPolicyClient::OnGcmIdMappingUpdated, |
+ base::Unretained(this), request_job.get(), callback); |
+ |
+ request_jobs_.push_back(request_job.Pass()); |
+ request_jobs_.back()->Start(job_callback); |
+} |
+ |
void CloudPolicyClient::AddObserver(Observer* observer) { |
observers_.AddObserver(observer); |
} |
@@ -665,6 +689,16 @@ void CloudPolicyClient::OnRemoteCommandsFetched( |
RemoveJob(job); |
} |
+void CloudPolicyClient::OnGcmIdMappingUpdated( |
+ const DeviceManagementRequestJob* job, |
+ const StatusCallback& callback, |
+ DeviceManagementStatus status, |
+ int net_error, |
+ const enterprise_management::DeviceManagementResponse& response) { |
+ callback.Run(status == DM_STATUS_SUCCESS); |
Andrew T Wilson (Slow)
2015/08/03 13:52:26
Should we call NotifyClientError() and update stat
binjin
2015/08/03 17:54:25
I thought it's not essential. Both onClientError()
|
+ RemoveJob(job); |
+} |
+ |
void CloudPolicyClient::NotifyPolicyFetched() { |
FOR_EACH_OBSERVER(Observer, observers_, OnPolicyFetched(this)); |
} |