| 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..f222db191d81fa3b119ed3691f9019c15fdee3ff 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::UpdateGcmId(
|
| + const std::string& gcm_id,
|
| + const CloudPolicyClient::StatusCallback& callback) {
|
| + CHECK(is_registered());
|
| +
|
| + scoped_ptr<DeviceManagementRequestJob> request_job(service_->CreateJob(
|
| + DeviceManagementRequestJob::TYPE_GCM_ID_UPDATE, GetRequestContext()));
|
| +
|
| + request_job->SetDMToken(dm_token_);
|
| + request_job->SetClientID(client_id_);
|
| +
|
| + em::GcmIdUpdateRequest* const request =
|
| + request_job->GetRequest()->mutable_gcm_id_update_request();
|
| +
|
| + request->set_gcm_id(gcm_id);
|
| +
|
| + const DeviceManagementRequestJob::Callback job_callback =
|
| + base::Bind(&CloudPolicyClient::OnGcmIdUpdated, 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::OnGcmIdUpdated(
|
| + 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));
|
| }
|
|
|