Index: chrome/browser/policy/asynchronous_policy_loader.h |
diff --git a/chrome/browser/policy/asynchronous_policy_loader.h b/chrome/browser/policy/asynchronous_policy_loader.h |
index 4c346277df884c2281fd161b024be053132a7f56..19fa919818bbf302d89d93d99f82740a82f41f91 100644 |
--- a/chrome/browser/policy/asynchronous_policy_loader.h |
+++ b/chrome/browser/policy/asynchronous_policy_loader.h |
@@ -12,24 +12,29 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/time.h" |
#include "chrome/browser/policy/asynchronous_policy_provider.h" |
-#include "chrome/browser/policy/configuration_policy_provider.h" |
-#include "chrome/browser/policy/policy_map.h" |
class MessageLoop; |
namespace policy { |
+class PolicyBundle; |
+class PolicyMap; |
+ |
// Used by the implementation of asynchronous policy provider to manage the |
// tasks on the FILE thread that do the heavy lifting of loading policies. |
class AsynchronousPolicyLoader |
: public base::RefCountedThreadSafe<AsynchronousPolicyLoader> { |
public: |
+ // The type of the callback passed to Init(). |
+ typedef base::Callback<void(scoped_ptr<PolicyBundle>)> UpdateCallback; |
+ |
AsynchronousPolicyLoader(AsynchronousPolicyProvider::Delegate* delegate, |
int reload_interval_minutes); |
// Triggers initial policy load, and installs |callback| as the callback to |
- // invoke on policy updates. |
- virtual void Init(const base::Closure& callback); |
+ // invoke on policy updates. |callback| takes ownership of the passed |
+ // PolicyBundle, which contains all the policies that were loaded. |
+ virtual void Init(const UpdateCallback& callback); |
// Reloads policy, sending notification of changes if necessary. Must be |
// called on the FILE thread. When |force| is true, the loader should do an |
@@ -40,8 +45,6 @@ class AsynchronousPolicyLoader |
// anymore once the loader is stopped. |
virtual void Stop(); |
- const PolicyMap& policy() const { return policy_; } |
- |
protected: |
// AsynchronousPolicyLoader objects should only be deleted by |
// RefCountedThreadSafe. |
@@ -82,18 +85,14 @@ class AsynchronousPolicyLoader |
// intialized. |
void InitAfterFileThreadAvailable(); |
- // Replaces the existing policy to value map with a new one, sending |
- // notification to the observers if there is a policy change. Must be called |
- // on |origin_loop_| so that it's safe to call back into the provider, which |
- // is not thread-safe. Takes ownership of |new_policy|. |
- void UpdatePolicy(PolicyMap* new_policy); |
+ // Invokes the |update_callback_| with a new PolicyBundle that maps |
+ // the chrome namespace to |policy|. Must be called on |origin_loop_| so that |
+ // it's safe to invoke |update_callback_|. |
+ void UpdatePolicy(scoped_ptr<PolicyMap> policy); |
// Provides the low-level mechanics for loading policy. |
scoped_ptr<AsynchronousPolicyProvider::Delegate> delegate_; |
- // Current policy. |
- PolicyMap policy_; |
- |
// Used to create and invalidate WeakPtrs on the FILE thread. These are only |
// used to post reload tasks that can be cancelled. |
base::WeakPtrFactory<AsynchronousPolicyLoader> weak_ptr_factory_; |
@@ -110,7 +109,7 @@ class AsynchronousPolicyLoader |
bool stopped_; |
// Callback to invoke on policy updates. |
- base::Closure updates_callback_; |
+ UpdateCallback update_callback_; |
DISALLOW_COPY_AND_ASSIGN(AsynchronousPolicyLoader); |
}; |