login_profile_policy_provider.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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 "components/policy/core/common/configuration_policy_provider.h"
12#include "components/policy/core/common/policy_service.h"
13
14namespace 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.
20class 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(SchemaRegistry* registry) 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