Chromium Code Reviews| 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; |
| +} |