| 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/system/core.h" | 5 #include "mojo/system/core.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 | 10 |
| (...skipping 1079 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1090 num_bytes = 1u; | 1090 num_bytes = 1u; |
| 1091 EXPECT_EQ(MOJO_RESULT_OK, | 1091 EXPECT_EQ(MOJO_RESULT_OK, |
| 1092 core()->ReadData(ch, | 1092 core()->ReadData(ch, |
| 1093 UserPointer<void>(elements), | 1093 UserPointer<void>(elements), |
| 1094 MakeUserPointer(&num_bytes), | 1094 MakeUserPointer(&num_bytes), |
| 1095 MOJO_READ_DATA_FLAG_NONE)); | 1095 MOJO_READ_DATA_FLAG_NONE)); |
| 1096 EXPECT_EQ('A', elements[0]); | 1096 EXPECT_EQ('A', elements[0]); |
| 1097 EXPECT_EQ(-1, elements[1]); | 1097 EXPECT_EQ(-1, elements[1]); |
| 1098 | 1098 |
| 1099 // Two-phase write. | 1099 // Two-phase write. |
| 1100 void* write_ptr = NULL; | 1100 void* write_ptr = nullptr; |
| 1101 num_bytes = 0u; | 1101 num_bytes = 0u; |
| 1102 ASSERT_EQ(MOJO_RESULT_OK, | 1102 ASSERT_EQ(MOJO_RESULT_OK, |
| 1103 core()->BeginWriteData(ph, | 1103 core()->BeginWriteData(ph, |
| 1104 MakeUserPointer(&write_ptr), | 1104 MakeUserPointer(&write_ptr), |
| 1105 MakeUserPointer(&num_bytes), | 1105 MakeUserPointer(&num_bytes), |
| 1106 MOJO_WRITE_DATA_FLAG_NONE)); | 1106 MOJO_WRITE_DATA_FLAG_NONE)); |
| 1107 // We count on the default options providing a decent buffer size. | 1107 // We count on the default options providing a decent buffer size. |
| 1108 ASSERT_GE(num_bytes, 3u); | 1108 ASSERT_GE(num_bytes, 3u); |
| 1109 | 1109 |
| 1110 // Trying to do a normal write during a two-phase write should fail. | 1110 // Trying to do a normal write during a two-phase write should fail. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1143 // Discard two characters. | 1143 // Discard two characters. |
| 1144 num_bytes = 2; | 1144 num_bytes = 2; |
| 1145 EXPECT_EQ(MOJO_RESULT_OK, | 1145 EXPECT_EQ(MOJO_RESULT_OK, |
| 1146 core()->ReadData( | 1146 core()->ReadData( |
| 1147 ch, | 1147 ch, |
| 1148 NullUserPointer(), | 1148 NullUserPointer(), |
| 1149 MakeUserPointer(&num_bytes), | 1149 MakeUserPointer(&num_bytes), |
| 1150 MOJO_READ_DATA_FLAG_DISCARD | MOJO_READ_DATA_FLAG_ALL_OR_NONE)); | 1150 MOJO_READ_DATA_FLAG_DISCARD | MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
| 1151 | 1151 |
| 1152 // Read the remaining two characters, in two-phase mode (all-or-none). | 1152 // Read the remaining two characters, in two-phase mode (all-or-none). |
| 1153 const void* read_ptr = NULL; | 1153 const void* read_ptr = nullptr; |
| 1154 num_bytes = 2; | 1154 num_bytes = 2; |
| 1155 ASSERT_EQ(MOJO_RESULT_OK, | 1155 ASSERT_EQ(MOJO_RESULT_OK, |
| 1156 core()->BeginReadData(ch, | 1156 core()->BeginReadData(ch, |
| 1157 MakeUserPointer(&read_ptr), | 1157 MakeUserPointer(&read_ptr), |
| 1158 MakeUserPointer(&num_bytes), | 1158 MakeUserPointer(&num_bytes), |
| 1159 MOJO_READ_DATA_FLAG_ALL_OR_NONE)); | 1159 MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
| 1160 // Note: Count on still being able to do the contiguous read here. | 1160 // Note: Count on still being able to do the contiguous read here. |
| 1161 ASSERT_EQ(2u, num_bytes); | 1161 ASSERT_EQ(2u, num_bytes); |
| 1162 | 1162 |
| 1163 // Discarding right now should fail. | 1163 // Discarding right now should fail. |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1354 MOJO_READ_MESSAGE_FLAG_NONE)); | 1354 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 1355 EXPECT_EQ(kHelloSize, num_bytes); | 1355 EXPECT_EQ(kHelloSize, num_bytes); |
| 1356 EXPECT_STREQ(kHello, buffer); | 1356 EXPECT_STREQ(kHello, buffer); |
| 1357 | 1357 |
| 1358 ph = ph_received; | 1358 ph = ph_received; |
| 1359 ph_received = MOJO_HANDLE_INVALID; | 1359 ph_received = MOJO_HANDLE_INVALID; |
| 1360 ch = ch_received; | 1360 ch = ch_received; |
| 1361 ch_received = MOJO_HANDLE_INVALID; | 1361 ch_received = MOJO_HANDLE_INVALID; |
| 1362 | 1362 |
| 1363 // Make sure that |ph| can't be sent if it's in a two-phase write. | 1363 // Make sure that |ph| can't be sent if it's in a two-phase write. |
| 1364 void* write_ptr = NULL; | 1364 void* write_ptr = nullptr; |
| 1365 num_bytes = 0; | 1365 num_bytes = 0; |
| 1366 ASSERT_EQ(MOJO_RESULT_OK, | 1366 ASSERT_EQ(MOJO_RESULT_OK, |
| 1367 core()->BeginWriteData(ph, | 1367 core()->BeginWriteData(ph, |
| 1368 MakeUserPointer(&write_ptr), | 1368 MakeUserPointer(&write_ptr), |
| 1369 MakeUserPointer(&num_bytes), | 1369 MakeUserPointer(&num_bytes), |
| 1370 MOJO_WRITE_DATA_FLAG_NONE)); | 1370 MOJO_WRITE_DATA_FLAG_NONE)); |
| 1371 ASSERT_GE(num_bytes, 1u); | 1371 ASSERT_GE(num_bytes, 1u); |
| 1372 EXPECT_EQ(MOJO_RESULT_BUSY, | 1372 EXPECT_EQ(MOJO_RESULT_BUSY, |
| 1373 core()->WriteMessage(h_passing[0], | 1373 core()->WriteMessage(h_passing[0], |
| 1374 UserPointer<const void>(kHello), | 1374 UserPointer<const void>(kHello), |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1413 // Wait for |ch| to be readable. | 1413 // Wait for |ch| to be readable. |
| 1414 hss = kEmptyMojoHandleSignalsState; | 1414 hss = kEmptyMojoHandleSignalsState; |
| 1415 EXPECT_EQ( | 1415 EXPECT_EQ( |
| 1416 MOJO_RESULT_OK, | 1416 MOJO_RESULT_OK, |
| 1417 core()->Wait( | 1417 core()->Wait( |
| 1418 ch, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, MakeUserPointer(&hss))); | 1418 ch, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, MakeUserPointer(&hss))); |
| 1419 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals); | 1419 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals); |
| 1420 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals); | 1420 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals); |
| 1421 | 1421 |
| 1422 // Make sure that |ch| can't be sent if it's in a two-phase read. | 1422 // Make sure that |ch| can't be sent if it's in a two-phase read. |
| 1423 const void* read_ptr = NULL; | 1423 const void* read_ptr = nullptr; |
| 1424 num_bytes = 1; | 1424 num_bytes = 1; |
| 1425 ASSERT_EQ(MOJO_RESULT_OK, | 1425 ASSERT_EQ(MOJO_RESULT_OK, |
| 1426 core()->BeginReadData(ch, | 1426 core()->BeginReadData(ch, |
| 1427 MakeUserPointer(&read_ptr), | 1427 MakeUserPointer(&read_ptr), |
| 1428 MakeUserPointer(&num_bytes), | 1428 MakeUserPointer(&num_bytes), |
| 1429 MOJO_READ_DATA_FLAG_ALL_OR_NONE)); | 1429 MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
| 1430 EXPECT_EQ(MOJO_RESULT_BUSY, | 1430 EXPECT_EQ(MOJO_RESULT_BUSY, |
| 1431 core()->WriteMessage(h_passing[0], | 1431 core()->WriteMessage(h_passing[0], |
| 1432 UserPointer<const void>(kHello), | 1432 UserPointer<const void>(kHello), |
| 1433 kHelloSize, | 1433 kHelloSize, |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1477 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); | 1477 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); |
| 1478 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); | 1478 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); |
| 1479 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); | 1479 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); |
| 1480 } | 1480 } |
| 1481 | 1481 |
| 1482 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. | 1482 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. |
| 1483 | 1483 |
| 1484 } // namespace | 1484 } // namespace |
| 1485 } // namespace system | 1485 } // namespace system |
| 1486 } // namespace mojo | 1486 } // namespace mojo |
| OLD | NEW |