diff options
author | yzshen <yzshen@chromium.org> | 2014-09-04 21:42:58 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-05 04:44:52 +0000 |
commit | 22796d8d5fd362111b7aa431d229aa2ffc91aedd (patch) | |
tree | d1934a4f2520463e124b0b1757819d3ca43c7fa7 /ipc/ipc_test_base.cc | |
parent | a7ae647d8f23b07f89cb6b1e67e095d457e94337 (diff) | |
download | chromium_src-22796d8d5fd362111b7aa431d229aa2ffc91aedd.zip chromium_src-22796d8d5fd362111b7aa431d229aa2ffc91aedd.tar.gz chromium_src-22796d8d5fd362111b7aa431d229aa2ffc91aedd.tar.bz2 |
Fix a DCHECK violation in ipc_perftests
We only allow one MessageLoop instance alive at any given time on a thread. If
we use IPCTestBase::set_message_loop(), we need to do it in two steps: first set
the message loop to NULL, and then set it to a newly-created message loop.
Therefore, I changed the interface of IPCTestBase to make it a little
more friendly.
BUG=None
TEST=ipc_perftests should not crash in debug build.
Review URL: https://codereview.chromium.org/538593002
Cr-Commit-Position: refs/heads/master@{#293439}
Diffstat (limited to 'ipc/ipc_test_base.cc')
-rw-r--r-- | ipc/ipc_test_base.cc | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/ipc/ipc_test_base.cc b/ipc/ipc_test_base.cc index 7adb1a4..80ddd2d 100644 --- a/ipc/ipc_test_base.cc +++ b/ipc/ipc_test_base.cc @@ -29,24 +29,26 @@ IPCTestBase::IPCTestBase() IPCTestBase::~IPCTestBase() { } -void IPCTestBase::SetUp() { - MultiProcessTest::SetUp(); - - // Construct a fresh Message loop for the duration of each test. - DCHECK(!message_loop_.get()); - message_loop_.reset(new base::MessageLoopForIO()); -} - void IPCTestBase::TearDown() { - DCHECK(message_loop_.get()); message_loop_.reset(); MultiProcessTest::TearDown(); } void IPCTestBase::Init(const std::string& test_client_name) { + InitWithCustomMessageLoop( + test_client_name, + scoped_ptr<base::MessageLoop>(new base::MessageLoopForIO())); +} + +void IPCTestBase::InitWithCustomMessageLoop( + const std::string& test_client_name, + scoped_ptr<base::MessageLoop> message_loop) { DCHECK(!test_client_name.empty()); DCHECK(test_client_name_.empty()); + DCHECK(!message_loop_); + test_client_name_ = test_client_name; + message_loop_ = message_loop.Pass(); } void IPCTestBase::CreateChannel(IPC::Listener* listener) { @@ -133,7 +135,3 @@ bool IPCTestBase::WaitForClientShutdown() { scoped_refptr<base::TaskRunner> IPCTestBase::task_runner() { return message_loop_->message_loop_proxy(); } - -void IPCTestBase::set_message_loop(scoped_ptr<base::MessageLoop> loop) { - message_loop_ = loop.Pass(); -} |