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(); |