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 |