| 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 COMPONENTS_POLICY_CORE_COMMON_POLICY_SERVICE_H_ |
| 6 #define CHROME_BROWSER_POLICY_POLICY_SERVICE_H_ | 6 #define COMPONENTS_POLICY_CORE_COMMON_POLICY_SERVICE_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| 11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "base/callback.h" | 12 #include "base/callback.h" |
| 13 #include "components/policy/core/common/policy_map.h" | 13 #include "components/policy/core/common/policy_map.h" |
| 14 #include "components/policy/core/common/policy_namespace.h" | 14 #include "components/policy/core/common/policy_namespace.h" |
| 15 #include "components/policy/policy_export.h" |
| 15 | 16 |
| 16 namespace policy { | 17 namespace policy { |
| 17 | 18 |
| 18 // The PolicyService merges policies from all available sources, taking into | 19 // The PolicyService merges policies from all available sources, taking into |
| 19 // account their priorities. Policy clients can retrieve policy for their domain | 20 // account their priorities. Policy clients can retrieve policy for their domain |
| 20 // and register for notifications on policy updates. | 21 // and register for notifications on policy updates. |
| 21 // | 22 // |
| 22 // The PolicyService is available from BrowserProcess as a global singleton. | 23 // The PolicyService is available from BrowserProcess as a global singleton. |
| 23 // There is also a PolicyService for browser-wide policies available from | 24 // There is also a PolicyService for browser-wide policies available from |
| 24 // BrowserProcess as a global singleton. | 25 // BrowserProcess as a global singleton. |
| 25 class PolicyService { | 26 class POLICY_EXPORT PolicyService { |
| 26 public: | 27 public: |
| 27 class Observer { | 28 class POLICY_EXPORT Observer { |
| 28 public: | 29 public: |
| 29 // Invoked whenever policies for the given |ns| namespace are modified. | 30 // Invoked whenever policies for the given |ns| namespace are modified. |
| 30 // This is only invoked for changes that happen after AddObserver is called. | 31 // This is only invoked for changes that happen after AddObserver is called. |
| 31 // |previous| contains the values of the policies before the update, | 32 // |previous| contains the values of the policies before the update, |
| 32 // and |current| contains the current values. | 33 // and |current| contains the current values. |
| 33 virtual void OnPolicyUpdated(const PolicyNamespace& ns, | 34 virtual void OnPolicyUpdated(const PolicyNamespace& ns, |
| 34 const PolicyMap& previous, | 35 const PolicyMap& previous, |
| 35 const PolicyMap& current) = 0; | 36 const PolicyMap& current) = 0; |
| 36 | 37 |
| 37 // Invoked at most once for each |domain|, when the PolicyService becomes | 38 // Invoked at most once for each |domain|, when the PolicyService becomes |
| (...skipping 30 matching lines...) Expand all Loading... |
| 68 virtual bool IsInitializationComplete(PolicyDomain domain) const = 0; | 69 virtual bool IsInitializationComplete(PolicyDomain domain) const = 0; |
| 69 | 70 |
| 70 // Asks the PolicyService to reload policy from all available policy sources. | 71 // Asks the PolicyService to reload policy from all available policy sources. |
| 71 // |callback| is invoked once every source has reloaded its policies, and | 72 // |callback| is invoked once every source has reloaded its policies, and |
| 72 // GetPolicies() is guaranteed to return the updated values at that point. | 73 // GetPolicies() is guaranteed to return the updated values at that point. |
| 73 virtual void RefreshPolicies(const base::Closure& callback) = 0; | 74 virtual void RefreshPolicies(const base::Closure& callback) = 0; |
| 74 }; | 75 }; |
| 75 | 76 |
| 76 // A registrar that only observes changes to particular policies within the | 77 // A registrar that only observes changes to particular policies within the |
| 77 // PolicyMap for the given policy namespace. | 78 // PolicyMap for the given policy namespace. |
| 78 class PolicyChangeRegistrar : public PolicyService::Observer { | 79 class POLICY_EXPORT PolicyChangeRegistrar : public PolicyService::Observer { |
| 79 public: | 80 public: |
| 80 typedef base::Callback<void(const Value*, const Value*)> UpdateCallback; | 81 typedef base::Callback<void(const Value*, const Value*)> UpdateCallback; |
| 81 | 82 |
| 82 // Observes updates to the given (domain, component_id) namespace in the given | 83 // Observes updates to the given (domain, component_id) namespace in the given |
| 83 // |policy_service|, and notifies |observer| whenever any of the registered | 84 // |policy_service|, and notifies |observer| whenever any of the registered |
| 84 // policy keys changes. Both the |policy_service| and the |observer| must | 85 // policy keys changes. Both the |policy_service| and the |observer| must |
| 85 // outlive |this|. | 86 // outlive |this|. |
| 86 PolicyChangeRegistrar(PolicyService* policy_service, | 87 PolicyChangeRegistrar(PolicyService* policy_service, |
| 87 const PolicyNamespace& ns); | 88 const PolicyNamespace& ns); |
| 88 | 89 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 104 | 105 |
| 105 PolicyService* policy_service_; | 106 PolicyService* policy_service_; |
| 106 PolicyNamespace ns_; | 107 PolicyNamespace ns_; |
| 107 CallbackMap callback_map_; | 108 CallbackMap callback_map_; |
| 108 | 109 |
| 109 DISALLOW_COPY_AND_ASSIGN(PolicyChangeRegistrar); | 110 DISALLOW_COPY_AND_ASSIGN(PolicyChangeRegistrar); |
| 110 }; | 111 }; |
| 111 | 112 |
| 112 } // namespace policy | 113 } // namespace policy |
| 113 | 114 |
| 114 #endif // CHROME_BROWSER_POLICY_POLICY_SERVICE_H_ | 115 #endif // COMPONENTS_POLICY_CORE_COMMON_POLICY_SERVICE_H_ |
| OLD | NEW |