| OLD | NEW |
| 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 <utility> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| 9 #include "base/guid.h" | 11 #include "base/guid.h" |
| 10 #include "base/logging.h" | 12 #include "base/logging.h" |
| 11 #include "base/stl_util.h" | 13 #include "base/stl_util.h" |
| 12 #include "components/policy/core/common/cloud/device_management_service.h" | 14 #include "components/policy/core/common/cloud/device_management_service.h" |
| 13 #include "google_apis/gaia/gaia_constants.h" | 15 #include "google_apis/gaia/gaia_constants.h" |
| 14 #include "google_apis/gaia/gaia_urls.h" | 16 #include "google_apis/gaia/gaia_urls.h" |
| 15 #include "net/url_request/url_request_context_getter.h" | 17 #include "net/url_request/url_request_context_getter.h" |
| 16 | 18 |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 request_job->SetClientID(client_id_); | 257 request_job->SetClientID(client_id_); |
| 256 | 258 |
| 257 em::DeviceManagementRequest* request = request_job->GetRequest(); | 259 em::DeviceManagementRequest* request = request_job->GetRequest(); |
| 258 request->mutable_cert_upload_request()->set_device_certificate( | 260 request->mutable_cert_upload_request()->set_device_certificate( |
| 259 certificate_data); | 261 certificate_data); |
| 260 | 262 |
| 261 const DeviceManagementRequestJob::Callback job_callback = | 263 const DeviceManagementRequestJob::Callback job_callback = |
| 262 base::Bind(&CloudPolicyClient::OnCertificateUploadCompleted, | 264 base::Bind(&CloudPolicyClient::OnCertificateUploadCompleted, |
| 263 base::Unretained(this), request_job.get(), callback); | 265 base::Unretained(this), request_job.get(), callback); |
| 264 | 266 |
| 265 request_jobs_.push_back(request_job.Pass()); | 267 request_jobs_.push_back(std::move(request_job)); |
| 266 request_jobs_.back()->Start(job_callback); | 268 request_jobs_.back()->Start(job_callback); |
| 267 } | 269 } |
| 268 | 270 |
| 269 void CloudPolicyClient::UploadDeviceStatus( | 271 void CloudPolicyClient::UploadDeviceStatus( |
| 270 const em::DeviceStatusReportRequest* device_status, | 272 const em::DeviceStatusReportRequest* device_status, |
| 271 const em::SessionStatusReportRequest* session_status, | 273 const em::SessionStatusReportRequest* session_status, |
| 272 const CloudPolicyClient::StatusCallback& callback) { | 274 const CloudPolicyClient::StatusCallback& callback) { |
| 273 CHECK(is_registered()); | 275 CHECK(is_registered()); |
| 274 // Should pass in at least one type of status. | 276 // Should pass in at least one type of status. |
| 275 DCHECK(device_status || session_status); | 277 DCHECK(device_status || session_status); |
| 276 scoped_ptr<DeviceManagementRequestJob> request_job( | 278 scoped_ptr<DeviceManagementRequestJob> request_job( |
| 277 service_->CreateJob(DeviceManagementRequestJob::TYPE_UPLOAD_STATUS, | 279 service_->CreateJob(DeviceManagementRequestJob::TYPE_UPLOAD_STATUS, |
| 278 GetRequestContext())); | 280 GetRequestContext())); |
| 279 request_job->SetDMToken(dm_token_); | 281 request_job->SetDMToken(dm_token_); |
| 280 request_job->SetClientID(client_id_); | 282 request_job->SetClientID(client_id_); |
| 281 | 283 |
| 282 em::DeviceManagementRequest* request = request_job->GetRequest(); | 284 em::DeviceManagementRequest* request = request_job->GetRequest(); |
| 283 if (device_status) | 285 if (device_status) |
| 284 *request->mutable_device_status_report_request() = *device_status; | 286 *request->mutable_device_status_report_request() = *device_status; |
| 285 if (session_status) | 287 if (session_status) |
| 286 *request->mutable_session_status_report_request() = *session_status; | 288 *request->mutable_session_status_report_request() = *session_status; |
| 287 | 289 |
| 288 const DeviceManagementRequestJob::Callback job_callback = | 290 const DeviceManagementRequestJob::Callback job_callback = |
| 289 base::Bind(&CloudPolicyClient::OnStatusUploadCompleted, | 291 base::Bind(&CloudPolicyClient::OnStatusUploadCompleted, |
| 290 base::Unretained(this), request_job.get(), callback); | 292 base::Unretained(this), request_job.get(), callback); |
| 291 | 293 |
| 292 request_jobs_.push_back(request_job.Pass()); | 294 request_jobs_.push_back(std::move(request_job)); |
| 293 request_jobs_.back()->Start(job_callback); | 295 request_jobs_.back()->Start(job_callback); |
| 294 } | 296 } |
| 295 | 297 |
| 296 void CloudPolicyClient::FetchRemoteCommands( | 298 void CloudPolicyClient::FetchRemoteCommands( |
| 297 scoped_ptr<RemoteCommandJob::UniqueIDType> last_command_id, | 299 scoped_ptr<RemoteCommandJob::UniqueIDType> last_command_id, |
| 298 const std::vector<em::RemoteCommandResult>& command_results, | 300 const std::vector<em::RemoteCommandResult>& command_results, |
| 299 const RemoteCommandCallback& callback) { | 301 const RemoteCommandCallback& callback) { |
| 300 CHECK(is_registered()); | 302 CHECK(is_registered()); |
| 301 scoped_ptr<DeviceManagementRequestJob> request_job(service_->CreateJob( | 303 scoped_ptr<DeviceManagementRequestJob> request_job(service_->CreateJob( |
| 302 DeviceManagementRequestJob::TYPE_REMOTE_COMMANDS, GetRequestContext())); | 304 DeviceManagementRequestJob::TYPE_REMOTE_COMMANDS, GetRequestContext())); |
| 303 | 305 |
| 304 request_job->SetDMToken(dm_token_); | 306 request_job->SetDMToken(dm_token_); |
| 305 request_job->SetClientID(client_id_); | 307 request_job->SetClientID(client_id_); |
| 306 | 308 |
| 307 em::DeviceRemoteCommandRequest* const request = | 309 em::DeviceRemoteCommandRequest* const request = |
| 308 request_job->GetRequest()->mutable_remote_command_request(); | 310 request_job->GetRequest()->mutable_remote_command_request(); |
| 309 | 311 |
| 310 if (last_command_id) | 312 if (last_command_id) |
| 311 request->set_last_command_unique_id(*last_command_id); | 313 request->set_last_command_unique_id(*last_command_id); |
| 312 | 314 |
| 313 for (const auto& command_result : command_results) | 315 for (const auto& command_result : command_results) |
| 314 *request->add_command_results() = command_result; | 316 *request->add_command_results() = command_result; |
| 315 | 317 |
| 316 const DeviceManagementRequestJob::Callback job_callback = | 318 const DeviceManagementRequestJob::Callback job_callback = |
| 317 base::Bind(&CloudPolicyClient::OnRemoteCommandsFetched, | 319 base::Bind(&CloudPolicyClient::OnRemoteCommandsFetched, |
| 318 base::Unretained(this), request_job.get(), callback); | 320 base::Unretained(this), request_job.get(), callback); |
| 319 | 321 |
| 320 request_jobs_.push_back(request_job.Pass()); | 322 request_jobs_.push_back(std::move(request_job)); |
| 321 request_jobs_.back()->Start(job_callback); | 323 request_jobs_.back()->Start(job_callback); |
| 322 } | 324 } |
| 323 | 325 |
| 324 void CloudPolicyClient::GetDeviceAttributeUpdatePermission( | 326 void CloudPolicyClient::GetDeviceAttributeUpdatePermission( |
| 325 const std::string &auth_token, | 327 const std::string &auth_token, |
| 326 const CloudPolicyClient::StatusCallback& callback) { | 328 const CloudPolicyClient::StatusCallback& callback) { |
| 327 CHECK(is_registered()); | 329 CHECK(is_registered()); |
| 328 DCHECK(!auth_token.empty()); | 330 DCHECK(!auth_token.empty()); |
| 329 | 331 |
| 330 scoped_ptr<DeviceManagementRequestJob> request_job( | 332 scoped_ptr<DeviceManagementRequestJob> request_job( |
| 331 service_->CreateJob( | 333 service_->CreateJob( |
| 332 DeviceManagementRequestJob::TYPE_ATTRIBUTE_UPDATE_PERMISSION, | 334 DeviceManagementRequestJob::TYPE_ATTRIBUTE_UPDATE_PERMISSION, |
| 333 GetRequestContext())); | 335 GetRequestContext())); |
| 334 | 336 |
| 335 request_job->SetOAuthToken(auth_token); | 337 request_job->SetOAuthToken(auth_token); |
| 336 request_job->SetClientID(client_id_); | 338 request_job->SetClientID(client_id_); |
| 337 | 339 |
| 338 request_job->GetRequest()-> | 340 request_job->GetRequest()-> |
| 339 mutable_device_attribute_update_permission_request(); | 341 mutable_device_attribute_update_permission_request(); |
| 340 | 342 |
| 341 const DeviceManagementRequestJob::Callback job_callback = | 343 const DeviceManagementRequestJob::Callback job_callback = |
| 342 base::Bind(&CloudPolicyClient::OnDeviceAttributeUpdatePermissionCompleted, | 344 base::Bind(&CloudPolicyClient::OnDeviceAttributeUpdatePermissionCompleted, |
| 343 base::Unretained(this), request_job.get(), callback); | 345 base::Unretained(this), request_job.get(), callback); |
| 344 | 346 |
| 345 request_jobs_.push_back(request_job.Pass()); | 347 request_jobs_.push_back(std::move(request_job)); |
| 346 request_jobs_.back()->Start(job_callback); | 348 request_jobs_.back()->Start(job_callback); |
| 347 } | 349 } |
| 348 | 350 |
| 349 void CloudPolicyClient::UpdateDeviceAttributes( | 351 void CloudPolicyClient::UpdateDeviceAttributes( |
| 350 const std::string& auth_token, | 352 const std::string& auth_token, |
| 351 const std::string& asset_id, | 353 const std::string& asset_id, |
| 352 const std::string& location, | 354 const std::string& location, |
| 353 const CloudPolicyClient::StatusCallback& callback) { | 355 const CloudPolicyClient::StatusCallback& callback) { |
| 354 CHECK(is_registered()); | 356 CHECK(is_registered()); |
| 355 DCHECK(!auth_token.empty()); | 357 DCHECK(!auth_token.empty()); |
| 356 | 358 |
| 357 scoped_ptr<DeviceManagementRequestJob> request_job( | 359 scoped_ptr<DeviceManagementRequestJob> request_job( |
| 358 service_->CreateJob( | 360 service_->CreateJob( |
| 359 DeviceManagementRequestJob::TYPE_ATTRIBUTE_UPDATE, | 361 DeviceManagementRequestJob::TYPE_ATTRIBUTE_UPDATE, |
| 360 GetRequestContext())); | 362 GetRequestContext())); |
| 361 | 363 |
| 362 request_job->SetOAuthToken(auth_token); | 364 request_job->SetOAuthToken(auth_token); |
| 363 request_job->SetClientID(client_id_); | 365 request_job->SetClientID(client_id_); |
| 364 | 366 |
| 365 em::DeviceAttributeUpdateRequest* request = | 367 em::DeviceAttributeUpdateRequest* request = |
| 366 request_job->GetRequest()->mutable_device_attribute_update_request(); | 368 request_job->GetRequest()->mutable_device_attribute_update_request(); |
| 367 | 369 |
| 368 request->set_asset_id(asset_id); | 370 request->set_asset_id(asset_id); |
| 369 request->set_location(location); | 371 request->set_location(location); |
| 370 | 372 |
| 371 const DeviceManagementRequestJob::Callback job_callback = | 373 const DeviceManagementRequestJob::Callback job_callback = |
| 372 base::Bind(&CloudPolicyClient::OnDeviceAttributeUpdated, | 374 base::Bind(&CloudPolicyClient::OnDeviceAttributeUpdated, |
| 373 base::Unretained(this), request_job.get(), callback); | 375 base::Unretained(this), request_job.get(), callback); |
| 374 | 376 |
| 375 request_jobs_.push_back(request_job.Pass()); | 377 request_jobs_.push_back(std::move(request_job)); |
| 376 request_jobs_.back()->Start(job_callback); | 378 request_jobs_.back()->Start(job_callback); |
| 377 } | 379 } |
| 378 | 380 |
| 379 void CloudPolicyClient::UpdateGcmId( | 381 void CloudPolicyClient::UpdateGcmId( |
| 380 const std::string& gcm_id, | 382 const std::string& gcm_id, |
| 381 const CloudPolicyClient::StatusCallback& callback) { | 383 const CloudPolicyClient::StatusCallback& callback) { |
| 382 CHECK(is_registered()); | 384 CHECK(is_registered()); |
| 383 | 385 |
| 384 scoped_ptr<DeviceManagementRequestJob> request_job(service_->CreateJob( | 386 scoped_ptr<DeviceManagementRequestJob> request_job(service_->CreateJob( |
| 385 DeviceManagementRequestJob::TYPE_GCM_ID_UPDATE, GetRequestContext())); | 387 DeviceManagementRequestJob::TYPE_GCM_ID_UPDATE, GetRequestContext())); |
| 386 | 388 |
| 387 request_job->SetDMToken(dm_token_); | 389 request_job->SetDMToken(dm_token_); |
| 388 request_job->SetClientID(client_id_); | 390 request_job->SetClientID(client_id_); |
| 389 | 391 |
| 390 em::GcmIdUpdateRequest* const request = | 392 em::GcmIdUpdateRequest* const request = |
| 391 request_job->GetRequest()->mutable_gcm_id_update_request(); | 393 request_job->GetRequest()->mutable_gcm_id_update_request(); |
| 392 | 394 |
| 393 request->set_gcm_id(gcm_id); | 395 request->set_gcm_id(gcm_id); |
| 394 | 396 |
| 395 const DeviceManagementRequestJob::Callback job_callback = | 397 const DeviceManagementRequestJob::Callback job_callback = |
| 396 base::Bind(&CloudPolicyClient::OnGcmIdUpdated, base::Unretained(this), | 398 base::Bind(&CloudPolicyClient::OnGcmIdUpdated, base::Unretained(this), |
| 397 request_job.get(), callback); | 399 request_job.get(), callback); |
| 398 | 400 |
| 399 request_jobs_.push_back(request_job.Pass()); | 401 request_jobs_.push_back(std::move(request_job)); |
| 400 request_jobs_.back()->Start(job_callback); | 402 request_jobs_.back()->Start(job_callback); |
| 401 } | 403 } |
| 402 | 404 |
| 403 void CloudPolicyClient::AddObserver(Observer* observer) { | 405 void CloudPolicyClient::AddObserver(Observer* observer) { |
| 404 observers_.AddObserver(observer); | 406 observers_.AddObserver(observer); |
| 405 } | 407 } |
| 406 | 408 |
| 407 void CloudPolicyClient::RemoveObserver(Observer* observer) { | 409 void CloudPolicyClient::RemoveObserver(Observer* observer) { |
| 408 observers_.RemoveObserver(observer); | 410 observers_.RemoveObserver(observer); |
| 409 } | 411 } |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 | 714 |
| 713 void CloudPolicyClient::NotifyRobotAuthCodesFetched() { | 715 void CloudPolicyClient::NotifyRobotAuthCodesFetched() { |
| 714 FOR_EACH_OBSERVER(Observer, observers_, OnRobotAuthCodesFetched(this)); | 716 FOR_EACH_OBSERVER(Observer, observers_, OnRobotAuthCodesFetched(this)); |
| 715 } | 717 } |
| 716 | 718 |
| 717 void CloudPolicyClient::NotifyClientError() { | 719 void CloudPolicyClient::NotifyClientError() { |
| 718 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this)); | 720 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this)); |
| 719 } | 721 } |
| 720 | 722 |
| 721 } // namespace policy | 723 } // namespace policy |
| OLD | NEW |