| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stdint.h> | 5 #include <stdint.h> |
| 6 #include <stdio.h> | 6 #include <stdio.h> |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); | 683 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 684 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 684 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 685 EXPECT_STREQ(kHello, read_buffer); | 685 EXPECT_STREQ(kHello, read_buffer); |
| 686 EXPECT_EQ(1u, read_handles.size()); | 686 EXPECT_EQ(1u, read_handles.size()); |
| 687 EXPECT_EQ(1u, read_num_handles); | 687 EXPECT_EQ(1u, read_num_handles); |
| 688 ASSERT_TRUE(read_handles[0]); | 688 ASSERT_TRUE(read_handles[0]); |
| 689 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); | 689 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); |
| 690 | 690 |
| 691 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, | 691 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, |
| 692 read_handles[0].dispatcher->GetType()); | 692 read_handles[0].dispatcher->GetType()); |
| 693 // TODO(vtl): Also check the rights here once they're actually preserved. | 693 EXPECT_EQ(MessagePipeDispatcher::kDefaultHandleRights, |
| 694 read_handles[0].rights); |
| 694 dispatcher = RefPtr<MessagePipeDispatcher>( | 695 dispatcher = RefPtr<MessagePipeDispatcher>( |
| 695 static_cast<MessagePipeDispatcher*>(read_handles[0].dispatcher.get())); | 696 static_cast<MessagePipeDispatcher*>(read_handles[0].dispatcher.get())); |
| 696 | 697 |
| 697 // Add the waiter now, before it becomes readable to avoid a race. | 698 // Add the waiter now, before it becomes readable to avoid a race. |
| 698 waiter.Init(); | 699 waiter.Init(); |
| 699 ASSERT_EQ(MOJO_RESULT_OK, | 700 ASSERT_EQ(MOJO_RESULT_OK, |
| 700 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 456, | 701 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 456, |
| 701 nullptr)); | 702 nullptr)); |
| 702 | 703 |
| 703 // Write to "local_mp", port 1. | 704 // Write to "local_mp", port 1. |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 872 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); | 873 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 873 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 874 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 874 EXPECT_STREQ(kHello, read_buffer); | 875 EXPECT_STREQ(kHello, read_buffer); |
| 875 EXPECT_EQ(1u, read_handles.size()); | 876 EXPECT_EQ(1u, read_handles.size()); |
| 876 EXPECT_EQ(1u, read_num_handles); | 877 EXPECT_EQ(1u, read_num_handles); |
| 877 ASSERT_TRUE(read_handles[0]); | 878 ASSERT_TRUE(read_handles[0]); |
| 878 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); | 879 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); |
| 879 | 880 |
| 880 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, | 881 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, |
| 881 read_handles[0].dispatcher->GetType()); | 882 read_handles[0].dispatcher->GetType()); |
| 882 // TODO(vtl): Also check the rights here once they're actually preserved. | 883 EXPECT_EQ(MessagePipeDispatcher::kDefaultHandleRights, |
| 884 read_handles[0].rights); |
| 883 dispatcher = RefPtr<MessagePipeDispatcher>( | 885 dispatcher = RefPtr<MessagePipeDispatcher>( |
| 884 static_cast<MessagePipeDispatcher*>(read_handles[0].dispatcher.get())); | 886 static_cast<MessagePipeDispatcher*>(read_handles[0].dispatcher.get())); |
| 885 | 887 |
| 886 // |dispatcher| should already be readable and not writable. | 888 // |dispatcher| should already be readable and not writable. |
| 887 hss = dispatcher->GetHandleSignalsState(); | 889 hss = dispatcher->GetHandleSignalsState(); |
| 888 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 890 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 889 hss.satisfied_signals); | 891 hss.satisfied_signals); |
| 890 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 892 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 891 hss.satisfiable_signals); | 893 hss.satisfiable_signals); |
| 892 // So read from it. | 894 // So read from it. |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1005 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); | 1007 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 1006 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 1008 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 1007 EXPECT_STREQ(kHello, read_buffer); | 1009 EXPECT_STREQ(kHello, read_buffer); |
| 1008 EXPECT_EQ(1u, read_handles.size()); | 1010 EXPECT_EQ(1u, read_handles.size()); |
| 1009 EXPECT_EQ(1u, read_num_handles); | 1011 EXPECT_EQ(1u, read_num_handles); |
| 1010 ASSERT_TRUE(read_handles[0]); | 1012 ASSERT_TRUE(read_handles[0]); |
| 1011 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); | 1013 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); |
| 1012 | 1014 |
| 1013 EXPECT_EQ(Dispatcher::Type::SHARED_BUFFER, | 1015 EXPECT_EQ(Dispatcher::Type::SHARED_BUFFER, |
| 1014 read_handles[0].dispatcher->GetType()); | 1016 read_handles[0].dispatcher->GetType()); |
| 1015 // TODO(vtl): Also check the rights here once they're actually preserved. | 1017 EXPECT_EQ(SharedBufferDispatcher::kDefaultHandleRights, |
| 1018 read_handles[0].rights); |
| 1016 dispatcher = RefPtr<SharedBufferDispatcher>( | 1019 dispatcher = RefPtr<SharedBufferDispatcher>( |
| 1017 static_cast<SharedBufferDispatcher*>(read_handles[0].dispatcher.get())); | 1020 static_cast<SharedBufferDispatcher*>(read_handles[0].dispatcher.get())); |
| 1018 | 1021 |
| 1019 // Make another mapping. | 1022 // Make another mapping. |
| 1020 std::unique_ptr<PlatformSharedBufferMapping> mapping1; | 1023 std::unique_ptr<PlatformSharedBufferMapping> mapping1; |
| 1021 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->MapBuffer( | 1024 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->MapBuffer( |
| 1022 0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping1)); | 1025 0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping1)); |
| 1023 ASSERT_TRUE(mapping1); | 1026 ASSERT_TRUE(mapping1); |
| 1024 ASSERT_TRUE(mapping1->GetBase()); | 1027 ASSERT_TRUE(mapping1->GetBase()); |
| 1025 ASSERT_EQ(100u, mapping1->GetLength()); | 1028 ASSERT_EQ(100u, mapping1->GetLength()); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1119 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); | 1122 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 1120 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); | 1123 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); |
| 1121 EXPECT_STREQ(kWorld, read_buffer); | 1124 EXPECT_STREQ(kWorld, read_buffer); |
| 1122 EXPECT_EQ(1u, read_handles.size()); | 1125 EXPECT_EQ(1u, read_handles.size()); |
| 1123 EXPECT_EQ(1u, read_num_handles); | 1126 EXPECT_EQ(1u, read_num_handles); |
| 1124 ASSERT_TRUE(read_handles[0]); | 1127 ASSERT_TRUE(read_handles[0]); |
| 1125 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); | 1128 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); |
| 1126 | 1129 |
| 1127 EXPECT_EQ(Dispatcher::Type::PLATFORM_HANDLE, | 1130 EXPECT_EQ(Dispatcher::Type::PLATFORM_HANDLE, |
| 1128 read_handles[0].dispatcher->GetType()); | 1131 read_handles[0].dispatcher->GetType()); |
| 1129 // TODO(vtl): Also check the rights here once they're actually preserved. | 1132 EXPECT_EQ(PlatformHandleDispatcher::kDefaultHandleRights, |
| 1133 read_handles[0].rights); |
| 1130 dispatcher = RefPtr<PlatformHandleDispatcher>( | 1134 dispatcher = RefPtr<PlatformHandleDispatcher>( |
| 1131 static_cast<PlatformHandleDispatcher*>(read_handles[0].dispatcher.get())); | 1135 static_cast<PlatformHandleDispatcher*>(read_handles[0].dispatcher.get())); |
| 1132 | 1136 |
| 1133 ScopedPlatformHandle h = dispatcher->PassPlatformHandle(); | 1137 ScopedPlatformHandle h = dispatcher->PassPlatformHandle(); |
| 1134 EXPECT_TRUE(h.is_valid()); | 1138 EXPECT_TRUE(h.is_valid()); |
| 1135 | 1139 |
| 1136 fp = FILEFromPlatformHandle(h.Pass(), "rb"); | 1140 fp = FILEFromPlatformHandle(h.Pass(), "rb"); |
| 1137 EXPECT_FALSE(h.is_valid()); | 1141 EXPECT_FALSE(h.is_valid()); |
| 1138 EXPECT_TRUE(fp); | 1142 EXPECT_TRUE(fp); |
| 1139 | 1143 |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1258 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); | 1262 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 1259 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 1263 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 1260 EXPECT_STREQ(kHello, read_buffer); | 1264 EXPECT_STREQ(kHello, read_buffer); |
| 1261 EXPECT_EQ(1u, read_handles.size()); | 1265 EXPECT_EQ(1u, read_handles.size()); |
| 1262 EXPECT_EQ(1u, read_num_handles); | 1266 EXPECT_EQ(1u, read_num_handles); |
| 1263 ASSERT_TRUE(read_handles[0]); | 1267 ASSERT_TRUE(read_handles[0]); |
| 1264 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); | 1268 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); |
| 1265 | 1269 |
| 1266 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, | 1270 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, |
| 1267 read_handles[0].dispatcher->GetType()); | 1271 read_handles[0].dispatcher->GetType()); |
| 1268 // TODO(vtl): Also check the rights here once they're actually preserved. | 1272 EXPECT_EQ(MessagePipeDispatcher::kDefaultHandleRights, |
| 1273 read_handles[0].rights); |
| 1269 handle = std::move(read_handles[0]); | 1274 handle = std::move(read_handles[0]); |
| 1270 read_handles.clear(); | 1275 read_handles.clear(); |
| 1271 | 1276 |
| 1272 // Now pass it back. | 1277 // Now pass it back. |
| 1273 | 1278 |
| 1274 // Prepare to wait on MP 0, port 0. (Add the waiter now. Otherwise, if we do | 1279 // Prepare to wait on MP 0, port 0. (Add the waiter now. Otherwise, if we do |
| 1275 // it later, it might already be readable.) | 1280 // it later, it might already be readable.) |
| 1276 waiter.Init(); | 1281 waiter.Init(); |
| 1277 ASSERT_EQ( | 1282 ASSERT_EQ( |
| 1278 MOJO_RESULT_OK, | 1283 MOJO_RESULT_OK, |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1317 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); | 1322 &read_num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 1318 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); | 1323 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); |
| 1319 EXPECT_STREQ(kWorld, read_buffer); | 1324 EXPECT_STREQ(kWorld, read_buffer); |
| 1320 EXPECT_EQ(1u, read_handles.size()); | 1325 EXPECT_EQ(1u, read_handles.size()); |
| 1321 EXPECT_EQ(1u, read_num_handles); | 1326 EXPECT_EQ(1u, read_num_handles); |
| 1322 ASSERT_TRUE(read_handles[0]); | 1327 ASSERT_TRUE(read_handles[0]); |
| 1323 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); | 1328 EXPECT_TRUE(read_handles[0].dispatcher->HasOneRef()); |
| 1324 | 1329 |
| 1325 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, | 1330 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, |
| 1326 read_handles[0].dispatcher->GetType()); | 1331 read_handles[0].dispatcher->GetType()); |
| 1327 // TODO(vtl): Also check the rights here once they're actually preserved. | 1332 EXPECT_EQ(MessagePipeDispatcher::kDefaultHandleRights, |
| 1333 read_handles[0].rights); |
| 1328 dispatcher = RefPtr<MessagePipeDispatcher>( | 1334 dispatcher = RefPtr<MessagePipeDispatcher>( |
| 1329 static_cast<MessagePipeDispatcher*>(read_handles[0].dispatcher.get())); | 1335 static_cast<MessagePipeDispatcher*>(read_handles[0].dispatcher.get())); |
| 1330 read_handles.clear(); | 1336 read_handles.clear(); |
| 1331 | 1337 |
| 1332 // Add the waiter now, before it becomes readable to avoid a race. | 1338 // Add the waiter now, before it becomes readable to avoid a race. |
| 1333 waiter.Init(); | 1339 waiter.Init(); |
| 1334 ASSERT_EQ(MOJO_RESULT_OK, | 1340 ASSERT_EQ(MOJO_RESULT_OK, |
| 1335 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789, | 1341 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789, |
| 1336 nullptr)); | 1342 nullptr)); |
| 1337 | 1343 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1401 mp0->Close(0); | 1407 mp0->Close(0); |
| 1402 mp1->Close(1); | 1408 mp1->Close(1); |
| 1403 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); | 1409 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); |
| 1404 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed. | 1410 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed. |
| 1405 local_mp->Close(1); | 1411 local_mp->Close(1); |
| 1406 } | 1412 } |
| 1407 | 1413 |
| 1408 } // namespace | 1414 } // namespace |
| 1409 } // namespace system | 1415 } // namespace system |
| 1410 } // namespace mojo | 1416 } // namespace mojo |
| OLD | NEW |