OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "mojo/edk/system/core.h" | 5 #include "mojo/edk/system/core.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <limits> | 9 #include <limits> |
10 | 10 |
11 #include "mojo/edk/platform/thread_utils.h" | 11 #include "mojo/edk/platform/thread_utils.h" |
12 #include "mojo/edk/system/awakable.h" | 12 #include "mojo/edk/system/awakable.h" |
13 #include "mojo/edk/system/core_test_base.h" | 13 #include "mojo/edk/system/core_test_base.h" |
14 #include "mojo/edk/system/test/timeouts.h" | 14 #include "mojo/edk/system/test/timeouts.h" |
15 #include "mojo/public/cpp/system/macros.h" | 15 #include "mojo/public/cpp/system/macros.h" |
16 | 16 |
17 using mojo::platform::ThreadSleep; | 17 using mojo::platform::ThreadSleep; |
18 | 18 |
19 namespace mojo { | 19 namespace mojo { |
20 namespace system { | 20 namespace system { |
21 namespace { | 21 namespace { |
22 | 22 |
| 23 const MojoHandleRights kDefaultMessagePipeHandleRights = |
| 24 MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ | |
| 25 MOJO_HANDLE_RIGHT_WRITE | MOJO_HANDLE_RIGHT_GET_OPTIONS | |
| 26 MOJO_HANDLE_RIGHT_SET_OPTIONS; |
| 27 const MojoHandleRights kDefaultDataPipeProducerHandleRights = |
| 28 MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_WRITE | |
| 29 MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS; |
| 30 const MojoHandleRights kDefaultDataPipeConsumerHandleRights = |
| 31 MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ | |
| 32 MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS; |
| 33 |
23 const MojoHandleSignalsState kEmptyMojoHandleSignalsState = {0u, 0u}; | 34 const MojoHandleSignalsState kEmptyMojoHandleSignalsState = {0u, 0u}; |
24 const MojoHandleSignalsState kFullMojoHandleSignalsState = {~0u, ~0u}; | 35 const MojoHandleSignalsState kFullMojoHandleSignalsState = {~0u, ~0u}; |
25 | 36 |
26 using CoreTest = test::CoreTestBase; | 37 using CoreTest = test::CoreTestBase; |
27 | 38 |
28 TEST_F(CoreTest, GetTimeTicksNow) { | 39 TEST_F(CoreTest, GetTimeTicksNow) { |
29 const MojoTimeTicks start = core()->GetTimeTicksNow(); | 40 const MojoTimeTicks start = core()->GetTimeTicksNow(); |
30 EXPECT_NE(static_cast<MojoTimeTicks>(0), start) | 41 EXPECT_NE(static_cast<MojoTimeTicks>(0), start) |
31 << "GetTimeTicksNow should return nonzero value"; | 42 << "GetTimeTicksNow should return nonzero value"; |
32 ThreadSleep(test::DeadlineFromMilliseconds(15u)); | 43 ThreadSleep(test::DeadlineFromMilliseconds(15u)); |
33 const MojoTimeTicks finish = core()->GetTimeTicksNow(); | 44 const MojoTimeTicks finish = core()->GetTimeTicksNow(); |
34 // Allow for some fuzz in sleep. | 45 // Allow for some fuzz in sleep. |
35 EXPECT_GE((finish - start), static_cast<MojoTimeTicks>(8000)) | 46 EXPECT_GE((finish - start), static_cast<MojoTimeTicks>(8000)) |
36 << "Sleeping should result in increasing time ticks"; | 47 << "Sleeping should result in increasing time ticks"; |
37 } | 48 } |
38 | 49 |
39 TEST_F(CoreTest, Basic) { | 50 TEST_F(CoreTest, Basic) { |
40 MockHandleInfo info; | 51 MockHandleInfo info; |
41 | 52 |
42 EXPECT_EQ(0u, info.GetCtorCallCount()); | 53 EXPECT_EQ(0u, info.GetCtorCallCount()); |
43 MojoHandle h = CreateMockHandle(&info); | 54 MojoHandle h = CreateMockHandle(&info); |
44 EXPECT_EQ(1u, info.GetCtorCallCount()); | 55 EXPECT_EQ(1u, info.GetCtorCallCount()); |
45 EXPECT_NE(h, MOJO_HANDLE_INVALID); | 56 EXPECT_NE(h, MOJO_HANDLE_INVALID); |
46 | 57 |
47 MojoHandleRights rights = 0; | 58 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
48 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(h, MakeUserPointer(&rights))); | 59 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(h, MakeUserPointer(&rights))); |
49 EXPECT_EQ(kDefaultMockHandleRights, rights); | 60 EXPECT_EQ(kDefaultMockHandleRights, rights); |
50 | 61 |
51 EXPECT_EQ(0u, info.GetWriteMessageCallCount()); | 62 EXPECT_EQ(0u, info.GetWriteMessageCallCount()); |
52 EXPECT_EQ(MOJO_RESULT_OK, | 63 EXPECT_EQ(MOJO_RESULT_OK, |
53 core()->WriteMessage(h, NullUserPointer(), 0, NullUserPointer(), 0, | 64 core()->WriteMessage(h, NullUserPointer(), 0, NullUserPointer(), 0, |
54 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 65 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
55 EXPECT_EQ(1u, info.GetWriteMessageCallCount()); | 66 EXPECT_EQ(1u, info.GetWriteMessageCallCount()); |
56 | 67 |
57 EXPECT_EQ(0u, info.GetReadMessageCallCount()); | 68 EXPECT_EQ(0u, info.GetReadMessageCallCount()); |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 MockHandleInfo info; | 214 MockHandleInfo info; |
204 MojoHandle h = CreateMockHandle(&info); | 215 MojoHandle h = CreateMockHandle(&info); |
205 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); | 216 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); |
206 EXPECT_EQ(1u, info.GetCloseCallCount()); | 217 EXPECT_EQ(1u, info.GetCloseCallCount()); |
207 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(h)); | 218 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(h)); |
208 EXPECT_EQ(1u, info.GetCloseCallCount()); | 219 EXPECT_EQ(1u, info.GetCloseCallCount()); |
209 } | 220 } |
210 | 221 |
211 // |GetRights()|: | 222 // |GetRights()|: |
212 { | 223 { |
213 MojoHandleRights rights = 0; | 224 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
214 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 225 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
215 core()->GetRights(MOJO_HANDLE_INVALID, MakeUserPointer(&rights))); | 226 core()->GetRights(MOJO_HANDLE_INVALID, MakeUserPointer(&rights))); |
216 EXPECT_EQ(0u, rights); | 227 EXPECT_EQ(0u, rights); |
217 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 228 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
218 core()->GetRights(10, MakeUserPointer(&rights))); | 229 core()->GetRights(10, MakeUserPointer(&rights))); |
219 EXPECT_EQ(0u, rights); | 230 EXPECT_EQ(0u, rights); |
220 } | 231 } |
221 | 232 |
222 // |Wait()|: | 233 // |Wait()|: |
223 { | 234 { |
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 | 674 |
664 EXPECT_EQ(MOJO_RESULT_OK, | 675 EXPECT_EQ(MOJO_RESULT_OK, |
665 core()->CreateMessagePipe(NullUserPointer(), MakeUserPointer(&h[0]), | 676 core()->CreateMessagePipe(NullUserPointer(), MakeUserPointer(&h[0]), |
666 MakeUserPointer(&h[1]))); | 677 MakeUserPointer(&h[1]))); |
667 // Should get two distinct, valid handles. | 678 // Should get two distinct, valid handles. |
668 EXPECT_NE(h[0], MOJO_HANDLE_INVALID); | 679 EXPECT_NE(h[0], MOJO_HANDLE_INVALID); |
669 EXPECT_NE(h[1], MOJO_HANDLE_INVALID); | 680 EXPECT_NE(h[1], MOJO_HANDLE_INVALID); |
670 EXPECT_NE(h[0], h[1]); | 681 EXPECT_NE(h[0], h[1]); |
671 | 682 |
672 // Both should have the correct rights. | 683 // Both should have the correct rights. |
673 static const MojoHandleRights kMessagePipeHandleRights = | |
674 MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ | | |
675 MOJO_HANDLE_RIGHT_WRITE | MOJO_HANDLE_RIGHT_GET_OPTIONS | | |
676 MOJO_HANDLE_RIGHT_SET_OPTIONS; | |
677 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; | 684 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
678 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(h[0], MakeUserPointer(&rights))); | 685 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(h[0], MakeUserPointer(&rights))); |
679 EXPECT_EQ(kMessagePipeHandleRights, rights); | 686 EXPECT_EQ(kDefaultMessagePipeHandleRights, rights); |
680 rights = MOJO_HANDLE_RIGHT_NONE; | 687 rights = MOJO_HANDLE_RIGHT_NONE; |
681 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(h[1], MakeUserPointer(&rights))); | 688 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(h[1], MakeUserPointer(&rights))); |
682 EXPECT_EQ(kMessagePipeHandleRights, rights); | 689 EXPECT_EQ(kDefaultMessagePipeHandleRights, rights); |
683 | 690 |
684 // Neither should be readable. | 691 // Neither should be readable. |
685 MojoHandleSignals signals[2] = {MOJO_HANDLE_SIGNAL_READABLE, | 692 MojoHandleSignals signals[2] = {MOJO_HANDLE_SIGNAL_READABLE, |
686 MOJO_HANDLE_SIGNAL_READABLE}; | 693 MOJO_HANDLE_SIGNAL_READABLE}; |
687 result_index = static_cast<uint32_t>(-1); | 694 result_index = static_cast<uint32_t>(-1); |
688 hss[0] = kEmptyMojoHandleSignalsState; | 695 hss[0] = kEmptyMojoHandleSignalsState; |
689 hss[1] = kEmptyMojoHandleSignalsState; | 696 hss[1] = kEmptyMojoHandleSignalsState; |
690 EXPECT_EQ( | 697 EXPECT_EQ( |
691 MOJO_RESULT_DEADLINE_EXCEEDED, | 698 MOJO_RESULT_DEADLINE_EXCEEDED, |
692 core()->WaitMany(MakeUserPointer(h), MakeUserPointer(signals), 2, 0, | 699 core()->WaitMany(MakeUserPointer(h), MakeUserPointer(signals), 2, 0, |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
974 EXPECT_NE(h_received, h_passing[1]); | 981 EXPECT_NE(h_received, h_passing[1]); |
975 EXPECT_NE(h_received, h_passed[0]); | 982 EXPECT_NE(h_received, h_passed[0]); |
976 | 983 |
977 // Note: We rely on the Mojo system not re-using handle values very often. | 984 // Note: We rely on the Mojo system not re-using handle values very often. |
978 EXPECT_NE(h_received, h_passed[1]); | 985 EXPECT_NE(h_received, h_passed[1]); |
979 | 986 |
980 // |h_passed[1]| should no longer be valid; check that trying to close it | 987 // |h_passed[1]| should no longer be valid; check that trying to close it |
981 // fails. See above note. | 988 // fails. See above note. |
982 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(h_passed[1])); | 989 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(h_passed[1])); |
983 | 990 |
| 991 // Check that |h_received| still has the expected rights. |
| 992 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
| 993 EXPECT_EQ(MOJO_RESULT_OK, |
| 994 core()->GetRights(h_received, MakeUserPointer(&rights))); |
| 995 EXPECT_EQ(kDefaultMessagePipeHandleRights, rights); |
| 996 |
984 // Write to |h_passed[0]|. Should receive on |h_received|. | 997 // Write to |h_passed[0]|. Should receive on |h_received|. |
985 EXPECT_EQ(MOJO_RESULT_OK, | 998 EXPECT_EQ(MOJO_RESULT_OK, |
986 core()->WriteMessage(h_passed[0], UserPointer<const void>(kHello), | 999 core()->WriteMessage(h_passed[0], UserPointer<const void>(kHello), |
987 kHelloSize, NullUserPointer(), 0, | 1000 kHelloSize, NullUserPointer(), 0, |
988 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 1001 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
989 hss = kEmptyMojoHandleSignalsState; | 1002 hss = kEmptyMojoHandleSignalsState; |
990 EXPECT_EQ(MOJO_RESULT_OK, | 1003 EXPECT_EQ(MOJO_RESULT_OK, |
991 core()->Wait(h_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, | 1004 core()->Wait(h_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
992 MakeUserPointer(&hss))); | 1005 MakeUserPointer(&hss))); |
993 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 1006 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
(...skipping 26 matching lines...) Expand all Loading... |
1020 | 1033 |
1021 EXPECT_EQ(MOJO_RESULT_OK, | 1034 EXPECT_EQ(MOJO_RESULT_OK, |
1022 core()->CreateDataPipe(NullUserPointer(), MakeUserPointer(&ph), | 1035 core()->CreateDataPipe(NullUserPointer(), MakeUserPointer(&ph), |
1023 MakeUserPointer(&ch))); | 1036 MakeUserPointer(&ch))); |
1024 // Should get two distinct, valid handles. | 1037 // Should get two distinct, valid handles. |
1025 EXPECT_NE(ph, MOJO_HANDLE_INVALID); | 1038 EXPECT_NE(ph, MOJO_HANDLE_INVALID); |
1026 EXPECT_NE(ch, MOJO_HANDLE_INVALID); | 1039 EXPECT_NE(ch, MOJO_HANDLE_INVALID); |
1027 EXPECT_NE(ph, ch); | 1040 EXPECT_NE(ph, ch); |
1028 | 1041 |
1029 // Both should have the correct rights. | 1042 // Both should have the correct rights. |
1030 static const MojoHandleRights kDataPipeProducerHandleRights = | |
1031 MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_WRITE | | |
1032 MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS; | |
1033 static const MojoHandleRights kDataPipeConsumerHandleRights = | |
1034 MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ | | |
1035 MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS; | |
1036 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; | 1043 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
1037 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(ph, MakeUserPointer(&rights))); | 1044 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(ph, MakeUserPointer(&rights))); |
1038 EXPECT_EQ(kDataPipeProducerHandleRights, rights); | 1045 EXPECT_EQ(kDefaultDataPipeProducerHandleRights, rights); |
1039 rights = MOJO_HANDLE_RIGHT_NONE; | 1046 rights = MOJO_HANDLE_RIGHT_NONE; |
1040 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(ch, MakeUserPointer(&rights))); | 1047 EXPECT_EQ(MOJO_RESULT_OK, core()->GetRights(ch, MakeUserPointer(&rights))); |
1041 EXPECT_EQ(kDataPipeConsumerHandleRights, rights); | 1048 EXPECT_EQ(kDefaultDataPipeConsumerHandleRights, rights); |
1042 | 1049 |
1043 // Producer should be never-readable, but already writable. | 1050 // Producer should be never-readable, but already writable. |
1044 hss = kEmptyMojoHandleSignalsState; | 1051 hss = kEmptyMojoHandleSignalsState; |
1045 EXPECT_EQ( | 1052 EXPECT_EQ( |
1046 MOJO_RESULT_FAILED_PRECONDITION, | 1053 MOJO_RESULT_FAILED_PRECONDITION, |
1047 core()->Wait(ph, MOJO_HANDLE_SIGNAL_READABLE, 0, MakeUserPointer(&hss))); | 1054 core()->Wait(ph, MOJO_HANDLE_SIGNAL_READABLE, 0, MakeUserPointer(&hss))); |
1048 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, | 1055 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, |
1049 hss.satisfied_signals); | 1056 hss.satisfied_signals); |
1050 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | | 1057 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | |
1051 MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, | 1058 MOJO_HANDLE_SIGNAL_WRITE_THRESHOLD, |
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1457 EXPECT_NE(ch_received, h_passing[1]); | 1464 EXPECT_NE(ch_received, h_passing[1]); |
1458 EXPECT_NE(ch_received, ph); | 1465 EXPECT_NE(ch_received, ph); |
1459 | 1466 |
1460 // Note: We rely on the Mojo system not re-using handle values very often. | 1467 // Note: We rely on the Mojo system not re-using handle values very often. |
1461 EXPECT_NE(ch_received, ch); | 1468 EXPECT_NE(ch_received, ch); |
1462 | 1469 |
1463 // |ch| should no longer be valid; check that trying to close it fails. See | 1470 // |ch| should no longer be valid; check that trying to close it fails. See |
1464 // above note. | 1471 // above note. |
1465 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(ch)); | 1472 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(ch)); |
1466 | 1473 |
| 1474 // Check that |ch_received| still has the expected rights. |
| 1475 MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
| 1476 EXPECT_EQ(MOJO_RESULT_OK, |
| 1477 core()->GetRights(ch_received, MakeUserPointer(&rights))); |
| 1478 EXPECT_EQ(kDefaultDataPipeConsumerHandleRights, rights); |
| 1479 |
1467 // Write to |ph|. Should receive on |ch_received|. | 1480 // Write to |ph|. Should receive on |ch_received|. |
1468 num_bytes = kWorldSize; | 1481 num_bytes = kWorldSize; |
1469 EXPECT_EQ(MOJO_RESULT_OK, | 1482 EXPECT_EQ(MOJO_RESULT_OK, |
1470 core()->WriteData(ph, UserPointer<const void>(kWorld), | 1483 core()->WriteData(ph, UserPointer<const void>(kWorld), |
1471 MakeUserPointer(&num_bytes), | 1484 MakeUserPointer(&num_bytes), |
1472 MOJO_WRITE_DATA_FLAG_ALL_OR_NONE)); | 1485 MOJO_WRITE_DATA_FLAG_ALL_OR_NONE)); |
1473 hss = kEmptyMojoHandleSignalsState; | 1486 hss = kEmptyMojoHandleSignalsState; |
1474 EXPECT_EQ(MOJO_RESULT_OK, | 1487 EXPECT_EQ(MOJO_RESULT_OK, |
1475 core()->Wait(ch_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, | 1488 core()->Wait(ch_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
1476 MakeUserPointer(&hss))); | 1489 MakeUserPointer(&hss))); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1517 EXPECT_NE(ph_received, h_passing[1]); | 1530 EXPECT_NE(ph_received, h_passing[1]); |
1518 EXPECT_NE(ph_received, ch_received); | 1531 EXPECT_NE(ph_received, ch_received); |
1519 | 1532 |
1520 // Again, rely on the Mojo system not re-using handle values very often. | 1533 // Again, rely on the Mojo system not re-using handle values very often. |
1521 EXPECT_NE(ph_received, ph); | 1534 EXPECT_NE(ph_received, ph); |
1522 | 1535 |
1523 // |ph| should no longer be valid; check that trying to close it fails. See | 1536 // |ph| should no longer be valid; check that trying to close it fails. See |
1524 // above note. | 1537 // above note. |
1525 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(ph)); | 1538 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, core()->Close(ph)); |
1526 | 1539 |
| 1540 // Check that |ph_received| still has the expected rights. |
| 1541 rights = MOJO_HANDLE_RIGHT_NONE; |
| 1542 EXPECT_EQ(MOJO_RESULT_OK, |
| 1543 core()->GetRights(ph_received, MakeUserPointer(&rights))); |
| 1544 EXPECT_EQ(kDefaultDataPipeProducerHandleRights, rights); |
| 1545 |
1527 // Write to |ph_received|. Should receive on |ch_received|. | 1546 // Write to |ph_received|. Should receive on |ch_received|. |
1528 num_bytes = kHelloSize; | 1547 num_bytes = kHelloSize; |
1529 EXPECT_EQ(MOJO_RESULT_OK, | 1548 EXPECT_EQ(MOJO_RESULT_OK, |
1530 core()->WriteData(ph_received, UserPointer<const void>(kHello), | 1549 core()->WriteData(ph_received, UserPointer<const void>(kHello), |
1531 MakeUserPointer(&num_bytes), | 1550 MakeUserPointer(&num_bytes), |
1532 MOJO_WRITE_DATA_FLAG_ALL_OR_NONE)); | 1551 MOJO_WRITE_DATA_FLAG_ALL_OR_NONE)); |
1533 hss = kEmptyMojoHandleSignalsState; | 1552 hss = kEmptyMojoHandleSignalsState; |
1534 EXPECT_EQ(MOJO_RESULT_OK, | 1553 EXPECT_EQ(MOJO_RESULT_OK, |
1535 core()->Wait(ch_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, | 1554 core()->Wait(ch_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
1536 MakeUserPointer(&hss))); | 1555 MakeUserPointer(&hss))); |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1733 | 1752 |
1734 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); | 1753 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); |
1735 } | 1754 } |
1736 | 1755 |
1737 // TODO(vtl): Test |CreateSharedBuffer()|, |DuplicateBufferHandle()|, and | 1756 // TODO(vtl): Test |CreateSharedBuffer()|, |DuplicateBufferHandle()|, and |
1738 // |MapBuffer()|. | 1757 // |MapBuffer()|. |
1739 | 1758 |
1740 } // namespace | 1759 } // namespace |
1741 } // namespace system | 1760 } // namespace system |
1742 } // namespace mojo | 1761 } // namespace mojo |
OLD | NEW |