Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: chrome/browser/policy/browser_policy_connector.h

Issue 11946017: Remove old cloud policy code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address nits. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #ifndef CHROME_BROWSER_POLICY_BROWSER_POLICY_CONNECTOR_H_ 5 #ifndef CHROME_BROWSER_POLICY_BROWSER_POLICY_CONNECTOR_H_
6 #define CHROME_BROWSER_POLICY_BROWSER_POLICY_CONNECTOR_H_ 6 #define CHROME_BROWSER_POLICY_BROWSER_POLICY_CONNECTOR_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "chrome/browser/policy/cloud_policy_constants.h" 13 #include "chrome/browser/policy/cloud_policy_constants.h"
14 #include "chrome/browser/policy/configuration_policy_handler_list.h" 14 #include "chrome/browser/policy/configuration_policy_handler_list.h"
15 #include "chrome/browser/policy/enterprise_install_attributes.h"
16 #include "chrome/browser/policy/proxy_policy_provider.h" 15 #include "chrome/browser/policy/proxy_policy_provider.h"
17 #include "content/public/browser/notification_observer.h"
18 #include "content/public/browser/notification_registrar.h"
19 16
17 class PrefServiceSimple;
20 class Profile; 18 class Profile;
21 class TokenService;
22 19
23 namespace policy { 20 namespace policy {
24 21
22 class ConfigurationPolicyProvider;
23 class DeviceManagementService;
24 class PolicyService;
25 class PolicyStatisticsCollector;
26
27 #if defined(OS_CHROMEOS)
25 class AppPackUpdater; 28 class AppPackUpdater;
26 class CloudPolicyDataStore;
27 class CloudPolicyProvider;
28 class CloudPolicySubsystem;
29 class ConfigurationPolicyProvider;
30 class DeviceCloudPolicyManagerChromeOS; 29 class DeviceCloudPolicyManagerChromeOS;
31 class DeviceLocalAccountPolicyProvider; 30 class DeviceLocalAccountPolicyProvider;
32 class DeviceLocalAccountPolicyService; 31 class DeviceLocalAccountPolicyService;
33 class DeviceManagementService; 32 class EnterpriseInstallAttributes;
34 class NetworkConfigurationUpdater; 33 class NetworkConfigurationUpdater;
35 class PolicyService;
36 class PolicyStatisticsCollector;
37 class UserCloudPolicyManagerChromeOS; 34 class UserCloudPolicyManagerChromeOS;
38 class UserPolicyTokenCache; 35 #endif
39 36
40 // Manages the lifecycle of browser-global policy infrastructure, such as the 37 // Manages the lifecycle of browser-global policy infrastructure, such as the
41 // platform policy providers, device- and the user-cloud policy infrastructure. 38 // platform policy providers, device- and the user-cloud policy infrastructure.
42 // TODO(gfeher,mnissler): Factor out device and user specific methods into their 39 class BrowserPolicyConnector {
43 // respective classes.
44 class BrowserPolicyConnector : public content::NotificationObserver {
45 public: 40 public:
46 // Builds an uninitialized BrowserPolicyConnector, suitable for testing. 41 // Builds an uninitialized BrowserPolicyConnector, suitable for testing.
47 // Init() should be called to create and start the policy machinery. 42 // Init() should be called to create and start the policy machinery.
48 BrowserPolicyConnector(); 43 BrowserPolicyConnector();
49 44
50 // Invoke Shutdown() before deleting, see below. 45 // Invoke Shutdown() before deleting, see below.
51 virtual ~BrowserPolicyConnector(); 46 virtual ~BrowserPolicyConnector();
52 47
53 // Creates the policy providers and finalizes the initialization of the 48 // Creates the policy providers and finalizes the initialization of the
54 // connector. This call can be skipped on tests that don't require the full 49 // connector. This call can be skipped on tests that don't require the full
55 // policy system running. 50 // policy system running.
56 void Init(); 51 void Init();
57 52
58 // Stops the policy providers and cleans up the connector before it can be 53 // Stops the policy providers and cleans up the connector before it can be
59 // safely deleted. This must be invoked before the destructor and while the 54 // safely deleted. This must be invoked before the destructor and while the
60 // threads are still running. The policy providers are still valid but won't 55 // threads are still running. The policy providers are still valid but won't
61 // update anymore after this call. 56 // update anymore after this call.
62 void Shutdown(); 57 void Shutdown();
63 58
64 // Returns true if Init() has been called but Shutdown() hasn't been yet. 59 // Returns true if Init() has been called but Shutdown() hasn't been yet.
65 bool is_initialized() const { return is_initialized_; } 60 bool is_initialized() const { return is_initialized_; }
66 61
67 // Creates a new policy service for the given profile. 62 // Creates a new policy service for the given profile.
68 scoped_ptr<PolicyService> CreatePolicyService(Profile* profile); 63 scoped_ptr<PolicyService> CreatePolicyService(Profile* profile);
69 64
70 // Returns the browser-global PolicyService, that contains policies for the 65 // Returns the browser-global PolicyService, that contains policies for the
71 // whole browser. 66 // whole browser.
72 PolicyService* GetPolicyService(); 67 PolicyService* GetPolicyService();
73 68
74 // Returns a weak pointer to the CloudPolicySubsystem corresponding to the
75 // device policy managed by this policy connector, or NULL if no such
76 // subsystem exists (i.e. when running outside ChromeOS).
77 CloudPolicySubsystem* device_cloud_policy_subsystem() {
78 #if defined(OS_CHROMEOS) 69 #if defined(OS_CHROMEOS)
79 return device_cloud_policy_subsystem_.get();
80 #else
81 return NULL;
82 #endif
83 }
84
85 // Returns a weak pointer to the CloudPolicySubsystem corresponding to the
86 // user policy managed by this policy connector, or NULL if no such
87 // subsystem exists (i.e. when user cloud policy is not active due to
88 // unmanaged or not logged in).
89 CloudPolicySubsystem* user_cloud_policy_subsystem() {
90 return user_cloud_policy_subsystem_.get();
91 }
92
93 // Triggers registration for device policy, using the |owner_email| account.
94 // |token| is an oauth token to authenticate the registration request, and
95 // |known_machine_id| is true if the server should do additional checks based
96 // on the machine_id used for the request.
97 void RegisterForDevicePolicy(const std::string& owner_email,
98 const std::string& token,
99 bool known_machine_id,
100 bool reregister);
101
102 // Returns true if this device is managed by an enterprise (as opposed to 70 // Returns true if this device is managed by an enterprise (as opposed to
103 // a local owner). 71 // a local owner).
104 bool IsEnterpriseManaged(); 72 bool IsEnterpriseManaged();
105 73
106 // Locks the device to an enterprise domain.
107 EnterpriseInstallAttributes::LockResult LockDevice(const std::string& user);
108
109 // Returns the enterprise domain if device is managed. 74 // Returns the enterprise domain if device is managed.
110 std::string GetEnterpriseDomain(); 75 std::string GetEnterpriseDomain();
111 76
112 // Returns the device mode. For ChromeOS this function will return the mode 77 // Returns the device mode. For ChromeOS this function will return the mode
113 // stored in the lockbox, or DEVICE_MODE_CONSUMER if the lockbox has been 78 // stored in the lockbox, or DEVICE_MODE_CONSUMER if the lockbox has been
114 // locked empty, or DEVICE_MODE_UNKNOWN if the device has not been owned yet. 79 // locked empty, or DEVICE_MODE_UNKNOWN if the device has not been owned yet.
115 // For other OSes the function will always return DEVICE_MODE_CONSUMER. 80 // For other OSes the function will always return DEVICE_MODE_CONSUMER.
116 DeviceMode GetDeviceMode(); 81 DeviceMode GetDeviceMode();
117 82 #endif
118 // Reset the device policy machinery. This stops any automatic retry behavior
119 // and clears the error flags, so potential retries have a chance to succeed.
120 void ResetDevicePolicy();
121
122 // Initiates device and user policy fetches, if possible. Pending fetches
123 // will be cancelled.
124 void FetchCloudPolicy();
125 83
126 // Schedules initialization of the cloud policy backend services, if the 84 // Schedules initialization of the cloud policy backend services, if the
127 // services are already constructed. 85 // services are already constructed.
128 void ScheduleServiceInitialization(int64 delay_milliseconds); 86 void ScheduleServiceInitialization(int64 delay_milliseconds);
129 87
88 #if defined(OS_CHROMEOS)
130 // Initializes the user cloud policy infrastructure. 89 // Initializes the user cloud policy infrastructure.
131 // If |wait_for_policy_fetch| is true, the user policy will only become fully 90 // If |wait_for_policy_fetch| is true, the user policy will only become fully
132 // initialized after a policy fetch is attempted. Note that Profile creation 91 // initialized after a policy fetch is attempted. Note that Profile creation
133 // is blocked until this initialization is complete. 92 // is blocked until this initialization is complete.
134 void InitializeUserPolicy(const std::string& user_name, 93 void InitializeUserPolicy(const std::string& user_name,
135 bool is_public_account, 94 bool is_public_account,
136 bool wait_for_policy_fetch); 95 bool wait_for_policy_fetch);
137 96 #endif
138 // Installs a token service for user policy.
139 void SetUserPolicyTokenService(TokenService* token_service);
140
141 // Registers for user policy (if not already registered), using the passed
142 // OAuth V2 token for authentication. |oauth_token| can be empty to signal
143 // that an attempt to fetch the token was made but failed, or that oauth
144 // isn't being used.
145 void RegisterForUserPolicy(const std::string& oauth_token);
146
147 // The data stores should be considered read-only for everyone except for
148 // tests.
149 CloudPolicyDataStore* GetDeviceCloudPolicyDataStore();
150 CloudPolicyDataStore* GetUserCloudPolicyDataStore();
151 97
152 const ConfigurationPolicyHandlerList* GetHandlerList() const; 98 const ConfigurationPolicyHandlerList* GetHandlerList() const;
153 99
154 // Works out the user affiliation by checking the given |user_name| against 100 // Works out the user affiliation by checking the given |user_name| against
155 // the installation attributes. 101 // the installation attributes.
156 UserAffiliation GetUserAffiliation(const std::string& user_name); 102 UserAffiliation GetUserAffiliation(const std::string& user_name);
157 103
158 AppPackUpdater* GetAppPackUpdater();
159
160 NetworkConfigurationUpdater* GetNetworkConfigurationUpdater();
161
162 DeviceManagementService* device_management_service() { 104 DeviceManagementService* device_management_service() {
163 return device_management_service_.get(); 105 return device_management_service_.get();
164 } 106 }
165 107
166 #if defined(OS_CHROMEOS) 108 #if defined(OS_CHROMEOS)
109 AppPackUpdater* GetAppPackUpdater();
110
111 NetworkConfigurationUpdater* GetNetworkConfigurationUpdater();
112
167 DeviceCloudPolicyManagerChromeOS* GetDeviceCloudPolicyManager() { 113 DeviceCloudPolicyManagerChromeOS* GetDeviceCloudPolicyManager() {
168 return device_cloud_policy_manager_.get(); 114 return device_cloud_policy_manager_.get();
169 } 115 }
170 UserCloudPolicyManagerChromeOS* GetUserCloudPolicyManager() { 116 UserCloudPolicyManagerChromeOS* GetUserCloudPolicyManager() {
171 return user_cloud_policy_manager_.get(); 117 return user_cloud_policy_manager_.get();
172 } 118 }
173 DeviceLocalAccountPolicyService* GetDeviceLocalAccountPolicyService() { 119 DeviceLocalAccountPolicyService* GetDeviceLocalAccountPolicyService() {
174 return device_local_account_policy_service_.get(); 120 return device_local_account_policy_service_.get();
175 } 121 }
176 EnterpriseInstallAttributes* GetInstallAttributes() { 122 EnterpriseInstallAttributes* GetInstallAttributes() {
(...skipping 17 matching lines...) Expand all
194 140
195 // Gets the URL of the DM server (either the default or a URL provided via the 141 // Gets the URL of the DM server (either the default or a URL provided via the
196 // command line). 142 // command line).
197 static std::string GetDeviceManagementUrl(); 143 static std::string GetDeviceManagementUrl();
198 144
199 // Check whether a user is known to be non-enterprise. Domains such as 145 // Check whether a user is known to be non-enterprise. Domains such as
200 // gmail.com and googlemail.com are known to not be managed. Also returns 146 // gmail.com and googlemail.com are known to not be managed. Also returns
201 // false if the username is empty. 147 // false if the username is empty.
202 static bool IsNonEnterpriseUser(const std::string& username); 148 static bool IsNonEnterpriseUser(const std::string& username);
203 149
150 // Registers refresh rate prefs.
151 static void RegisterPrefs(PrefServiceSimple* local_state);
152
204 private: 153 private:
205 // content::NotificationObserver method overrides:
206 virtual void Observe(int type,
207 const content::NotificationSource& source,
208 const content::NotificationDetails& details) OVERRIDE;
209
210 // Initializes the device cloud policy infrasturcture.
211 void InitializeDevicePolicy();
212
213 // Complete initialization once the message loops are running and the 154 // Complete initialization once the message loops are running and the
214 // local_state is initialized. 155 // local_state is initialized.
215 void CompleteInitialization(); 156 void CompleteInitialization();
216 157
217 // Set the timezone as soon as the policies are available. 158 // Set the timezone as soon as the policies are available.
218 void SetTimezoneIfPolicyAvailable(); 159 void SetTimezoneIfPolicyAvailable();
219 160
220 // Creates a new PolicyService with the shared policy providers and the given 161 // Creates a new PolicyService with the shared policy providers and the given
221 // |user_cloud_policy_provider| and |managed_mode_policy_provider|, which are 162 // |user_cloud_policy_provider| and |managed_mode_policy_provider|, which are
222 // optional. 163 // optional.
223 scoped_ptr<PolicyService> CreatePolicyServiceWithProviders( 164 scoped_ptr<PolicyService> CreatePolicyServiceWithProviders(
224 ConfigurationPolicyProvider* user_cloud_policy_provider, 165 ConfigurationPolicyProvider* user_cloud_policy_provider,
225 ConfigurationPolicyProvider* managed_mode_policy_provider); 166 ConfigurationPolicyProvider* managed_mode_policy_provider);
226 167
227 static ConfigurationPolicyProvider* CreatePlatformProvider(); 168 static ConfigurationPolicyProvider* CreatePlatformProvider();
228 169
229 // Whether Init() but not Shutdown() has been invoked. 170 // Whether Init() but not Shutdown() has been invoked.
230 bool is_initialized_; 171 bool is_initialized_;
231 172
232 // Used to convert policies to preferences. The providers declared below 173 // Used to convert policies to preferences. The providers declared below
233 // may trigger policy updates during shutdown, which will result in 174 // may trigger policy updates during shutdown, which will result in
234 // |handler_list_| being consulted for policy translation. 175 // |handler_list_| being consulted for policy translation.
235 // Therefore, it's important to destroy |handler_list_| after the providers. 176 // Therefore, it's important to destroy |handler_list_| after the providers.
236 ConfigurationPolicyHandlerList handler_list_; 177 ConfigurationPolicyHandlerList handler_list_;
237 178
238 scoped_ptr<ConfigurationPolicyProvider> platform_provider_; 179 scoped_ptr<ConfigurationPolicyProvider> platform_provider_;
239 scoped_ptr<CloudPolicyProvider> cloud_provider_;
240 180
241 // Components of the new-style cloud policy implementation. 181 // Components of the new-style cloud policy implementation.
242 // TODO(mnissler): Remove the old-style components below once we have 182 // TODO(mnissler): Remove the old-style components below once we have
243 // completed the switch to the new cloud policy implementation. 183 // completed the switch to the new cloud policy implementation.
244 #if defined(OS_CHROMEOS) 184 #if defined(OS_CHROMEOS)
245 scoped_ptr<EnterpriseInstallAttributes> install_attributes_; 185 scoped_ptr<EnterpriseInstallAttributes> install_attributes_;
246 scoped_ptr<DeviceCloudPolicyManagerChromeOS> device_cloud_policy_manager_; 186 scoped_ptr<DeviceCloudPolicyManagerChromeOS> device_cloud_policy_manager_;
247 scoped_ptr<DeviceLocalAccountPolicyService> 187 scoped_ptr<DeviceLocalAccountPolicyService>
248 device_local_account_policy_service_; 188 device_local_account_policy_service_;
249 scoped_ptr<DeviceLocalAccountPolicyProvider> 189 scoped_ptr<DeviceLocalAccountPolicyProvider>
250 device_local_account_policy_provider_; 190 device_local_account_policy_provider_;
251 scoped_ptr<UserCloudPolicyManagerChromeOS> user_cloud_policy_manager_; 191 scoped_ptr<UserCloudPolicyManagerChromeOS> user_cloud_policy_manager_;
252 192
253 // This policy provider is used on Chrome OS to feed user policy into the 193 // This policy provider is used on Chrome OS to feed user policy into the
254 // global PolicyService instance. This works by installing 194 // global PolicyService instance. This works by installing
255 // |user_cloud_policy_manager_| or |device_local_account_policy_provider_|, 195 // |user_cloud_policy_manager_| or |device_local_account_policy_provider_|,
256 // respectively as the delegate after login. 196 // respectively as the delegate after login.
257 ProxyPolicyProvider global_user_cloud_policy_provider_; 197 ProxyPolicyProvider global_user_cloud_policy_provider_;
258 #endif 198 #endif
259 199
260 // Must be deleted before all the policy providers. 200 // Must be deleted before all the policy providers.
261 scoped_ptr<PolicyService> policy_service_; 201 scoped_ptr<PolicyService> policy_service_;
262 202
263 #if defined(OS_CHROMEOS)
264 scoped_ptr<CloudPolicyDataStore> device_data_store_;
265 scoped_ptr<CloudPolicySubsystem> device_cloud_policy_subsystem_;
266 #endif
267
268 scoped_ptr<UserPolicyTokenCache> user_policy_token_cache_;
269 scoped_ptr<CloudPolicyDataStore> user_data_store_;
270 scoped_ptr<CloudPolicySubsystem> user_cloud_policy_subsystem_;
271
272 scoped_ptr<PolicyStatisticsCollector> policy_statistics_collector_; 203 scoped_ptr<PolicyStatisticsCollector> policy_statistics_collector_;
273 204
274 scoped_ptr<DeviceManagementService> device_management_service_; 205 scoped_ptr<DeviceManagementService> device_management_service_;
275 206
276 // Used to initialize the device policy subsystem once the message loops 207 // Used to initialize the device policy subsystem once the message loops
277 // are spinning. 208 // are spinning.
278 base::WeakPtrFactory<BrowserPolicyConnector> weak_ptr_factory_; 209 base::WeakPtrFactory<BrowserPolicyConnector> weak_ptr_factory_;
279 210
280 // Registers the provider for notification of successful Gaia logins.
281 content::NotificationRegistrar registrar_;
282
283 // Weak reference to the TokenService we are listening to for user cloud
284 // policy authentication tokens.
285 TokenService* token_service_;
286
287 #if defined(OS_CHROMEOS) 211 #if defined(OS_CHROMEOS)
288 scoped_ptr<AppPackUpdater> app_pack_updater_; 212 scoped_ptr<AppPackUpdater> app_pack_updater_;
289 scoped_ptr<NetworkConfigurationUpdater> network_configuration_updater_; 213 scoped_ptr<NetworkConfigurationUpdater> network_configuration_updater_;
290 #endif 214 #endif
291 215
292 DISALLOW_COPY_AND_ASSIGN(BrowserPolicyConnector); 216 DISALLOW_COPY_AND_ASSIGN(BrowserPolicyConnector);
293 }; 217 };
294 218
295 } // namespace policy 219 } // namespace policy
296 220
297 #endif // CHROME_BROWSER_POLICY_BROWSER_POLICY_CONNECTOR_H_ 221 #endif // CHROME_BROWSER_POLICY_BROWSER_POLICY_CONNECTOR_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/version_info_updater.cc ('k') | chrome/browser/policy/browser_policy_connector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698