Home | History | Annotate | Download | only in policy
      1 // Copyright 2013 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_CHROMEOS_POLICY_LOGIN_PROFILE_POLICY_PROVIDER_H_
      6 #define CHROME_BROWSER_CHROMEOS_POLICY_LOGIN_PROFILE_POLICY_PROVIDER_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/compiler_specific.h"
     10 #include "base/memory/weak_ptr.h"
     11 #include "chrome/browser/policy/configuration_policy_provider.h"
     12 #include "chrome/browser/policy/policy_service.h"
     13 
     14 namespace policy {
     15 
     16 // Policy provider for the login profile. Since the login profile is not
     17 // associated with any user, it does not receive regular user policy. However,
     18 // several device policies that control features on the login screen surface as
     19 // user policies in the login profile.
     20 class LoginProfilePolicyProvider : public ConfigurationPolicyProvider,
     21                                    public PolicyService::Observer {
     22  public:
     23   explicit LoginProfilePolicyProvider(PolicyService* device_policy_service);
     24   virtual ~LoginProfilePolicyProvider();
     25 
     26   // ConfigurationPolicyProvider:
     27   virtual void Init() OVERRIDE;
     28   virtual void Shutdown() OVERRIDE;
     29   virtual void RefreshPolicies() OVERRIDE;
     30 
     31   // PolicyService::Observer:
     32   virtual void OnPolicyUpdated(const PolicyNamespace& ns,
     33                                const PolicyMap& previous,
     34                                const PolicyMap& current) OVERRIDE;
     35   virtual void OnPolicyServiceInitialized(PolicyDomain domain) OVERRIDE;
     36 
     37   void OnDevicePolicyRefreshDone();
     38 
     39  private:
     40   void UpdateFromDevicePolicy();
     41 
     42   PolicyService* device_policy_service_;  // Not owned.
     43 
     44   bool waiting_for_device_policy_refresh_;
     45 
     46   base::WeakPtrFactory<LoginProfilePolicyProvider> weak_factory_;
     47 
     48   DISALLOW_COPY_AND_ASSIGN(LoginProfilePolicyProvider);
     49 };
     50 
     51 }  // namespace policy
     52 
     53 #endif  // CHROME_BROWSER_CHROMEOS_POLICY_LOGIN_PROFILE_POLICY_PROVIDER_H_
     54