diff options
Diffstat (limited to 'chrome/renderer/render_process_unittest.cc')
-rw-r--r-- | chrome/renderer/render_process_unittest.cc | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/chrome/renderer/render_process_unittest.cc b/chrome/renderer/render_process_unittest.cc index 848b53b..c787e44 100644 --- a/chrome/renderer/render_process_unittest.cc +++ b/chrome/renderer/render_process_unittest.cc @@ -10,19 +10,32 @@ namespace { +static const wchar_t kThreadName[] = L"render_process_unittest"; + class RenderProcessTest : public testing::Test { public: virtual void SetUp() { - render_process_.reset(new RenderProcess(L"render_process_unittest")); + // Need a MODE_SERVER to make MODE_CLIENTs (like a RenderThread) happy. + channel_ = new IPC::Channel(kThreadName, IPC::Channel::MODE_SERVER, NULL); + render_process_.reset(new RenderProcess(kThreadName)); } virtual void TearDown() { + message_loop_.RunAllPending(); render_process_.reset(); - } + // Need to fully destruct IPC::SyncChannel before the message loop goes + // away. + message_loop_.RunAllPending(); + // Delete the server channel after the RenderThread so that + // IPC::SyncChannel's OnChannelError doesn't fire on the context and attempt + // to use the listener thread which is now gone. + delete channel_; + } - private: - MessageLoopForIO message_loop_; - scoped_ptr<RenderProcess> render_process_; + private: + MessageLoopForIO message_loop_; + scoped_ptr<RenderProcess> render_process_; + IPC::Channel *channel_; }; |