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 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 10 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
(...skipping 16 matching lines...) Expand all Loading... |
27 namespace policy { | 27 namespace policy { |
28 | 28 |
29 // Name constants for URL query parameters. | 29 // Name constants for URL query parameters. |
30 const char DeviceManagementBackendImpl::kParamAgent[] = "agent"; | 30 const char DeviceManagementBackendImpl::kParamAgent[] = "agent"; |
31 const char DeviceManagementBackendImpl::kParamAppType[] = "apptype"; | 31 const char DeviceManagementBackendImpl::kParamAppType[] = "apptype"; |
32 const char DeviceManagementBackendImpl::kParamDeviceID[] = "deviceid"; | 32 const char DeviceManagementBackendImpl::kParamDeviceID[] = "deviceid"; |
33 const char DeviceManagementBackendImpl::kParamDeviceType[] = "devicetype"; | 33 const char DeviceManagementBackendImpl::kParamDeviceType[] = "devicetype"; |
34 const char DeviceManagementBackendImpl::kParamOAuthToken[] = "oauth_token"; | 34 const char DeviceManagementBackendImpl::kParamOAuthToken[] = "oauth_token"; |
35 const char DeviceManagementBackendImpl::kParamPlatform[] = "platform"; | 35 const char DeviceManagementBackendImpl::kParamPlatform[] = "platform"; |
36 const char DeviceManagementBackendImpl::kParamRequest[] = "request"; | 36 const char DeviceManagementBackendImpl::kParamRequest[] = "request"; |
37 const char DeviceManagementBackendImpl::kParamUserAffiliation[] = | |
38 "user_affiliation"; | |
39 | 37 |
40 // String constants for the device and app type we report to the server. | 38 // String constants for the device and app type we report to the server. |
41 const char DeviceManagementBackendImpl::kValueAppType[] = "Chrome"; | 39 const char DeviceManagementBackendImpl::kValueAppType[] = "Chrome"; |
42 const char DeviceManagementBackendImpl::kValueDeviceType[] = "2"; | 40 const char DeviceManagementBackendImpl::kValueDeviceType[] = "2"; |
43 const char DeviceManagementBackendImpl::kValueRequestPolicy[] = "policy"; | 41 const char DeviceManagementBackendImpl::kValueRequestPolicy[] = "policy"; |
44 const char DeviceManagementBackendImpl::kValueRequestRegister[] = "register"; | 42 const char DeviceManagementBackendImpl::kValueRequestRegister[] = "register"; |
45 const char DeviceManagementBackendImpl::kValueRequestUnregister[] = | 43 const char DeviceManagementBackendImpl::kValueRequestUnregister[] = |
46 "unregister"; | 44 "unregister"; |
47 const char DeviceManagementBackendImpl::kValueUserAffiliationManaged[] = | |
48 "managed"; | |
49 const char DeviceManagementBackendImpl::kValueUserAffiliationNone[] = "none"; | |
50 | 45 |
51 namespace { | 46 namespace { |
52 | 47 |
53 const char kValueAgent[] = "%s %s(%s)"; | 48 const char kValueAgent[] = "%s %s(%s)"; |
54 const char kValuePlatform[] = "%s|%s|%s"; | 49 const char kValuePlatform[] = "%s|%s|%s"; |
55 | 50 |
56 const char kPostContentType[] = "application/protobuf"; | 51 const char kPostContentType[] = "application/protobuf"; |
57 | 52 |
58 const char kServiceTokenAuthHeader[] = "Authorization: GoogleLogin auth="; | 53 const char kServiceTokenAuthHeader[] = "Authorization: GoogleLogin auth="; |
59 const char kDMTokenAuthHeader[] = "Authorization: GoogleDMToken token="; | 54 const char kDMTokenAuthHeader[] = "Authorization: GoogleDMToken token="; |
60 | 55 |
61 // HTTP Error Codes of the DM Server with their concrete meinings in the context | 56 // HTTP Error Codes of the DM Server with their concrete meinings in the context |
62 // of the DM Server communication. | 57 // of the DM Server communication. |
63 const int kSuccess = 200; | 58 const int kSuccess = 200; |
64 const int kInvalidArgument = 400; | 59 const int kInvalidArgument = 400; |
65 const int kInvalidAuthCookieOrDMToken = 401; | 60 const int kInvalidAuthCookieOrDMToken = 401; |
66 const int kDeviceManagementNotAllowed = 403; | 61 const int kDeviceManagementNotAllowed = 403; |
67 const int kInvalidURL = 404; // This error is not coming from the GFE. | 62 const int kInvalidURL = 404; // This error is not coming from the GFE. |
68 const int kDeviceNotFound = 410; | 63 const int kDeviceNotFound = 410; |
69 const int kPendingApproval = 412; | 64 const int kPendingApproval = 412; |
70 const int kInternalServerError = 500; | 65 const int kInternalServerError = 500; |
71 const int kServiceUnavailable = 503; | 66 const int kServiceUnavailable = 503; |
72 const int kPolicyNotFound = 902; // This error is not sent as HTTP status code. | 67 const int kPolicyNotFound = 902; // This error is not sent as HTTP status code. |
73 | 68 |
74 // TODO(pastarmovj): Legacy error codes are here for comaptibility only. They | 69 // TODO(pastarmovj): Legacy error codes are here for comaptibility only. They |
75 // should be removed once the DM Server has been updated. | 70 // should be removed once the DM Server has been updated. |
76 const int kPendingApprovalLegacy = 491; | 71 const int kPendingApprovalLegacy = 491; |
77 const int kDeviceNotFoundLegacy = 901; | 72 const int kDeviceNotFoundLegacy = 901; |
78 | 73 |
| 74 |
79 #if defined(OS_CHROMEOS) | 75 #if defined(OS_CHROMEOS) |
80 // Machine info keys. | 76 // Machine info keys. |
81 const char kMachineInfoHWClass[] = "hardware_class"; | 77 const char kMachineInfoHWClass[] = "hardware_class"; |
82 const char kMachineInfoBoard[] = "CHROMEOS_RELEASE_BOARD"; | 78 const char kMachineInfoBoard[] = "CHROMEOS_RELEASE_BOARD"; |
83 #endif | 79 #endif |
84 | 80 |
85 } // namespace | 81 } // namespace |
86 | 82 |
87 // Helper class for URL query parameter encoding/decoding. | 83 // Helper class for URL query parameter encoding/decoding. |
88 class URLQueryParameters { | 84 class URLQueryParameters { |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 DISALLOW_COPY_AND_ASSIGN(DeviceManagementUnregisterJob); | 377 DISALLOW_COPY_AND_ASSIGN(DeviceManagementUnregisterJob); |
382 }; | 378 }; |
383 | 379 |
384 // Handles policy request jobs. | 380 // Handles policy request jobs. |
385 class DeviceManagementPolicyJob : public DeviceManagementJobBase { | 381 class DeviceManagementPolicyJob : public DeviceManagementJobBase { |
386 public: | 382 public: |
387 DeviceManagementPolicyJob( | 383 DeviceManagementPolicyJob( |
388 DeviceManagementBackendImpl* backend_impl, | 384 DeviceManagementBackendImpl* backend_impl, |
389 const std::string& device_management_token, | 385 const std::string& device_management_token, |
390 const std::string& device_id, | 386 const std::string& device_id, |
391 const std::string& user_affiliation, | |
392 const em::DevicePolicyRequest& request, | 387 const em::DevicePolicyRequest& request, |
393 DeviceManagementBackend::DevicePolicyResponseDelegate* delegate) | 388 DeviceManagementBackend::DevicePolicyResponseDelegate* delegate) |
394 : DeviceManagementJobBase( | 389 : DeviceManagementJobBase( |
395 backend_impl, | 390 backend_impl, |
396 DeviceManagementBackendImpl::kValueRequestPolicy, | 391 DeviceManagementBackendImpl::kValueRequestPolicy, |
397 device_id), | 392 device_id), |
398 delegate_(delegate) { | 393 delegate_(delegate) { |
399 SetDeviceManagementToken(device_management_token); | 394 SetDeviceManagementToken(device_management_token); |
400 SetQueryParam(DeviceManagementBackendImpl::kParamUserAffiliation, | |
401 user_affiliation); | |
402 em::DeviceManagementRequest request_wrapper; | 395 em::DeviceManagementRequest request_wrapper; |
403 request_wrapper.mutable_policy_request()->CopyFrom(request); | 396 request_wrapper.mutable_policy_request()->CopyFrom(request); |
404 SetPayload(request_wrapper); | 397 SetPayload(request_wrapper); |
405 } | 398 } |
406 virtual ~DeviceManagementPolicyJob() {} | 399 virtual ~DeviceManagementPolicyJob() {} |
407 | 400 |
408 private: | 401 private: |
409 // DeviceManagementJobBase overrides. | 402 // DeviceManagementJobBase overrides. |
410 virtual void OnError(DeviceManagementBackend::ErrorCode error) { | 403 virtual void OnError(DeviceManagementBackend::ErrorCode error) { |
411 MetricPolicy sample; | 404 MetricPolicy sample; |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 const std::string& device_id, | 531 const std::string& device_id, |
539 const em::DeviceUnregisterRequest& request, | 532 const em::DeviceUnregisterRequest& request, |
540 DeviceUnregisterResponseDelegate* delegate) { | 533 DeviceUnregisterResponseDelegate* delegate) { |
541 AddJob(new DeviceManagementUnregisterJob(this, device_management_token, | 534 AddJob(new DeviceManagementUnregisterJob(this, device_management_token, |
542 device_id, request, delegate)); | 535 device_id, request, delegate)); |
543 } | 536 } |
544 | 537 |
545 void DeviceManagementBackendImpl::ProcessPolicyRequest( | 538 void DeviceManagementBackendImpl::ProcessPolicyRequest( |
546 const std::string& device_management_token, | 539 const std::string& device_management_token, |
547 const std::string& device_id, | 540 const std::string& device_id, |
548 CloudPolicyDataStore::UserAffiliation affiliation, | |
549 const em::DevicePolicyRequest& request, | 541 const em::DevicePolicyRequest& request, |
550 DevicePolicyResponseDelegate* delegate) { | 542 DevicePolicyResponseDelegate* delegate) { |
551 UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyFetchRequested, | 543 UMA_HISTOGRAM_ENUMERATION(kMetricPolicy, kMetricPolicyFetchRequested, |
552 kMetricPolicySize); | 544 kMetricPolicySize); |
553 AddJob(new DeviceManagementPolicyJob(this, device_management_token, device_id, | 545 AddJob(new DeviceManagementPolicyJob(this, device_management_token, device_id, |
554 UserAffiliationToString(affiliation), | |
555 request, delegate)); | 546 request, delegate)); |
556 } | 547 } |
557 | 548 |
558 // static | |
559 const char* DeviceManagementBackendImpl::UserAffiliationToString( | |
560 CloudPolicyDataStore::UserAffiliation affiliation) { | |
561 switch (affiliation) { | |
562 case CloudPolicyDataStore::USER_AFFILIATION_MANAGED: | |
563 return kValueUserAffiliationManaged; | |
564 case CloudPolicyDataStore::USER_AFFILIATION_NONE: | |
565 return kValueUserAffiliationNone; | |
566 } | |
567 NOTREACHED(); | |
568 return kValueUserAffiliationNone; | |
569 } | |
570 | |
571 } // namespace policy | 549 } // namespace policy |
OLD | NEW |