OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_POLICY_POLICY_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_POLICY_POLICY_SERVICE_H_ |
6 #define CHROME_BROWSER_POLICY_POLICY_SERVICE_H_ | 6 #define CHROME_BROWSER_POLICY_POLICY_SERVICE_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <set> | |
10 #include <string> | 9 #include <string> |
11 #include <utility> | |
12 | 10 |
13 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
14 #include "base/callback.h" | 12 #include "base/callback.h" |
| 13 #include "base/memory/ref_counted.h" |
15 #include "chrome/browser/policy/policy_map.h" | 14 #include "chrome/browser/policy/policy_map.h" |
16 | 15 |
17 namespace policy { | 16 namespace policy { |
18 | 17 |
| 18 class PolicyDomainDescriptor; |
| 19 |
19 // Policies are namespaced by a (PolicyDomain, ID) pair. The meaning of the ID | 20 // Policies are namespaced by a (PolicyDomain, ID) pair. The meaning of the ID |
20 // string depends on the domain; for example, if the PolicyDomain is | 21 // string depends on the domain; for example, if the PolicyDomain is |
21 // "extensions" then the ID identifies the extension that the policies control. | 22 // "extensions" then the ID identifies the extension that the policies control. |
22 enum PolicyDomain { | 23 enum PolicyDomain { |
23 // The component ID for chrome policies is always the empty string. | 24 // The component ID for chrome policies is always the empty string. |
24 POLICY_DOMAIN_CHROME, | 25 POLICY_DOMAIN_CHROME, |
25 | 26 |
26 // The extensions policy domain is a work in progress. Included here for | 27 // The extensions policy domain is a work in progress. Included here for |
27 // tests. | 28 // tests. |
28 POLICY_DOMAIN_EXTENSIONS, | 29 POLICY_DOMAIN_EXTENSIONS, |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 virtual ~Observer() {} | 79 virtual ~Observer() {} |
79 }; | 80 }; |
80 | 81 |
81 virtual ~PolicyService() {} | 82 virtual ~PolicyService() {} |
82 | 83 |
83 // Observes changes to all components of the given |domain|. | 84 // Observes changes to all components of the given |domain|. |
84 virtual void AddObserver(PolicyDomain domain, Observer* observer) = 0; | 85 virtual void AddObserver(PolicyDomain domain, Observer* observer) = 0; |
85 | 86 |
86 virtual void RemoveObserver(PolicyDomain domain, Observer* observer) = 0; | 87 virtual void RemoveObserver(PolicyDomain domain, Observer* observer) = 0; |
87 | 88 |
88 // Registers the current components of the given policy |domain|, signaling | 89 // Registers the |descriptor| of a policy domain, indicated by |
89 // that there is interest in receiving policy for them. | 90 // |descriptor->domain()|. This overrides the descriptor previously set, if |
90 // |component_ids| is the current set of components for that |domain|, and | 91 // there was one. |
91 // replaces any previously registered set. | 92 // This registration signals that there is interest in receiving policy for |
92 // The policy providers will try to load policy for these components, and may | 93 // the components listed in the descriptor. The policy providers will try to |
93 // flush cached data for components that aren't registered anymore. | 94 // load policy for these components, and validate it against the descriptor. |
| 95 // Cached data for components that aren't registered anymore may be dropped. |
94 virtual void RegisterPolicyDomain( | 96 virtual void RegisterPolicyDomain( |
95 PolicyDomain domain, | 97 scoped_refptr<const PolicyDomainDescriptor> descriptor) = 0; |
96 const std::set<std::string>& component_ids) = 0; | |
97 | 98 |
98 virtual const PolicyMap& GetPolicies(const PolicyNamespace& ns) const = 0; | 99 virtual const PolicyMap& GetPolicies(const PolicyNamespace& ns) const = 0; |
99 | 100 |
100 // The PolicyService loads policy from several sources, and some require | 101 // The PolicyService loads policy from several sources, and some require |
101 // asynchronous loads. IsInitializationComplete() returns true once all | 102 // asynchronous loads. IsInitializationComplete() returns true once all |
102 // sources have loaded their policies for the given |domain|. | 103 // sources have loaded their policies for the given |domain|. |
103 // It is safe to read policy from the PolicyService even if | 104 // It is safe to read policy from the PolicyService even if |
104 // IsInitializationComplete() is false; there will be an OnPolicyUpdated() | 105 // IsInitializationComplete() is false; there will be an OnPolicyUpdated() |
105 // notification once new policies become available. | 106 // notification once new policies become available. |
106 // | 107 // |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 PolicyService* policy_service_; | 150 PolicyService* policy_service_; |
150 PolicyNamespace ns_; | 151 PolicyNamespace ns_; |
151 CallbackMap callback_map_; | 152 CallbackMap callback_map_; |
152 | 153 |
153 DISALLOW_COPY_AND_ASSIGN(PolicyChangeRegistrar); | 154 DISALLOW_COPY_AND_ASSIGN(PolicyChangeRegistrar); |
154 }; | 155 }; |
155 | 156 |
156 } // namespace policy | 157 } // namespace policy |
157 | 158 |
158 #endif // CHROME_BROWSER_POLICY_POLICY_SERVICE_H_ | 159 #endif // CHROME_BROWSER_POLICY_POLICY_SERVICE_H_ |
OLD | NEW |