1// Copyright 2014 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 COMPONENTS_POLICY_CORE_COMMON_POLICY_PROVIDER_ANDROID_H_
6#define COMPONENTS_POLICY_CORE_COMMON_POLICY_PROVIDER_ANDROID_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "components/policy/core/common/configuration_policy_provider.h"
11
12namespace policy {
13
14class PolicyProviderAndroidDelegate;
15class Schema;
16
17// Provider for policies set by the Android platform.
18class POLICY_EXPORT PolicyProviderAndroid : public ConfigurationPolicyProvider {
19 public:
20  PolicyProviderAndroid();
21  virtual ~PolicyProviderAndroid();
22
23  // Call this method to tell the policy system whether it should wait for
24  // policies to be loaded by this provider. If this method is called,
25  // IsInitializationComplete() will only return true after SetPolicies() has
26  // been called at least once, otherwise it will return true immediately.
27  static void SetShouldWaitForPolicy(bool should_wait_for_policy);
28
29  // Returns the schema for Chrome policies.
30  const Schema* GetChromeSchema() const;
31
32  void SetDelegate(PolicyProviderAndroidDelegate* delegate);
33  void SetPolicies(scoped_ptr<PolicyBundle> policy);
34
35  // ConfigurationPolicyProvider:
36  virtual void Shutdown() OVERRIDE;
37  virtual bool IsInitializationComplete(PolicyDomain domain) const OVERRIDE;
38  virtual void RefreshPolicies() OVERRIDE;
39
40 private:
41  PolicyProviderAndroidDelegate* delegate_;
42  bool initialized_;
43
44  DISALLOW_COPY_AND_ASSIGN(PolicyProviderAndroid);
45};
46
47}  // namespace policy
48
49#endif  // COMPONENTS_POLICY_CORE_COMMON_POLICY_PROVIDER_ANDROID_H_
50