Index: mojo/public/tests/bindings_connector_unittest.cc |
diff --git a/mojo/public/tests/bindings_connector_unittest.cc b/mojo/public/tests/bindings_connector_unittest.cc |
index 71c1a564e26641a279ebbd7ef1c0b5448abea53b..654a027819e5578c1470065266a01bf2982d0ea6 100644 |
--- a/mojo/public/tests/bindings_connector_unittest.cc |
+++ b/mojo/public/tests/bindings_connector_unittest.cc |
@@ -172,7 +172,6 @@ TEST_F(BindingsConnectorTest, WriteToClosedPipe) { |
EXPECT_TRUE(connector0.EncounteredError()); |
} |
-#if 0 |
// Enable this test once MojoWriteMessage supports passing handles. |
TEST_F(BindingsConnectorTest, MessageWithHandles) { |
Connector connector0(handle0_); |
@@ -186,12 +185,10 @@ TEST_F(BindingsConnectorTest, MessageWithHandles) { |
Handle handles[2]; |
CreateMessagePipe(&handles[0], &handles[1]); |
message.handles.push_back(handles[0]); |
- message.handles.push_back(handles[1]); |
connector0.Accept(&message); |
- // The message should have been transferred. |
- EXPECT_TRUE(message.data == NULL); |
+ // The message should have been transferred, releasing the handles. |
EXPECT_TRUE(message.handles.empty()); |
MessageAccumulator accumulator; |
@@ -207,11 +204,27 @@ TEST_F(BindingsConnectorTest, MessageWithHandles) { |
EXPECT_EQ(std::string(kText), |
std::string( |
reinterpret_cast<char*>(message_received.data->payload))); |
- ASSERT_EQ(2U, message_received.handles.size()); |
- EXPECT_EQ(handles[0].value, message_received.handles[0].value); |
- EXPECT_EQ(handles[1].value, message_received.handles[1].value); |
+ ASSERT_EQ(1U, message_received.handles.size()); |
+ |
+ // Now send a message to the transferred handle and confirm it's sent through |
+ // to the orginal pipe. |
+ Connector connector_received(message_received.handles[0]); |
+ Connector connector_original(handles[1]); |
+ |
+ AllocMessage(kText, &message); |
+ |
+ connector_received.Accept(&message); |
+ connector_original.SetIncomingReceiver(&accumulator); |
+ PumpMessages(); |
+ |
+ ASSERT_FALSE(accumulator.IsEmpty()); |
+ |
+ accumulator.Pop(&message_received); |
+ |
+ EXPECT_EQ(std::string(kText), |
+ std::string( |
+ reinterpret_cast<char*>(message_received.data->payload))); |
} |
-#endif |
} // namespace test |
} // namespace mojo |