| Index: remoting/host/policy_watcher.h
|
| diff --git a/remoting/host/policy_watcher.h b/remoting/host/policy_watcher.h
|
| index 513c4c121b6dab3e4dfdee7aaeb2593a5e31b824..b4d6dda7cbec187e0ca44a5d657d5507d4cfab6c 100644
|
| --- a/remoting/host/policy_watcher.h
|
| +++ b/remoting/host/policy_watcher.h
|
| @@ -9,6 +9,7 @@
|
| #include "base/macros.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/threading/non_thread_safe.h"
|
| #include "components/policy/core/common/policy_service.h"
|
|
|
| namespace base {
|
| @@ -24,11 +25,9 @@ class SchemaRegistry;
|
|
|
| namespace remoting {
|
|
|
| -// Watches for changes to the managed remote access host policies. If
|
| -// StartWatching() has been called, then before this object can be deleted,
|
| -// StopWatching() has to be completed (the provided |done| event must be
|
| -// signaled).
|
| -class PolicyWatcher : public policy::PolicyService::Observer {
|
| +// Watches for changes to the managed remote access host policies.
|
| +class PolicyWatcher : public policy::PolicyService::Observer,
|
| + public base::NonThreadSafe {
|
| public:
|
| // Called first with all policies, and subsequently with any changed policies.
|
| typedef base::Callback<void(scoped_ptr<base::DictionaryValue>)>
|
| @@ -60,42 +59,32 @@ class PolicyWatcher : public policy::PolicyService::Observer {
|
| // for policy changes and will call |policy_updated_callback| when the error
|
| // is recovered from and may call |policy_error_callback| when new errors are
|
| // found.
|
| - //
|
| - // See |Create| method's description for comments about which thread will
|
| - // be used to run the callbacks.
|
| virtual void StartWatching(
|
| const PolicyUpdatedCallback& policy_updated_callback,
|
| const PolicyErrorCallback& policy_error_callback);
|
|
|
| - // Should be called after StartWatching() before the object is deleted. Calls
|
| - // should wait for |stopped_callback| to be called before deleting it.
|
| - virtual void StopWatching(const base::Closure& stopped_callback);
|
| -
|
| // Specify a |policy_service| to borrow (on Chrome OS, from the browser
|
| // process) or specify nullptr to internally construct and use a new
|
| - // PolicyService (on other OS-es).
|
| + // PolicyService (on other OS-es). PolicyWatcher must be used on the thread on
|
| + // which it is created. |policy_service| is called on the same thread.
|
| //
|
| - // When |policy_service| is null, then |task_runner| is used for reading the
|
| - // policy from files / registry / preferences. PolicyUpdatedCallback and
|
| - // PolicyErrorCallback will be called on the same |task_runner|.
|
| - // |task_runner| should be of TYPE_IO type.
|
| + // When |policy_service| is null, then |file_task_runner| is used for reading
|
| + // the policy from files / registry / preferences (which are blocking
|
| + // operations). |file_task_runner| should be of TYPE_IO type.
|
| //
|
| - // When |policy_service| is specified then |task_runner| argument is ignored
|
| - // and 1) BrowserThread::UI is used for PolicyUpdatedCallback and
|
| + // When |policy_service| is specified then |file_task_runner| argument is
|
| + // ignored and 1) BrowserThread::UI is used for PolicyUpdatedCallback and
|
| // PolicyErrorCallback and 2) BrowserThread::FILE is used for reading the
|
| // policy from files / registry / preferences (although (2) is just an
|
| // implementation detail and should likely be ignored outside of
|
| // PolicyWatcher).
|
| static scoped_ptr<PolicyWatcher> Create(
|
| policy::PolicyService* policy_service,
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& file_task_runner);
|
|
|
| private:
|
| friend class PolicyWatcherTest;
|
|
|
| - // Used to check if the class is on the right thread.
|
| - bool OnPolicyServiceThread() const;
|
| -
|
| // Takes the policy dictionary from the OS specific store and extracts the
|
| // relevant policies.
|
| void UpdatePolicies(const base::DictionaryValue* new_policy);
|
| @@ -113,8 +102,6 @@ class PolicyWatcher : public policy::PolicyService::Observer {
|
| // to call |policy_service_| methods and where we expect to get callbacks
|
| // from |policy_service_|.
|
| PolicyWatcher(
|
| - const scoped_refptr<base::SingleThreadTaskRunner>&
|
| - policy_service_task_runner,
|
| policy::PolicyService* policy_service,
|
| scoped_ptr<policy::PolicyService> owned_policy_service,
|
| scoped_ptr<policy::ConfigurationPolicyProvider> owned_policy_provider,
|
| @@ -126,8 +113,6 @@ class PolicyWatcher : public policy::PolicyService::Observer {
|
| // |policy_service_task_runner| is passed through to the constructor of
|
| // PolicyWatcher.
|
| static scoped_ptr<PolicyWatcher> CreateFromPolicyLoader(
|
| - const scoped_refptr<base::SingleThreadTaskRunner>&
|
| - policy_service_task_runner,
|
| scoped_ptr<policy::AsyncPolicyLoader> async_policy_loader);
|
|
|
| // PolicyService::Observer interface.
|
| @@ -136,10 +121,6 @@ class PolicyWatcher : public policy::PolicyService::Observer {
|
| const policy::PolicyMap& current) override;
|
| void OnPolicyServiceInitialized(policy::PolicyDomain domain) override;
|
|
|
| - void StopWatchingOnPolicyServiceThread();
|
| -
|
| - scoped_refptr<base::SingleThreadTaskRunner> policy_service_task_runner_;
|
| -
|
| PolicyUpdatedCallback policy_updated_callback_;
|
| PolicyErrorCallback policy_error_callback_;
|
| int transient_policy_error_retry_counter_;
|
|
|