OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CHROME_BROWSER_POLICY_DEVICE_CLOUD_POLICY_MANAGER_CHROMEOS_H_ | |
6 #define CHROME_BROWSER_POLICY_DEVICE_CLOUD_POLICY_MANAGER_CHROMEOS_H_ | |
7 | |
8 #include <bitset> | |
9 #include <string> | |
10 | |
11 #include "base/basictypes.h" | |
12 #include "base/callback.h" | |
13 #include "base/compiler_specific.h" | |
14 #include "base/memory/scoped_ptr.h" | |
15 #include "chrome/browser/policy/cloud_policy_client.h" | |
16 #include "chrome/browser/policy/cloud_policy_manager.h" | |
17 #include "chrome/browser/policy/cloud_policy_store.h" | |
18 #include "chrome/browser/policy/enrollment_status_chromeos.h" | |
19 | |
20 class PrefService; | |
21 | |
22 namespace policy { | |
23 | |
24 class DeviceCloudPolicyStoreChromeOS; | |
25 class DeviceManagementService; | |
26 class EnrollmentHandlerChromeOS; | |
27 class EnterpriseInstallAttributes; | |
28 | |
29 // CloudPolicyManager specialization for device policy on Chrome OS. The most | |
30 // significant addition is support for device enrollment. | |
31 class DeviceCloudPolicyManagerChromeOS : public CloudPolicyManager { | |
32 public: | |
33 typedef std::bitset<32> AllowedDeviceModes; | |
34 typedef base::Callback<void(EnrollmentStatus)> EnrollmentCallback; | |
35 | |
36 DeviceCloudPolicyManagerChromeOS( | |
37 scoped_ptr<DeviceCloudPolicyStoreChromeOS> store, | |
38 EnterpriseInstallAttributes* install_attributes); | |
39 virtual ~DeviceCloudPolicyManagerChromeOS(); | |
40 | |
41 // Establishes the connection to the cloud, updating policy as necessary. | |
42 void Connect( | |
43 PrefService* local_state, | |
44 DeviceManagementService* device_management_service, | |
45 scoped_ptr<CloudPolicyClient::StatusProvider> device_status_provider); | |
46 | |
47 // Starts enrollment or re-enrollment. Once the enrollment process completes, | |
48 // |callback| is invoked and gets passed the status of the operation. | |
49 // |allowed_modes| specifies acceptable DEVICE_MODE_* constants for | |
50 // enrollment. | |
51 void StartEnrollment(const std::string& auth_token, | |
52 bool is_auto_enrollment, | |
53 const AllowedDeviceModes& allowed_modes, | |
54 const EnrollmentCallback& callback); | |
55 | |
56 // Cancels a pending enrollment operation, if any. | |
57 void CancelEnrollment(); | |
58 | |
59 // CloudPolicyStore::Observer: | |
60 virtual void OnStoreLoaded(CloudPolicyStore* store) OVERRIDE; | |
61 | |
62 // Returns the device serial number, or an empty string if not available. | |
63 static std::string GetMachineID(); | |
64 | |
65 // Returns the machine model, or an empty string if not available. | |
66 static std::string GetMachineModel(); | |
67 | |
68 private: | |
69 // Creates a new CloudPolicyClient. | |
70 scoped_ptr<CloudPolicyClient> CreateClient(); | |
71 | |
72 // Starts policy refreshes if |store_| indicates a managed device and the | |
73 // necessary dependencies have been provided via Initialize(). | |
74 void StartIfManaged(); | |
75 | |
76 // Handles completion signaled by |enrollment_handler_|. | |
77 void EnrollmentCompleted(const EnrollmentCallback& callback, | |
78 EnrollmentStatus status); | |
79 | |
80 // Points to the same object as the base CloudPolicyManager::store(), but with | |
81 // actual device policy specific type. | |
82 scoped_ptr<DeviceCloudPolicyStoreChromeOS> device_store_; | |
83 EnterpriseInstallAttributes* install_attributes_; | |
84 | |
85 DeviceManagementService* device_management_service_; | |
86 scoped_ptr<CloudPolicyClient::StatusProvider> device_status_provider_; | |
87 | |
88 // PrefService instance to read the policy refresh rate from. | |
89 PrefService* local_state_; | |
90 | |
91 // Non-null if there is an enrollment operation pending. | |
92 scoped_ptr<EnrollmentHandlerChromeOS> enrollment_handler_; | |
93 | |
94 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyManagerChromeOS); | |
95 }; | |
96 | |
97 } // namespace policy | |
98 | |
99 #endif // CHROME_BROWSER_POLICY_DEVICE_CLOUD_POLICY_MANAGER_CHROMEOS_H_ | |
OLD | NEW |