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

Unified Diff: mojo/edk/system/ipc_support_unittest.cc

Issue 1412283002: Convert mojo::system::Dispatcher to use our new refcounting stuff (instead of base's). (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: no change Created 5 years, 2 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
« no previous file with comments | « mojo/edk/system/ipc_support.cc ('k') | mojo/edk/system/message_in_transit.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/edk/system/ipc_support_unittest.cc
diff --git a/mojo/edk/system/ipc_support_unittest.cc b/mojo/edk/system/ipc_support_unittest.cc
index 838c4cef2ee8b074e651981c34c5ac96b6dc85f6..f3bbcf85f8b11024b4718a030434e62bd6f4e4cc 100644
--- a/mojo/edk/system/ipc_support_unittest.cc
+++ b/mojo/edk/system/ipc_support_unittest.cc
@@ -44,8 +44,8 @@ const char kConnectionIdFlag[] = "test-connection-id";
// Tests writing a message (containing just data) to |write_mp| and then reading
// it from |read_mp| (it should be the next message, i.e., there should be no
// other messages already enqueued in that direction).
-void TestWriteReadMessage(scoped_refptr<MessagePipeDispatcher> write_mp,
- scoped_refptr<MessagePipeDispatcher> read_mp) {
+void TestWriteReadMessage(MessagePipeDispatcher* write_mp,
+ MessagePipeDispatcher* read_mp) {
// Set up waiting on the read end first (to avoid racing).
Waiter waiter;
waiter.Init();
@@ -76,12 +76,12 @@ void TestWriteReadMessage(scoped_refptr<MessagePipeDispatcher> write_mp,
// Writes a message pipe dispatcher (in a message) to |write_mp| and reads it
// from |read_mp| (it should be the next message, i.e., there should be no other
// other messages already enqueued in that direction).
-scoped_refptr<MessagePipeDispatcher> SendMessagePipeDispatcher(
- scoped_refptr<MessagePipeDispatcher> write_mp,
- scoped_refptr<MessagePipeDispatcher> read_mp,
- scoped_refptr<MessagePipeDispatcher> mp_to_send) {
- CHECK_NE(mp_to_send, write_mp);
- CHECK_NE(mp_to_send, read_mp);
+RefPtr<MessagePipeDispatcher> SendMessagePipeDispatcher(
+ MessagePipeDispatcher* write_mp,
+ MessagePipeDispatcher* read_mp,
+ RefPtr<MessagePipeDispatcher>&& mp_to_send) {
+ CHECK_NE(mp_to_send.get(), write_mp);
+ CHECK_NE(mp_to_send.get(), read_mp);
// Set up waiting on the read end first (to avoid racing).
Waiter waiter;
@@ -100,6 +100,7 @@ scoped_refptr<MessagePipeDispatcher> SendMessagePipeDispatcher(
MOJO_WRITE_MESSAGE_FLAG_NONE),
MOJO_RESULT_OK);
transport.End();
+ mp_to_send = nullptr;
// Wait for it to arrive.
CHECK_EQ(waiter.Wait(test::ActionDeadline(), nullptr), MOJO_RESULT_OK);
@@ -115,7 +116,7 @@ scoped_refptr<MessagePipeDispatcher> SendMessagePipeDispatcher(
CHECK_EQ(dispatchers.size(), 1u);
CHECK_EQ(num_dispatchers, 1u);
CHECK_EQ(dispatchers[0]->GetType(), Dispatcher::Type::MESSAGE_PIPE);
- return scoped_refptr<MessagePipeDispatcher>(
+ return RefPtr<MessagePipeDispatcher>(
static_cast<MessagePipeDispatcher*>(dispatchers[0].get()));
}
@@ -172,14 +173,13 @@ class TestSlaveConnection {
// After this is called, |ShutdownChannelToSlave()| must be called (possibly
// after |WaitForChannelToSlave()|) before destruction.
- scoped_refptr<MessagePipeDispatcher> ConnectToSlave() {
+ RefPtr<MessagePipeDispatcher> ConnectToSlave() {
embedder::PlatformChannelPair channel_pair;
// Note: |ChannelId|s and |ProcessIdentifier|s are interchangeable.
- scoped_refptr<MessagePipeDispatcher> mp =
- master_ipc_support_->ConnectToSlave(
- connection_id_, nullptr, channel_pair.PassServerHandle(),
- base::Bind(&base::WaitableEvent::Signal, base::Unretained(&event_)),
- nullptr, &slave_id_);
+ RefPtr<MessagePipeDispatcher> mp = master_ipc_support_->ConnectToSlave(
+ connection_id_, nullptr, channel_pair.PassServerHandle(),
+ base::Bind(&base::WaitableEvent::Signal, base::Unretained(&event_)),
+ nullptr, &slave_id_);
EXPECT_TRUE(mp);
EXPECT_NE(slave_id_, kInvalidProcessIdentifier);
EXPECT_NE(slave_id_, kMasterProcessIdentifier);
@@ -213,7 +213,7 @@ class TestSlaveConnection {
IPCSupport* const master_ipc_support_;
const ConnectionIdentifier connection_id_;
// The master's message pipe dispatcher.
- scoped_refptr<MessagePipeDispatcher> message_pipe_;
+ RefPtr<MessagePipeDispatcher> message_pipe_;
ProcessIdentifier slave_id_;
base::WaitableEvent event_;
embedder::ScopedPlatformHandle slave_platform_handle_;
@@ -241,14 +241,13 @@ class TestSlave {
// After this is called, |ShutdownChannelToMaster()| must be called (possibly
// after |WaitForChannelToMaster()|) before destruction.
- scoped_refptr<MessagePipeDispatcher> ConnectToMaster(
+ RefPtr<MessagePipeDispatcher> ConnectToMaster(
const ConnectionIdentifier& connection_id) {
ProcessIdentifier master_id = kInvalidProcessIdentifier;
- scoped_refptr<MessagePipeDispatcher> mp =
- slave_ipc_support_.ConnectToMaster(
- connection_id,
- base::Bind(&base::WaitableEvent::Signal, base::Unretained(&event_)),
- nullptr, &master_id);
+ RefPtr<MessagePipeDispatcher> mp = slave_ipc_support_.ConnectToMaster(
+ connection_id,
+ base::Bind(&base::WaitableEvent::Signal, base::Unretained(&event_)),
+ nullptr, &master_id);
EXPECT_TRUE(mp);
EXPECT_EQ(kMasterProcessIdentifier, master_id);
return mp;
@@ -314,15 +313,15 @@ class TestSlaveSetup {
}
void TestConnection() {
- TestWriteReadMessage(master_mp_, slave_mp_);
- TestWriteReadMessage(slave_mp_, master_mp_);
+ TestWriteReadMessage(master_mp_.get(), slave_mp_.get());
+ TestWriteReadMessage(slave_mp_.get(), master_mp_.get());
}
- scoped_refptr<MessagePipeDispatcher> PassMasterMessagePipe() {
+ RefPtr<MessagePipeDispatcher> PassMasterMessagePipe() {
return master_mp_.Pass();
}
- scoped_refptr<MessagePipeDispatcher> PassSlaveMessagePipe() {
+ RefPtr<MessagePipeDispatcher> PassSlaveMessagePipe() {
return slave_mp_.Pass();
}
@@ -360,10 +359,10 @@ class TestSlaveSetup {
IPCSupport* const master_ipc_support_;
std::unique_ptr<TestSlaveConnection> slave_connection_;
- scoped_refptr<MessagePipeDispatcher> master_mp_;
+ RefPtr<MessagePipeDispatcher> master_mp_;
std::unique_ptr<TestSlave> slave_;
- scoped_refptr<MessagePipeDispatcher> slave_mp_;
+ RefPtr<MessagePipeDispatcher> slave_mp_;
MOJO_DISALLOW_COPY_AND_ASSIGN(TestSlaveSetup);
};
@@ -416,8 +415,7 @@ class IPCSupportTest : public testing::Test {
};
using MessagePipeDispatcherPair =
- std::pair<scoped_refptr<MessagePipeDispatcher>,
- scoped_refptr<MessagePipeDispatcher>>;
+ std::pair<RefPtr<MessagePipeDispatcher>, RefPtr<MessagePipeDispatcher>>;
MessagePipeDispatcherPair CreateMessagePipe() {
MessagePipeDispatcherPair rv;
rv.first = MessagePipeDispatcher::Create(
@@ -467,15 +465,14 @@ TEST_F(IPCSupportTest, ConnectTwoSlaves) {
// Make a message pipe (logically "in" the master) and send one end to each
// slave.
MessagePipeDispatcherPair send_mp = CreateMessagePipe();
- scoped_refptr<MessagePipeDispatcher> slave1_received_mp =
- SendMessagePipeDispatcher(s1->master_mp(), s1->slave_mp(), send_mp.first);
- scoped_refptr<MessagePipeDispatcher> slave2_received_mp =
- SendMessagePipeDispatcher(s2->master_mp(), s2->slave_mp(),
- send_mp.second);
+ RefPtr<MessagePipeDispatcher> slave1_received_mp = SendMessagePipeDispatcher(
+ s1->master_mp(), s1->slave_mp(), std::move(send_mp.first));
+ RefPtr<MessagePipeDispatcher> slave2_received_mp = SendMessagePipeDispatcher(
+ s2->master_mp(), s2->slave_mp(), std::move(send_mp.second));
// These should be connected.
- TestWriteReadMessage(slave1_received_mp, slave2_received_mp);
- TestWriteReadMessage(slave2_received_mp, slave1_received_mp);
+ TestWriteReadMessage(slave1_received_mp.get(), slave2_received_mp.get());
+ TestWriteReadMessage(slave2_received_mp.get(), slave1_received_mp.get());
s1->PassMasterMessagePipe()->Close();
s2->PassMasterMessagePipe()->Close();
@@ -483,8 +480,8 @@ TEST_F(IPCSupportTest, ConnectTwoSlaves) {
s2->PassSlaveMessagePipe()->Close();
// They should still be connected.
- TestWriteReadMessage(slave1_received_mp, slave2_received_mp);
- TestWriteReadMessage(slave2_received_mp, slave1_received_mp);
+ TestWriteReadMessage(slave1_received_mp.get(), slave2_received_mp.get());
+ TestWriteReadMessage(slave2_received_mp.get(), slave1_received_mp.get());
slave1_received_mp->Close();
slave2_received_mp->Close();
@@ -503,37 +500,33 @@ TEST_F(IPCSupportTest, ConnectTwoSlavesTwice) {
s2->TestConnection();
MessagePipeDispatcherPair send_mp1 = CreateMessagePipe();
- scoped_refptr<MessagePipeDispatcher> slave1_received_mp1 =
- SendMessagePipeDispatcher(s1->master_mp(), s1->slave_mp(),
- send_mp1.first);
- scoped_refptr<MessagePipeDispatcher> slave2_received_mp1 =
- SendMessagePipeDispatcher(s2->master_mp(), s2->slave_mp(),
- send_mp1.second);
+ RefPtr<MessagePipeDispatcher> slave1_received_mp1 = SendMessagePipeDispatcher(
+ s1->master_mp(), s1->slave_mp(), std::move(send_mp1.first));
+ RefPtr<MessagePipeDispatcher> slave2_received_mp1 = SendMessagePipeDispatcher(
+ s2->master_mp(), s2->slave_mp(), std::move(send_mp1.second));
MessagePipeDispatcherPair send_mp2 = CreateMessagePipe();
- scoped_refptr<MessagePipeDispatcher> slave1_received_mp2 =
- SendMessagePipeDispatcher(s1->master_mp(), s1->slave_mp(),
- send_mp2.first);
- scoped_refptr<MessagePipeDispatcher> slave2_received_mp2 =
- SendMessagePipeDispatcher(s2->master_mp(), s2->slave_mp(),
- send_mp2.second);
+ RefPtr<MessagePipeDispatcher> slave1_received_mp2 = SendMessagePipeDispatcher(
+ s1->master_mp(), s1->slave_mp(), std::move(send_mp2.first));
+ RefPtr<MessagePipeDispatcher> slave2_received_mp2 = SendMessagePipeDispatcher(
+ s2->master_mp(), s2->slave_mp(), std::move(send_mp2.second));
s1->PassMasterMessagePipe()->Close();
s2->PassMasterMessagePipe()->Close();
s1->PassSlaveMessagePipe()->Close();
s2->PassSlaveMessagePipe()->Close();
- TestWriteReadMessage(slave1_received_mp1, slave2_received_mp1);
- TestWriteReadMessage(slave2_received_mp1, slave1_received_mp1);
+ TestWriteReadMessage(slave1_received_mp1.get(), slave2_received_mp1.get());
+ TestWriteReadMessage(slave2_received_mp1.get(), slave1_received_mp1.get());
- TestWriteReadMessage(slave1_received_mp2, slave2_received_mp2);
- TestWriteReadMessage(slave2_received_mp2, slave1_received_mp2);
+ TestWriteReadMessage(slave1_received_mp2.get(), slave2_received_mp2.get());
+ TestWriteReadMessage(slave2_received_mp2.get(), slave1_received_mp2.get());
slave1_received_mp1->Close();
slave2_received_mp1->Close();
- TestWriteReadMessage(slave1_received_mp2, slave2_received_mp2);
- TestWriteReadMessage(slave2_received_mp2, slave1_received_mp2);
+ TestWriteReadMessage(slave1_received_mp2.get(), slave2_received_mp2.get());
+ TestWriteReadMessage(slave2_received_mp2.get(), slave1_received_mp2.get());
slave1_received_mp2->Close();
slave2_received_mp2->Close();
@@ -554,27 +547,27 @@ TEST_F(IPCSupportTest, SlavePassBackToMaster) {
// Make a message pipe (logically "in" the slave) and send both ends
// (separately) to the master.
MessagePipeDispatcherPair send_mp = CreateMessagePipe();
- scoped_refptr<MessagePipeDispatcher> received_mp1 =
- SendMessagePipeDispatcher(s->slave_mp(), s->master_mp(), send_mp.first);
+ RefPtr<MessagePipeDispatcher> received_mp1 = SendMessagePipeDispatcher(
+ s->slave_mp(), s->master_mp(), std::move(send_mp.first));
- TestWriteReadMessage(received_mp1, send_mp.second);
- TestWriteReadMessage(send_mp.second, received_mp1);
+ TestWriteReadMessage(received_mp1.get(), send_mp.second.get());
+ TestWriteReadMessage(send_mp.second.get(), received_mp1.get());
- scoped_refptr<MessagePipeDispatcher> received_mp2 =
- SendMessagePipeDispatcher(s->slave_mp(), s->master_mp(), send_mp.second);
+ RefPtr<MessagePipeDispatcher> received_mp2 = SendMessagePipeDispatcher(
+ s->slave_mp(), s->master_mp(), std::move(send_mp.second));
s->PassMasterMessagePipe()->Close();
s->PassSlaveMessagePipe()->Close();
- TestWriteReadMessage(received_mp1, received_mp2);
- TestWriteReadMessage(received_mp2, received_mp1);
+ TestWriteReadMessage(received_mp1.get(), received_mp2.get());
+ TestWriteReadMessage(received_mp2.get(), received_mp1.get());
s->Shutdown();
// These should still be connected.
// TODO(vtl): This is not yet implemented, thus will fail here!
- // TestWriteReadMessage(received_mp1, received_mp2);
- // TestWriteReadMessage(received_mp2, received_mp1);
+ // TestWriteReadMessage(received_mp1.get(), received_mp2.get());
+ // TestWriteReadMessage(received_mp2.get(), received_mp1.get());
received_mp1->Close();
received_mp2->Close();
« no previous file with comments | « mojo/edk/system/ipc_support.cc ('k') | mojo/edk/system/message_in_transit.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698