| 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 63a81f8800968c975bd65cc75867d3f896b3d18b..ae9441f9742cfe120f4636ff36448a563d41c757 100644
|
| --- a/chrome/browser/policy/asynchronous_policy_loader.h
|
| +++ b/chrome/browser/policy/asynchronous_policy_loader.h
|
| @@ -27,14 +27,15 @@ class AsynchronousPolicyLoader
|
| 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);
|
| + // Triggers initial policy load, and installs |default_callback| as the
|
| + // callback to invoke on policy updates that haven't been requested.
|
| + virtual void Init(const base::Closure& default_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
|
| - // immediate full reload.
|
| - virtual void Reload(bool force);
|
| + // Reloads policy and invokes |callback| on |origin_loop_| when done.
|
| + // The loader does a full reload immediately when |force| is true.
|
| + // |callback| is guaranteed to be eventually invoked, even if the loading
|
| + // fails. This method must be called on the FILE thread.
|
| + virtual void Reload(const base::Closure& callback, bool force);
|
|
|
| // Stops any pending reload tasks. Updates callbacks won't be performed
|
| // anymore once the loader is stopped.
|
| @@ -50,12 +51,15 @@ class AsynchronousPolicyLoader
|
|
|
| // Schedules a call to UpdatePolicy on |origin_loop_|. Takes ownership of
|
| // |new_policy|.
|
| - void PostUpdatePolicyTask(DictionaryValue* new_policy);
|
| + void PostUpdatePolicyTask(const base::Closure& callback,
|
| + DictionaryValue* new_policy);
|
|
|
| AsynchronousPolicyProvider::Delegate* delegate() {
|
| return delegate_.get();
|
| }
|
|
|
| + const base::Closure& default_callback() { return default_callback_; }
|
| +
|
| // Performs start operations that must be performed on the FILE thread.
|
| virtual void InitOnFileThread();
|
|
|
| @@ -64,7 +68,8 @@ class AsynchronousPolicyLoader
|
|
|
| // Schedules a reload task to run when |delay| expires. Must be called on the
|
| // FILE thread.
|
| - void ScheduleReloadTask(const base::TimeDelta& delay);
|
| + void ScheduleReloadTask(const base::Closure& callback,
|
| + const base::TimeDelta& delay);
|
|
|
| // Schedules a reload task to run after the number of minutes specified
|
| // in |reload_interval_minutes_|. Must be called on the FILE thread.
|
| @@ -72,9 +77,6 @@ class AsynchronousPolicyLoader
|
|
|
| void CancelReloadTask();
|
|
|
| - // Invoked from the reload task on the FILE thread.
|
| - void ReloadFromTask();
|
| -
|
| private:
|
| friend class AsynchronousPolicyLoaderTest;
|
|
|
| @@ -82,11 +84,11 @@ 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(DictionaryValue* new_policy);
|
| + // Replaces the existing policy to value map with a new one, and invokes
|
| + // |callback|. Must be called on |origin_loop_| so that it's safe to callback
|
| + // into the provider, which is not thread-safe. Takes ownership of
|
| + // |new_policy|.
|
| + void UpdatePolicy(const base::Closure& callback, DictionaryValue* new_policy);
|
|
|
| // Provides the low-level mechanics for loading policy.
|
| scoped_ptr<AsynchronousPolicyProvider::Delegate> delegate_;
|
| @@ -99,7 +101,7 @@ class AsynchronousPolicyLoader
|
| base::WeakPtrFactory<AsynchronousPolicyLoader> weak_ptr_factory_;
|
|
|
| // The interval at which a policy reload will be triggered as a fallback.
|
| - const base::TimeDelta reload_interval_;
|
| + const base::TimeDelta reload_interval_;
|
|
|
| // The message loop on which this object was constructed. Recorded so that
|
| // it's possible to call back into the non thread safe provider to fire the
|
| @@ -109,8 +111,9 @@ class AsynchronousPolicyLoader
|
| // True if Stop has been called.
|
| bool stopped_;
|
|
|
| - // Callback to invoke on policy updates.
|
| - base::Closure updates_callback_;
|
| + // Default callback to invoke on policy updates that weren't explicitly
|
| + // requested by the provider.
|
| + base::Closure default_callback_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(AsynchronousPolicyLoader);
|
| };
|
|
|