Chromium Code Reviews| Index: chrome/browser/policy/browser_policy_connector.h |
| diff --git a/chrome/browser/policy/browser_policy_connector.h b/chrome/browser/policy/browser_policy_connector.h |
| index 0b01de8d480de2c696d5bc710bb7f1504975b144..b8713a5c0b691a814e39dca740f066044aa1d2a0 100644 |
| --- a/chrome/browser/policy/browser_policy_connector.h |
| +++ b/chrome/browser/policy/browser_policy_connector.h |
| @@ -9,47 +9,63 @@ |
| #include <string> |
| #include "base/basictypes.h" |
| +#include "base/file_util.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/task.h" |
| #include "chrome/browser/policy/enterprise_install_attributes.h" |
| +#include "content/common/notification_observer.h" |
| +#include "content/common/notification_registrar.h" |
| class PrefService; |
| class TestingBrowserProcess; |
| class TokenService; |
| -namespace net { |
| -class URLRequestContextGetter; |
| -} |
| - |
| namespace policy { |
| +class CloudPolicyProvider; |
| class CloudPolicySubsystem; |
| class ConfigurationPolicyProvider; |
| +class UserPolicyIdentityStrategy; |
| + |
| +#if defined(OS_CHROMEOS) |
| class DevicePolicyIdentityStrategy; |
| +#endif |
| // Manages the lifecycle of browser-global policy infrastructure, such as the |
| -// platform policy providers. |
| -class BrowserPolicyConnector { |
| +// platform policy providers, device- and the user-cloud policy infrastructure. |
| +class BrowserPolicyConnector : public NotificationObserver { |
| public: |
| static BrowserPolicyConnector* Create(); |
| - ~BrowserPolicyConnector(); |
| + virtual ~BrowserPolicyConnector(); |
| ConfigurationPolicyProvider* GetManagedPlatformProvider() const; |
| ConfigurationPolicyProvider* GetManagedCloudProvider() const; |
| ConfigurationPolicyProvider* GetRecommendedPlatformProvider() const; |
| ConfigurationPolicyProvider* GetRecommendedCloudProvider() const; |
| - // Returns a weak pointer to the CloudPolicySubsystem managed by this |
| - // policy connector, or NULL if no such subsystem exists (i.e. when running |
| - // outside ChromeOS). |
| - CloudPolicySubsystem* cloud_policy_subsystem() { |
| - return cloud_policy_subsystem_.get(); |
| + // Returns a weak pointer to the CloudPolicySubsystem corresponding to the |
| + // device policy managed by this policy connector, or NULL if no such |
| + // subsystem exists (i.e. when running outside ChromeOS). |
| + CloudPolicySubsystem* device_cloud_policy_subsystem() { |
| +#if defined(OS_CHROMEOS) |
| + return device_cloud_policy_subsystem_.get(); |
| +#else |
| + return NULL; |
| +#endif |
| + } |
| + |
| + // Returns a weak pointer to the CloudPolicySubsystem corresponding to the |
| + // user policy managed by this policy connector, or NULL if no such |
| + // subsystem exists (i.e. when user cloud policy is not active due to |
| + // unmanaged or not logged in). |
| + CloudPolicySubsystem* user_cloud_policy_subsystem() { |
| + return user_cloud_policy_subsystem_.get(); |
| } |
| // Used to set the credentials stored in the identity strategy associated |
| // with this policy connector. |
| - void SetCredentials(const std::string& owner_email, |
| - const std::string& gaia_token); |
| + void SetDeviceCredentials(const std::string& owner_email, |
| + const std::string& gaia_token); |
| // Returns true if this device is managed by an enterprise (as opposed to |
| // a local owner). |
| @@ -64,15 +80,22 @@ class BrowserPolicyConnector { |
| // Exposes the StopAutoRetry() method of the CloudPolicySubsystem managed |
| // by this connector, which can be used to disable automatic |
| // retrying behavior. |
| - void StopAutoRetry(); |
| + void DeviceStopAutoRetry(); |
| // Initiates a policy fetch after a successful device registration. |
| - void FetchPolicy(); |
| + void FetchDevicePolicy(); |
| - // Schedules initialization of the policy backend service, if the service is |
| - // already constructed. |
| + // Schedules initialization of the cloud policy backend services, if the |
| + // services are already constructed. |
| void ScheduleServiceInitialization(int64 delay_milliseconds); |
| + // Initializes the user cloud policy infrasturcture. |
| + // TODO(sfeuz): Listen to log-out or going-away messages of TokenService and |
| + // reset the backend at that point. |
| + void InitializeUserPolicy(std::string& user_name, |
|
Joao da Silva
2011/06/22 12:51:30
Should |user_name| be const?
gfeher
2011/06/22 19:18:34
Done.
|
| + const FilePath& policy_dir, |
| + TokenService* token_service); |
| + |
| private: |
| friend class ::TestingBrowserProcess; |
| @@ -82,26 +105,51 @@ class BrowserPolicyConnector { |
| static ConfigurationPolicyProvider* CreateManagedPlatformProvider(); |
| static ConfigurationPolicyProvider* CreateRecommendedPlatformProvider(); |
| - // Constructor for tests that allows tests to use fake platform policy |
| - // providers instead of using the actual ones. |
| + // Constructor for tests that allows tests to use fake platform and cloud |
| + // policy providers instead of using the actual ones. |
| BrowserPolicyConnector( |
| ConfigurationPolicyProvider* managed_platform_provider, |
| - ConfigurationPolicyProvider* recommended_platform_provider); |
| + ConfigurationPolicyProvider* recommended_platform_provider, |
| + CloudPolicyProvider* managed_cloud_provider, |
| + CloudPolicyProvider* recommended_cloud_provider); |
| + |
| + // NotificationObserver method overrides: |
| + virtual void Observe(NotificationType type, |
| + const NotificationSource& source, |
| + const NotificationDetails& details); |
| - // Activates the cloud policy subsystem. |
| - void Initialize(); |
| + // Initializes the device cloud policy infrasturcture. |
| + void InitializeDevicePolicy(); |
| + |
| + // Activates the device cloud policy subsystem. This will be posted as a task |
| + // from InitializeDevicePolicy since it needs to wait for the message loops to |
| + // be running. |
| + void InitializeDevicePolicySubsystem(); |
| scoped_ptr<ConfigurationPolicyProvider> managed_platform_provider_; |
| scoped_ptr<ConfigurationPolicyProvider> recommended_platform_provider_; |
| + scoped_ptr<CloudPolicyProvider> managed_cloud_provider_; |
| + scoped_ptr<CloudPolicyProvider> recommended_cloud_provider_; |
| + |
| #if defined(OS_CHROMEOS) |
| - scoped_ptr<DevicePolicyIdentityStrategy> identity_strategy_; |
| + scoped_ptr<DevicePolicyIdentityStrategy> device_identity_strategy_; |
| + scoped_ptr<CloudPolicySubsystem> device_cloud_policy_subsystem_; |
| scoped_ptr<EnterpriseInstallAttributes> install_attributes_; |
| #endif |
| - scoped_ptr<CloudPolicySubsystem> cloud_policy_subsystem_; |
| + |
| + scoped_ptr<UserPolicyIdentityStrategy> user_identity_strategy_; |
| + scoped_ptr<CloudPolicySubsystem> user_cloud_policy_subsystem_; |
| ScopedRunnableMethodFactory<BrowserPolicyConnector> method_factory_; |
| + // Registers the provider for notification of successful Gaia logins. |
| + NotificationRegistrar registrar_; |
| + |
| + // Weak reference to the TokenService we are listening to for user cloud |
| + // policy authentication tokens. |
| + TokenService* token_service_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(BrowserPolicyConnector); |
| }; |