| 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..2396aab794dd18c60177976bb335326edd3bcfe0 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,20 @@ void CloudPolicyClient::OnRemoteCommandsFetched(
|
| RemoveJob(job);
|
| }
|
|
|
| +void CloudPolicyClient::OnGcmIdMappingUpdated(
|
| + const DeviceManagementRequestJob* job,
|
| + const 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);
|
| + RemoveJob(job);
|
| +}
|
| +
|
| void CloudPolicyClient::NotifyPolicyFetched() {
|
| FOR_EACH_OBSERVER(Observer, observers_, OnPolicyFetched(this));
|
| }
|
|
|