OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/policy/device_management_backend_impl.h" | 5 #include "chrome/browser/policy/device_management_backend_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
11 #include "net/base/escape.h" | 11 #include "net/base/escape.h" |
12 #include "net/url_request/url_request_status.h" | 12 #include "net/url_request/url_request_status.h" |
13 #include "chrome/browser/policy/device_management_service.h" | 13 #include "chrome/browser/policy/device_management_service.h" |
14 #include "chrome/common/chrome_version_info.h" | 14 #include "chrome/common/chrome_version_info.h" |
15 | 15 |
16 namespace policy { | 16 namespace policy { |
17 | 17 |
18 // Name constants for URL query parameters. | 18 // Name constants for URL query parameters. |
19 const char DeviceManagementBackendImpl::kParamRequest[] = "request"; | 19 const char DeviceManagementBackendImpl::kParamRequest[] = "request"; |
20 const char DeviceManagementBackendImpl::kParamDeviceType[] = "devicetype"; | 20 const char DeviceManagementBackendImpl::kParamDeviceType[] = "devicetype"; |
21 const char DeviceManagementBackendImpl::kParamAppType[] = "apptype"; | 21 const char DeviceManagementBackendImpl::kParamAppType[] = "apptype"; |
22 const char DeviceManagementBackendImpl::kParamDeviceID[] = "deviceid"; | 22 const char DeviceManagementBackendImpl::kParamDeviceID[] = "deviceid"; |
23 const char DeviceManagementBackendImpl::kParamAgent[] = "agent"; | 23 const char DeviceManagementBackendImpl::kParamAgent[] = "agent"; |
24 | 24 |
25 // String constants for the device and app type we report to the server. | 25 // String constants for the device and app type we report to the server. |
26 const char DeviceManagementBackendImpl::kValueRequestRegister[] = "register"; | 26 const char DeviceManagementBackendImpl::kValueRequestRegister[] = "register"; |
27 const char DeviceManagementBackendImpl::kValueRequestUnregister[] = | 27 const char DeviceManagementBackendImpl::kValueRequestUnregister[] = |
28 "unregister"; | 28 "unregister"; |
29 const char DeviceManagementBackendImpl::kValueRequestPolicy[] = "policy"; | 29 const char DeviceManagementBackendImpl::kValueRequestPolicy[] = "policy"; |
30 const char DeviceManagementBackendImpl::kValueRequestCloudPolicy[] = | 30 const char DeviceManagementBackendImpl::kValueDeviceType[] = "2"; |
31 "cloud_policy"; | |
32 const char DeviceManagementBackendImpl::kValueDeviceType[] = "Chrome OS"; | |
33 const char DeviceManagementBackendImpl::kValueAppType[] = "Chrome"; | 31 const char DeviceManagementBackendImpl::kValueAppType[] = "Chrome"; |
34 | 32 |
35 namespace { | 33 namespace { |
36 | 34 |
37 const char kValueAgent[] = "%s enterprise management client version %s (%s)"; | 35 const char kValueAgent[] = "%s enterprise management client %s (%s)"; |
38 | 36 |
39 const char kPostContentType[] = "application/protobuf"; | 37 const char kPostContentType[] = "application/protobuf"; |
40 | 38 |
41 const char kServiceTokenAuthHeader[] = "Authorization: GoogleLogin auth="; | 39 const char kServiceTokenAuthHeader[] = "Authorization: GoogleLogin auth="; |
42 const char kDMTokenAuthHeader[] = "Authorization: GoogleDMToken token="; | 40 const char kDMTokenAuthHeader[] = "Authorization: GoogleDMToken token="; |
43 | 41 |
44 } // namespace | 42 } // namespace |
45 | 43 |
46 // Helper class for URL query parameter encoding/decoding. | 44 // Helper class for URL query parameter encoding/decoding. |
47 class URLQueryParameters { | 45 class URLQueryParameters { |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 } | 323 } |
326 virtual void OnResponse(const em::DeviceManagementResponse& response) { | 324 virtual void OnResponse(const em::DeviceManagementResponse& response) { |
327 delegate_->HandlePolicyResponse(response.policy_response()); | 325 delegate_->HandlePolicyResponse(response.policy_response()); |
328 } | 326 } |
329 | 327 |
330 DeviceManagementBackend::DevicePolicyResponseDelegate* delegate_; | 328 DeviceManagementBackend::DevicePolicyResponseDelegate* delegate_; |
331 | 329 |
332 DISALLOW_COPY_AND_ASSIGN(DeviceManagementPolicyJob); | 330 DISALLOW_COPY_AND_ASSIGN(DeviceManagementPolicyJob); |
333 }; | 331 }; |
334 | 332 |
335 // Handles cloud policy request jobs. | |
336 class CloudPolicyJob : public DeviceManagementJobBase { | |
337 public: | |
338 CloudPolicyJob( | |
339 DeviceManagementBackendImpl* backend_impl, | |
340 const std::string& device_management_token, | |
341 const std::string& device_id, | |
342 const em::CloudPolicyRequest& request, | |
343 DeviceManagementBackend::DevicePolicyResponseDelegate* delegate) | |
344 : DeviceManagementJobBase( | |
345 backend_impl, | |
346 DeviceManagementBackendImpl::kValueRequestCloudPolicy, | |
347 device_id), | |
348 delegate_(delegate) { | |
349 SetDeviceManagementToken(device_management_token); | |
350 em::DeviceManagementRequest request_wrapper; | |
351 request_wrapper.mutable_cloud_policy_request()->CopyFrom(request); | |
352 SetPayload(request_wrapper); | |
353 } | |
354 virtual ~CloudPolicyJob() {} | |
355 | |
356 private: | |
357 // DeviceManagementJobBase overrides. | |
358 virtual void OnError(DeviceManagementBackend::ErrorCode error) { | |
359 delegate_->OnError(error); | |
360 } | |
361 virtual void OnResponse(const em::DeviceManagementResponse& response) { | |
362 delegate_->HandleCloudPolicyResponse(response.cloud_policy_response()); | |
363 } | |
364 | |
365 DeviceManagementBackend::DevicePolicyResponseDelegate* delegate_; | |
366 | |
367 DISALLOW_COPY_AND_ASSIGN(CloudPolicyJob); | |
368 }; | |
369 | |
370 DeviceManagementBackendImpl::DeviceManagementBackendImpl( | 333 DeviceManagementBackendImpl::DeviceManagementBackendImpl( |
371 DeviceManagementService* service) | 334 DeviceManagementService* service) |
372 : service_(service) { | 335 : service_(service) { |
373 } | 336 } |
374 | 337 |
375 DeviceManagementBackendImpl::~DeviceManagementBackendImpl() { | 338 DeviceManagementBackendImpl::~DeviceManagementBackendImpl() { |
376 // Swap to a helper, so we don't interfere with the unregistration on delete. | 339 // Swap to a helper, so we don't interfere with the unregistration on delete. |
377 JobSet to_be_deleted; | 340 JobSet to_be_deleted; |
378 to_be_deleted.swap(pending_jobs_); | 341 to_be_deleted.swap(pending_jobs_); |
379 for (JobSet::iterator job(to_be_deleted.begin()); | 342 for (JobSet::iterator job(to_be_deleted.begin()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 | 384 |
422 void DeviceManagementBackendImpl::ProcessPolicyRequest( | 385 void DeviceManagementBackendImpl::ProcessPolicyRequest( |
423 const std::string& device_management_token, | 386 const std::string& device_management_token, |
424 const std::string& device_id, | 387 const std::string& device_id, |
425 const em::DevicePolicyRequest& request, | 388 const em::DevicePolicyRequest& request, |
426 DevicePolicyResponseDelegate* delegate) { | 389 DevicePolicyResponseDelegate* delegate) { |
427 AddJob(new DeviceManagementPolicyJob(this, device_management_token, device_id, | 390 AddJob(new DeviceManagementPolicyJob(this, device_management_token, device_id, |
428 request, delegate)); | 391 request, delegate)); |
429 } | 392 } |
430 | 393 |
431 void DeviceManagementBackendImpl::ProcessCloudPolicyRequest( | |
432 const std::string& device_management_token, | |
433 const std::string& device_id, | |
434 const em::CloudPolicyRequest& request, | |
435 DevicePolicyResponseDelegate* delegate) { | |
436 AddJob(new CloudPolicyJob(this, device_management_token, device_id, | |
437 request, delegate)); | |
438 } | |
439 | |
440 } // namespace policy | 394 } // namespace policy |
OLD | NEW |