Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / remoting / host / policy_hack / policy_watcher.h
index 0ced8f2..109a110 100644 (file)
@@ -8,6 +8,7 @@
 #include "base/callback.h"
 #include "base/memory/weak_ptr.h"
 #include "base/values.h"
+#include "components/policy/core/common/policy_service.h"
 
 namespace base {
 class SingleThreadTaskRunner;
@@ -38,12 +39,15 @@ class PolicyWatcher {
   virtual void StartWatching(const PolicyCallback& policy_callback);
 
   // Should be called after StartWatching() before the object is deleted. Calls
-  // just wait for |done| to be signaled before deleting the object.
-  virtual void StopWatching(base::WaitableEvent* done);
-
-  // Implemented by each platform.  This message loop should be an IO message
-  // loop.
-  static PolicyWatcher* Create(
+  // should wait for |stopped_callback| to be called before deleting it.
+  virtual void StopWatching(const base::Closure& stopped_callback);
+
+  // Implemented by each platform.  |task_runner| should be an IO message loop.
+  // |policy_service| is currently only used on ChromeOS.  The caller must
+  // ensure that |policy_service| remains valid for the lifetime of
+  // PolicyWatcher.
+  static scoped_ptr<PolicyWatcher> Create(
+      policy::PolicyService* policy_service,
       scoped_refptr<base::SingleThreadTaskRunner> task_runner);
 
   // The name of the NAT traversal policy.
@@ -107,6 +111,7 @@ class PolicyWatcher {
   const base::DictionaryValue& Defaults() const;
 
  private:
+  void StopWatchingOnPolicyWatcherThread();
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
 
   PolicyCallback policy_callback_;