Index: remoting/host/policy_hack/policy_watcher.cc |
diff --git a/remoting/host/policy_hack/policy_watcher.cc b/remoting/host/policy_hack/policy_watcher.cc |
index 8e30c241ae98da24b25d1da2d87a6db6c3dabfcd..e603cf5032459caaea20f88d40671df5d4aaa0cc 100644 |
--- a/remoting/host/policy_hack/policy_watcher.cc |
+++ b/remoting/host/policy_hack/policy_watcher.cc |
@@ -12,6 +12,7 @@ |
#include "base/location.h" |
#include "base/memory/weak_ptr.h" |
#include "base/single_thread_task_runner.h" |
+#include "base/synchronization/waitable_event.h" |
#include "base/time/time.h" |
#include "base/values.h" |
#include "remoting/host/dns_blackhole_checker.h" |
@@ -164,17 +165,19 @@ |
StartWatchingInternal(); |
} |
-void PolicyWatcher::StopWatching(const base::Closure& stopped_callback) { |
- task_runner_->PostTaskAndReply( |
- FROM_HERE, base::Bind(&PolicyWatcher::StopWatchingOnPolicyWatcherThread, |
- base::Unretained(this)), |
- stopped_callback); |
-} |
- |
-void PolicyWatcher::StopWatchingOnPolicyWatcherThread() { |
+void PolicyWatcher::StopWatching(base::WaitableEvent* done) { |
+ if (!OnPolicyWatcherThread()) { |
+ task_runner_->PostTask(FROM_HERE, |
+ base::Bind(&PolicyWatcher::StopWatching, |
+ base::Unretained(this), done)); |
+ return; |
+ } |
+ |
StopWatchingInternal(); |
weak_factory_.InvalidateWeakPtrs(); |
policy_callback_.Reset(); |
+ |
+ done->Signal(); |
} |
void PolicyWatcher::ScheduleFallbackReloadTask() { |