Index: components/nacl/loader/nacl_trusted_listener.cc |
diff --git a/components/nacl/loader/nacl_trusted_listener.cc b/components/nacl/loader/nacl_trusted_listener.cc |
index 5f6410a83f0f14632fe05166d209d17b07ed7a3c..3912f051c95ce99eb4674c883246090d4c94eee6 100644 |
--- a/components/nacl/loader/nacl_trusted_listener.cc |
+++ b/components/nacl/loader/nacl_trusted_listener.cc |
@@ -6,17 +6,27 @@ |
#include "base/single_thread_task_runner.h" |
+namespace { |
+ |
+NaClTrustedListener* g_trusted_listener; |
+ |
+} // namespace |
+ |
NaClTrustedListener::NaClTrustedListener( |
const IPC::ChannelHandle& handle, |
- base::SingleThreadTaskRunner* ipc_task_runner) { |
+ base::SingleThreadTaskRunner* ipc_task_runner) |
+ : ipc_task_runner_(ipc_task_runner), |
+ waitable_event_(true, false) { |
channel_proxy_ = IPC::ChannelProxy::Create( |
handle, |
IPC::Channel::MODE_SERVER, |
this, |
ipc_task_runner).Pass(); |
+ g_trusted_listener = this; |
} |
NaClTrustedListener::~NaClTrustedListener() { |
+ g_trusted_listener = NULL; |
} |
#if defined(OS_POSIX) |
@@ -36,3 +46,19 @@ void NaClTrustedListener::OnChannelError() { |
bool NaClTrustedListener::Send(IPC::Message* msg) { |
return channel_proxy_->Send(msg); |
} |
+ |
+bool NaClTrustedListener::FlushIpcTaskRunner(const base::TimeDelta& time) { |
+ waitable_event_.Reset(); |
dmichael (off chromium)
2014/07/30 20:18:52
Note, if there's ever a second caller to this meth
|
+ ipc_task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&NaClTrustedListener::SignalIpcTaskRunnerFlushed, this)); |
+ return waitable_event_.TimedWait(time); |
+} |
+ |
+void NaClTrustedListener::SignalIpcTaskRunnerFlushed() { |
+ waitable_event_.Signal(); |
+} |
+ |
+NaClTrustedListener* NaClTrustedListener::Get() { |
+ return g_trusted_listener; |
+} |