Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1420)

Unified Diff: mojo/public/cpp/bindings/tests/connector_unittest.cc

Issue 1552983003: Fix a bunch of mojo_public_*_unittests with the new EDK. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/cpp/bindings/tests/connector_unittest.cc
diff --git a/mojo/public/cpp/bindings/tests/connector_unittest.cc b/mojo/public/cpp/bindings/tests/connector_unittest.cc
index 96bb89fde55f9c21a0fa76e583f9791bde176a4c..6669764d0cd3dca165e65bec3f8e03e9b9176af8 100644
--- a/mojo/public/cpp/bindings/tests/connector_unittest.cc
+++ b/mojo/public/cpp/bindings/tests/connector_unittest.cc
@@ -10,6 +10,7 @@
#include <utility>
#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "mojo/message_pump/message_pump_mojo.h"
#include "mojo/public/cpp/bindings/lib/message_builder.h"
#include "mojo/public/cpp/bindings/tests/message_queue.h"
@@ -23,9 +24,14 @@ namespace {
class MessageAccumulator : public MessageReceiver {
public:
MessageAccumulator() {}
+ explicit MessageAccumulator(const base::Closure& closure)
+ : closure_(closure) {}
bool Accept(Message* message) override {
queue_.Push(message);
+ if (!closure_.is_null())
+ closure_.Run();
+ closure_.Reset();
return true;
}
@@ -33,8 +39,13 @@ class MessageAccumulator : public MessageReceiver {
void Pop(Message* message) { queue_.Pop(message); }
+ void set_closure(const base::Closure& closure) {
+ closure_ = closure;
+ }
+
private:
MessageQueue queue_;
+ base::Closure closure_;
};
class ConnectorDeletingMessageAccumulator : public MessageAccumulator {
@@ -92,8 +103,6 @@ class ConnectorTest : public testing::Test {
builder.message()->MoveTo(message);
}
- void PumpMessages() { loop_.RunUntilIdle(); }
-
protected:
ScopedMessagePipeHandle handle0_;
ScopedMessagePipeHandle handle1_;
@@ -115,10 +124,11 @@ TEST_F(ConnectorTest, Basic) {
connector0.Accept(&message);
- MessageAccumulator accumulator;
+ base::RunLoop run_loop;
+ MessageAccumulator accumulator(run_loop.QuitClosure());
connector1.set_incoming_receiver(&accumulator);
- PumpMessages();
+ run_loop.Run();
ASSERT_FALSE(accumulator.IsEmpty());
@@ -164,7 +174,8 @@ TEST_F(ConnectorTest, Basic_EarlyIncomingReceiver) {
internal::Connector connector1(std::move(handle1_),
internal::Connector::SINGLE_THREADED_SEND);
- MessageAccumulator accumulator;
+ base::RunLoop run_loop;
+ MessageAccumulator accumulator(run_loop.QuitClosure());
connector1.set_incoming_receiver(&accumulator);
const char kText[] = "hello world";
@@ -174,7 +185,7 @@ TEST_F(ConnectorTest, Basic_EarlyIncomingReceiver) {
connector0.Accept(&message);
- PumpMessages();
+ run_loop.Run();
ASSERT_FALSE(accumulator.IsEmpty());
@@ -204,9 +215,12 @@ TEST_F(ConnectorTest, Basic_TwoMessages) {
MessageAccumulator accumulator;
connector1.set_incoming_receiver(&accumulator);
- PumpMessages();
-
for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) {
+ if (accumulator.IsEmpty()) {
+ base::RunLoop run_loop;
+ accumulator.set_closure(run_loop.QuitClosure());
+ run_loop.Run();
+ }
ASSERT_FALSE(accumulator.IsEmpty());
Message message_received;
@@ -273,7 +287,9 @@ TEST_F(ConnectorTest, WriteToClosedPipe) {
EXPECT_FALSE(connector0.encountered_error());
// Spin the message loop, and then we should start observing the closed pipe.
- PumpMessages();
+ base::RunLoop run_loop;
+ connector0.set_connection_error_handler(run_loop.QuitClosure());
+ run_loop.Run();
EXPECT_TRUE(connector0.encountered_error());
}
@@ -297,10 +313,11 @@ TEST_F(ConnectorTest, MessageWithHandles) {
// The message should have been transferred, releasing the handles.
EXPECT_TRUE(message1.handles()->empty());
- MessageAccumulator accumulator;
+ base::RunLoop run_loop;
+ MessageAccumulator accumulator(run_loop.QuitClosure());
connector1.set_incoming_receiver(&accumulator);
- PumpMessages();
+ run_loop.Run();
ASSERT_FALSE(accumulator.IsEmpty());
@@ -329,12 +346,14 @@ TEST_F(ConnectorTest, MessageWithHandles) {
AllocMessage(kText, &message2);
connector_received.Accept(&message2);
- connector_original.set_incoming_receiver(&accumulator);
- PumpMessages();
+ base::RunLoop run_loop2;
+ MessageAccumulator accumulator2(run_loop2.QuitClosure());
+ connector_original.set_incoming_receiver(&accumulator2);
+ run_loop2.Run();
- ASSERT_FALSE(accumulator.IsEmpty());
+ ASSERT_FALSE(accumulator2.IsEmpty());
- accumulator.Pop(&message_received);
+ accumulator2.Pop(&message_received);
EXPECT_EQ(
std::string(kText),
@@ -396,9 +415,12 @@ TEST_F(ConnectorTest, WaitForIncomingMessageWithReentrancy) {
ReentrantMessageAccumulator accumulator(&connector1);
connector1.set_incoming_receiver(&accumulator);
- PumpMessages();
-
for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) {
+ if (accumulator.IsEmpty()) {
+ base::RunLoop run_loop;
+ accumulator.set_closure(run_loop.QuitClosure());
+ run_loop.Run();
+ }
ASSERT_FALSE(accumulator.IsEmpty());
Message message_received;
@@ -413,17 +435,24 @@ TEST_F(ConnectorTest, WaitForIncomingMessageWithReentrancy) {
}
TEST_F(ConnectorTest, RaiseError) {
+ base::RunLoop run_loop, run_loop2;
internal::Connector connector0(std::move(handle0_),
internal::Connector::SINGLE_THREADED_SEND);
bool error_handler_called0 = false;
connector0.set_connection_error_handler(
- [&error_handler_called0]() { error_handler_called0 = true; });
+ [&error_handler_called0, &run_loop]() {
+ error_handler_called0 = true;
+ run_loop.Quit();
+ });
internal::Connector connector1(std::move(handle1_),
internal::Connector::SINGLE_THREADED_SEND);
bool error_handler_called1 = false;
connector1.set_connection_error_handler(
- [&error_handler_called1]() { error_handler_called1 = true; });
+ [&error_handler_called1, &run_loop2]() {
+ error_handler_called1 = true;
+ run_loop2.Quit();
+ });
const char kText[] = "hello world";
@@ -433,10 +462,11 @@ TEST_F(ConnectorTest, RaiseError) {
connector0.Accept(&message);
connector0.RaiseError();
- MessageAccumulator accumulator;
+ base::RunLoop run_loop3;
+ MessageAccumulator accumulator(run_loop3.QuitClosure());
connector1.set_incoming_receiver(&accumulator);
- PumpMessages();
+ run_loop3.Run();
// Messages sent prior to RaiseError() still arrive at the other end.
ASSERT_FALSE(accumulator.IsEmpty());
@@ -448,7 +478,8 @@ TEST_F(ConnectorTest, RaiseError) {
std::string(kText),
std::string(reinterpret_cast<const char*>(message_received.payload())));
- PumpMessages();
+ run_loop.Run();
+ run_loop2.Run();
// Connection error handler is called at both sides.
EXPECT_TRUE(error_handler_called0);
« no previous file with comments | « mojo/public/cpp/bindings/tests/binding_unittest.cc ('k') | mojo/public/cpp/bindings/tests/handle_passing_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698