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.h | |
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.h')
-rw-r--r-- | ipc/ipc_test_base.h | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/ipc/ipc_test_base.h b/ipc/ipc_test_base.h index c304001..ff34945 100644 --- a/ipc/ipc_test_base.h +++ b/ipc/ipc_test_base.h @@ -33,11 +33,17 @@ class IPCTestBase : public base::MultiProcessTest { IPCTestBase(); virtual ~IPCTestBase(); - virtual void SetUp() OVERRIDE; virtual void TearDown() OVERRIDE; - // Initializes the test to use the given client. + // Initializes the test to use the given client and creates an IO message loop + // on the current thread. void Init(const std::string& test_client_name); + // Some tests create separate thread for IO message loop and run non-IO + // message loop on the main thread. As IPCTestBase creates IO message loop by + // default, such tests need to provide a custom message loop for the main + // thread. + void InitWithCustomMessageLoop(const std::string& test_client_name, + scoped_ptr<base::MessageLoop> message_loop); // Creates a channel with the given listener and connects to the channel // (returning true if successful), respectively. Use these to use a channel @@ -89,16 +95,6 @@ class IPCTestBase : public base::MultiProcessTest { const base::ProcessHandle& client_process() const { return client_process_; } scoped_refptr<base::TaskRunner> task_runner(); - // Some tests creates separate thread for IO message loop and Run - // non-IO message loop on the main thread. As IPCTestBase creates IO - // message loop by default, such tests might want to replace it with - // non-IO one using set_message_loop(). - // - // The replacement should be done at the beginning of the test. - // You should be careful not to replace "live" message loop that has - // started running. - void set_message_loop(scoped_ptr<base::MessageLoop> loop); - private: std::string test_client_name_; scoped_ptr<base::MessageLoop> message_loop_; |