Home | History | Annotate | Download | only in policy
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_POLICY_BROWSER_POLICY_CONNECTOR_H_
      6 #define CHROME_BROWSER_POLICY_BROWSER_POLICY_CONNECTOR_H_
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "base/basictypes.h"
     12 #include "base/memory/scoped_ptr.h"
     13 #include "base/task.h"
     14 #include "chrome/browser/policy/enterprise_install_attributes.h"
     15 
     16 class PrefService;
     17 class TestingBrowserProcess;
     18 class TokenService;
     19 
     20 namespace net {
     21 class URLRequestContextGetter;
     22 }
     23 
     24 namespace policy {
     25 
     26 class CloudPolicySubsystem;
     27 class ConfigurationPolicyProvider;
     28 class DevicePolicyIdentityStrategy;
     29 
     30 // Manages the lifecycle of browser-global policy infrastructure, such as the
     31 // platform policy providers.
     32 class BrowserPolicyConnector {
     33  public:
     34   BrowserPolicyConnector();
     35   ~BrowserPolicyConnector();
     36 
     37   ConfigurationPolicyProvider* GetManagedPlatformProvider() const;
     38   ConfigurationPolicyProvider* GetManagedCloudProvider() const;
     39   ConfigurationPolicyProvider* GetRecommendedPlatformProvider() const;
     40   ConfigurationPolicyProvider* GetRecommendedCloudProvider() const;
     41 
     42   // Returns a weak pointer to the CloudPolicySubsystem managed by this
     43   // policy connector, or NULL if no such subsystem exists (i.e. when running
     44   // outside ChromeOS).
     45   CloudPolicySubsystem* cloud_policy_subsystem() {
     46     return cloud_policy_subsystem_.get();
     47   }
     48 
     49   // Used to set the credentials stored in the identity strategy associated
     50   // with this policy connector.
     51   void SetCredentials(const std::string& owner_email,
     52                       const std::string& gaia_token);
     53 
     54   // Returns true if this device is managed by an enterprise (as opposed to
     55   // a local owner).
     56   bool IsEnterpriseManaged();
     57 
     58   // Locks the device to an enterprise domain.
     59   EnterpriseInstallAttributes::LockResult LockDevice(const std::string& user);
     60 
     61   // Returns the enterprise domain if device is managed.
     62   std::string GetEnterpriseDomain();
     63 
     64   // Exposes the StopAutoRetry() method of the CloudPolicySubsystem managed
     65   // by this connector, which can be used to disable automatic
     66   // retrying behavior.
     67   void StopAutoRetry();
     68 
     69   // Initiates a policy fetch after a successful device registration.
     70   void FetchPolicy();
     71 
     72  private:
     73   friend class ::TestingBrowserProcess;
     74 
     75   static ConfigurationPolicyProvider* CreateManagedPlatformProvider();
     76   static ConfigurationPolicyProvider* CreateRecommendedPlatformProvider();
     77 
     78   // Constructor for tests that allows tests to use fake platform policy
     79   // providers instead of using the actual ones.
     80   BrowserPolicyConnector(
     81       ConfigurationPolicyProvider* managed_platform_provider,
     82       ConfigurationPolicyProvider* recommended_platform_provider);
     83 
     84   // Activates the cloud policy subsystem.
     85   void Initialize();
     86 
     87   scoped_ptr<ConfigurationPolicyProvider> managed_platform_provider_;
     88   scoped_ptr<ConfigurationPolicyProvider> recommended_platform_provider_;
     89 
     90 #if defined(OS_CHROMEOS)
     91   scoped_ptr<DevicePolicyIdentityStrategy> identity_strategy_;
     92   scoped_ptr<EnterpriseInstallAttributes> install_attributes_;
     93 #endif
     94   scoped_ptr<CloudPolicySubsystem> cloud_policy_subsystem_;
     95 
     96   ScopedRunnableMethodFactory<BrowserPolicyConnector> method_factory_;
     97 
     98   DISALLOW_COPY_AND_ASSIGN(BrowserPolicyConnector);
     99 };
    100 
    101 }  // namespace policy
    102 
    103 #endif  // CHROME_BROWSER_POLICY_BROWSER_POLICY_CONNECTOR_H_
    104