| 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 <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 mp1->ReadMessage(1, UserPointer<void>(read_buffer), | 667 mp1->ReadMessage(1, UserPointer<void>(read_buffer), |
| 668 MakeUserPointer(&read_buffer_size), &read_dispatchers, | 668 MakeUserPointer(&read_buffer_size), &read_dispatchers, |
| 669 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); | 669 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 670 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 670 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 671 EXPECT_STREQ(kHello, read_buffer); | 671 EXPECT_STREQ(kHello, read_buffer); |
| 672 EXPECT_EQ(1u, read_dispatchers.size()); | 672 EXPECT_EQ(1u, read_dispatchers.size()); |
| 673 EXPECT_EQ(1u, read_num_dispatchers); | 673 EXPECT_EQ(1u, read_num_dispatchers); |
| 674 ASSERT_TRUE(read_dispatchers[0]); | 674 ASSERT_TRUE(read_dispatchers[0]); |
| 675 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); | 675 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); |
| 676 | 676 |
| 677 EXPECT_EQ(Dispatcher::kTypeMessagePipe, read_dispatchers[0]->GetType()); | 677 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, read_dispatchers[0]->GetType()); |
| 678 dispatcher = static_cast<MessagePipeDispatcher*>(read_dispatchers[0].get()); | 678 dispatcher = static_cast<MessagePipeDispatcher*>(read_dispatchers[0].get()); |
| 679 | 679 |
| 680 // Add the waiter now, before it becomes readable to avoid a race. | 680 // Add the waiter now, before it becomes readable to avoid a race. |
| 681 waiter.Init(); | 681 waiter.Init(); |
| 682 ASSERT_EQ(MOJO_RESULT_OK, | 682 ASSERT_EQ(MOJO_RESULT_OK, |
| 683 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 456, | 683 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 456, |
| 684 nullptr)); | 684 nullptr)); |
| 685 | 685 |
| 686 // Write to "local_mp", port 1. | 686 // Write to "local_mp", port 1. |
| 687 EXPECT_EQ( | 687 EXPECT_EQ( |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 mp1->ReadMessage(1, UserPointer<void>(read_buffer), | 841 mp1->ReadMessage(1, UserPointer<void>(read_buffer), |
| 842 MakeUserPointer(&read_buffer_size), &read_dispatchers, | 842 MakeUserPointer(&read_buffer_size), &read_dispatchers, |
| 843 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); | 843 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 844 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 844 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 845 EXPECT_STREQ(kHello, read_buffer); | 845 EXPECT_STREQ(kHello, read_buffer); |
| 846 EXPECT_EQ(1u, read_dispatchers.size()); | 846 EXPECT_EQ(1u, read_dispatchers.size()); |
| 847 EXPECT_EQ(1u, read_num_dispatchers); | 847 EXPECT_EQ(1u, read_num_dispatchers); |
| 848 ASSERT_TRUE(read_dispatchers[0]); | 848 ASSERT_TRUE(read_dispatchers[0]); |
| 849 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); | 849 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); |
| 850 | 850 |
| 851 EXPECT_EQ(Dispatcher::kTypeMessagePipe, read_dispatchers[0]->GetType()); | 851 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, read_dispatchers[0]->GetType()); |
| 852 dispatcher = static_cast<MessagePipeDispatcher*>(read_dispatchers[0].get()); | 852 dispatcher = static_cast<MessagePipeDispatcher*>(read_dispatchers[0].get()); |
| 853 | 853 |
| 854 // |dispatcher| should already be readable and not writable. | 854 // |dispatcher| should already be readable and not writable. |
| 855 hss = dispatcher->GetHandleSignalsState(); | 855 hss = dispatcher->GetHandleSignalsState(); |
| 856 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 856 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 857 hss.satisfied_signals); | 857 hss.satisfied_signals); |
| 858 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 858 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 859 hss.satisfiable_signals); | 859 hss.satisfiable_signals); |
| 860 // So read from it. | 860 // So read from it. |
| 861 memset(read_buffer, 0, sizeof(read_buffer)); | 861 memset(read_buffer, 0, sizeof(read_buffer)); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 975 mp1->ReadMessage(1, UserPointer<void>(read_buffer), | 975 mp1->ReadMessage(1, UserPointer<void>(read_buffer), |
| 976 MakeUserPointer(&read_buffer_size), &read_dispatchers, | 976 MakeUserPointer(&read_buffer_size), &read_dispatchers, |
| 977 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); | 977 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 978 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 978 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 979 EXPECT_STREQ(kHello, read_buffer); | 979 EXPECT_STREQ(kHello, read_buffer); |
| 980 EXPECT_EQ(1u, read_dispatchers.size()); | 980 EXPECT_EQ(1u, read_dispatchers.size()); |
| 981 EXPECT_EQ(1u, read_num_dispatchers); | 981 EXPECT_EQ(1u, read_num_dispatchers); |
| 982 ASSERT_TRUE(read_dispatchers[0]); | 982 ASSERT_TRUE(read_dispatchers[0]); |
| 983 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); | 983 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); |
| 984 | 984 |
| 985 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, read_dispatchers[0]->GetType()); | 985 EXPECT_EQ(Dispatcher::Type::SHARED_BUFFER, read_dispatchers[0]->GetType()); |
| 986 dispatcher = static_cast<SharedBufferDispatcher*>(read_dispatchers[0].get()); | 986 dispatcher = static_cast<SharedBufferDispatcher*>(read_dispatchers[0].get()); |
| 987 | 987 |
| 988 // Make another mapping. | 988 // Make another mapping. |
| 989 scoped_ptr<embedder::PlatformSharedBufferMapping> mapping1; | 989 scoped_ptr<embedder::PlatformSharedBufferMapping> mapping1; |
| 990 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->MapBuffer( | 990 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->MapBuffer( |
| 991 0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping1)); | 991 0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping1)); |
| 992 ASSERT_TRUE(mapping1); | 992 ASSERT_TRUE(mapping1); |
| 993 ASSERT_TRUE(mapping1->GetBase()); | 993 ASSERT_TRUE(mapping1->GetBase()); |
| 994 ASSERT_EQ(100u, mapping1->GetLength()); | 994 ASSERT_EQ(100u, mapping1->GetLength()); |
| 995 EXPECT_NE(mapping1->GetBase(), mapping0->GetBase()); | 995 EXPECT_NE(mapping1->GetBase(), mapping0->GetBase()); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1094 mp1->ReadMessage(1, UserPointer<void>(read_buffer), | 1094 mp1->ReadMessage(1, UserPointer<void>(read_buffer), |
| 1095 MakeUserPointer(&read_buffer_size), &read_dispatchers, | 1095 MakeUserPointer(&read_buffer_size), &read_dispatchers, |
| 1096 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); | 1096 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 1097 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); | 1097 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); |
| 1098 EXPECT_STREQ(kWorld, read_buffer); | 1098 EXPECT_STREQ(kWorld, read_buffer); |
| 1099 EXPECT_EQ(1u, read_dispatchers.size()); | 1099 EXPECT_EQ(1u, read_dispatchers.size()); |
| 1100 EXPECT_EQ(1u, read_num_dispatchers); | 1100 EXPECT_EQ(1u, read_num_dispatchers); |
| 1101 ASSERT_TRUE(read_dispatchers[0]); | 1101 ASSERT_TRUE(read_dispatchers[0]); |
| 1102 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); | 1102 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); |
| 1103 | 1103 |
| 1104 EXPECT_EQ(Dispatcher::kTypePlatformHandle, read_dispatchers[0]->GetType()); | 1104 EXPECT_EQ(Dispatcher::Type::PLATFORM_HANDLE, read_dispatchers[0]->GetType()); |
| 1105 dispatcher = | 1105 dispatcher = |
| 1106 static_cast<PlatformHandleDispatcher*>(read_dispatchers[0].get()); | 1106 static_cast<PlatformHandleDispatcher*>(read_dispatchers[0].get()); |
| 1107 | 1107 |
| 1108 embedder::ScopedPlatformHandle h = dispatcher->PassPlatformHandle().Pass(); | 1108 embedder::ScopedPlatformHandle h = dispatcher->PassPlatformHandle().Pass(); |
| 1109 EXPECT_TRUE(h.is_valid()); | 1109 EXPECT_TRUE(h.is_valid()); |
| 1110 | 1110 |
| 1111 fp = mojo::test::FILEFromPlatformHandle(h.Pass(), "rb").Pass(); | 1111 fp = mojo::test::FILEFromPlatformHandle(h.Pass(), "rb").Pass(); |
| 1112 EXPECT_FALSE(h.is_valid()); | 1112 EXPECT_FALSE(h.is_valid()); |
| 1113 EXPECT_TRUE(fp); | 1113 EXPECT_TRUE(fp); |
| 1114 | 1114 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1231 mp1->ReadMessage(1, UserPointer<void>(read_buffer), | 1231 mp1->ReadMessage(1, UserPointer<void>(read_buffer), |
| 1232 MakeUserPointer(&read_buffer_size), &read_dispatchers, | 1232 MakeUserPointer(&read_buffer_size), &read_dispatchers, |
| 1233 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); | 1233 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 1234 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 1234 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 1235 EXPECT_STREQ(kHello, read_buffer); | 1235 EXPECT_STREQ(kHello, read_buffer); |
| 1236 EXPECT_EQ(1u, read_dispatchers.size()); | 1236 EXPECT_EQ(1u, read_dispatchers.size()); |
| 1237 EXPECT_EQ(1u, read_num_dispatchers); | 1237 EXPECT_EQ(1u, read_num_dispatchers); |
| 1238 ASSERT_TRUE(read_dispatchers[0]); | 1238 ASSERT_TRUE(read_dispatchers[0]); |
| 1239 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); | 1239 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); |
| 1240 | 1240 |
| 1241 EXPECT_EQ(Dispatcher::kTypeMessagePipe, read_dispatchers[0]->GetType()); | 1241 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, read_dispatchers[0]->GetType()); |
| 1242 dispatcher = static_cast<MessagePipeDispatcher*>(read_dispatchers[0].get()); | 1242 dispatcher = static_cast<MessagePipeDispatcher*>(read_dispatchers[0].get()); |
| 1243 read_dispatchers.clear(); | 1243 read_dispatchers.clear(); |
| 1244 | 1244 |
| 1245 // Now pass it back. | 1245 // Now pass it back. |
| 1246 | 1246 |
| 1247 // Prepare to wait on MP 0, port 0. (Add the waiter now. Otherwise, if we do | 1247 // Prepare to wait on MP 0, port 0. (Add the waiter now. Otherwise, if we do |
| 1248 // it later, it might already be readable.) | 1248 // it later, it might already be readable.) |
| 1249 waiter.Init(); | 1249 waiter.Init(); |
| 1250 ASSERT_EQ( | 1250 ASSERT_EQ( |
| 1251 MOJO_RESULT_OK, | 1251 MOJO_RESULT_OK, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1288 mp0->ReadMessage(0, UserPointer<void>(read_buffer), | 1288 mp0->ReadMessage(0, UserPointer<void>(read_buffer), |
| 1289 MakeUserPointer(&read_buffer_size), &read_dispatchers, | 1289 MakeUserPointer(&read_buffer_size), &read_dispatchers, |
| 1290 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); | 1290 &read_num_dispatchers, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 1291 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); | 1291 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); |
| 1292 EXPECT_STREQ(kWorld, read_buffer); | 1292 EXPECT_STREQ(kWorld, read_buffer); |
| 1293 EXPECT_EQ(1u, read_dispatchers.size()); | 1293 EXPECT_EQ(1u, read_dispatchers.size()); |
| 1294 EXPECT_EQ(1u, read_num_dispatchers); | 1294 EXPECT_EQ(1u, read_num_dispatchers); |
| 1295 ASSERT_TRUE(read_dispatchers[0]); | 1295 ASSERT_TRUE(read_dispatchers[0]); |
| 1296 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); | 1296 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); |
| 1297 | 1297 |
| 1298 EXPECT_EQ(Dispatcher::kTypeMessagePipe, read_dispatchers[0]->GetType()); | 1298 EXPECT_EQ(Dispatcher::Type::MESSAGE_PIPE, read_dispatchers[0]->GetType()); |
| 1299 dispatcher = static_cast<MessagePipeDispatcher*>(read_dispatchers[0].get()); | 1299 dispatcher = static_cast<MessagePipeDispatcher*>(read_dispatchers[0].get()); |
| 1300 read_dispatchers.clear(); | 1300 read_dispatchers.clear(); |
| 1301 | 1301 |
| 1302 // Add the waiter now, before it becomes readable to avoid a race. | 1302 // Add the waiter now, before it becomes readable to avoid a race. |
| 1303 waiter.Init(); | 1303 waiter.Init(); |
| 1304 ASSERT_EQ(MOJO_RESULT_OK, | 1304 ASSERT_EQ(MOJO_RESULT_OK, |
| 1305 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789, | 1305 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789, |
| 1306 nullptr)); | 1306 nullptr)); |
| 1307 | 1307 |
| 1308 // Write to "local_mp", port 1. | 1308 // Write to "local_mp", port 1. |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1367 mp0->Close(0); | 1367 mp0->Close(0); |
| 1368 mp1->Close(1); | 1368 mp1->Close(1); |
| 1369 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); | 1369 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); |
| 1370 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed. | 1370 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed. |
| 1371 local_mp->Close(1); | 1371 local_mp->Close(1); |
| 1372 } | 1372 } |
| 1373 | 1373 |
| 1374 } // namespace | 1374 } // namespace |
| 1375 } // namespace system | 1375 } // namespace system |
| 1376 } // namespace mojo | 1376 } // namespace mojo |
| OLD | NEW |