Index: mojo/system/core_unittest.cc |
diff --git a/mojo/system/core_unittest.cc b/mojo/system/core_unittest.cc |
index af3d0c13451d44d9ad658e597a1b3840fe7559bc..59ff1c844b5f58a5256e65598e714e8ff92fa562 100644 |
--- a/mojo/system/core_unittest.cc |
+++ b/mojo/system/core_unittest.cc |
@@ -38,38 +38,45 @@ TEST_F(CoreTest, Basic) { |
EXPECT_EQ(0u, info.GetWriteMessageCallCount()); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h, NULL, 0, NULL, 0, |
+ core()->WriteMessage(h, NullUserPointer(), 0, NullUserPointer(), 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetWriteMessageCallCount()); |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WriteMessage(h, NULL, 1, NULL, 0, |
+ core()->WriteMessage(h, NullUserPointer(), 1, NullUserPointer(), 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(2u, info.GetWriteMessageCallCount()); |
EXPECT_EQ(0u, info.GetReadMessageCallCount()); |
uint32_t num_bytes = 0; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h, NULL, &num_bytes, NULL, NULL, |
+ core()->ReadMessage(h, NullUserPointer(), |
+ MakeUserPointer(&num_bytes), NullUserPointer(), |
+ NullUserPointer(), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetReadMessageCallCount()); |
num_bytes = 1; |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->ReadMessage(h, NULL, &num_bytes, NULL, NULL, |
+ core()->ReadMessage(h, NullUserPointer(), |
+ MakeUserPointer(&num_bytes), NullUserPointer(), |
+ NullUserPointer(), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(2u, info.GetReadMessageCallCount()); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h, NULL, NULL, NULL, NULL, |
+ core()->ReadMessage(h, NullUserPointer(), NullUserPointer(), |
+ NullUserPointer(), NullUserPointer(), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(3u, info.GetReadMessageCallCount()); |
EXPECT_EQ(0u, info.GetWriteDataCallCount()); |
EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, |
- core()->WriteData(h, NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE)); |
+ core()->WriteData(h, NullUserPointer(), NullUserPointer(), |
+ MOJO_WRITE_DATA_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetWriteDataCallCount()); |
EXPECT_EQ(0u, info.GetBeginWriteDataCallCount()); |
EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, |
- core()->BeginWriteData(h, NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE)); |
+ core()->BeginWriteData(h, NullUserPointer(), NullUserPointer(), |
+ MOJO_WRITE_DATA_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetBeginWriteDataCallCount()); |
EXPECT_EQ(0u, info.GetEndWriteDataCallCount()); |
@@ -79,12 +86,14 @@ TEST_F(CoreTest, Basic) { |
EXPECT_EQ(0u, info.GetReadDataCallCount()); |
EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, |
- core()->ReadData(h, NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); |
+ core()->ReadData(h, NullUserPointer(), NullUserPointer(), |
+ MOJO_READ_DATA_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetReadDataCallCount()); |
EXPECT_EQ(0u, info.GetBeginReadDataCallCount()); |
EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, |
- core()->BeginReadData(h, NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); |
+ core()->BeginReadData(h, NullUserPointer(), NullUserPointer(), |
+ MOJO_READ_DATA_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetBeginReadDataCallCount()); |
EXPECT_EQ(0u, info.GetEndReadDataCallCount()); |
@@ -105,7 +114,9 @@ TEST_F(CoreTest, Basic) { |
EXPECT_EQ(3u, info.GetAddWaiterCallCount()); |
MojoHandleSignals handle_signals = ~MOJO_HANDLE_SIGNAL_NONE; |
EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WaitMany(&h, &handle_signals, 1, MOJO_DEADLINE_INDEFINITE)); |
+ core()->WaitMany(MakeUserPointer(&h), |
+ MakeUserPointer(&handle_signals), 1, |
+ MOJO_DEADLINE_INDEFINITE)); |
EXPECT_EQ(4u, info.GetAddWaiterCallCount()); |
EXPECT_EQ(0u, info.GetDtorCallCount()); |
@@ -152,81 +163,78 @@ TEST_F(CoreTest, InvalidArguments) { |
MojoHandleSignals signals[2] = {~MOJO_HANDLE_SIGNAL_NONE, |
~MOJO_HANDLE_SIGNAL_NONE}; |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, signals, 0, MOJO_DEADLINE_INDEFINITE)); |
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(NULL, signals, 0, MOJO_DEADLINE_INDEFINITE)); |
+ core()->WaitMany(MakeUserPointer(handles), |
+ MakeUserPointer(signals), 0, |
+ MOJO_DEADLINE_INDEFINITE)); |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, NULL, 0, MOJO_DEADLINE_INDEFINITE)); |
- |
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(NULL, signals, 1, MOJO_DEADLINE_INDEFINITE)); |
+ core()->WaitMany(NullUserPointer(), MakeUserPointer(signals), 0, |
+ MOJO_DEADLINE_INDEFINITE)); |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, NULL, 1, MOJO_DEADLINE_INDEFINITE)); |
+ core()->WaitMany(MakeUserPointer(handles), NullUserPointer(), 0, |
+ MOJO_DEADLINE_INDEFINITE)); |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, signals, 1, MOJO_DEADLINE_INDEFINITE)); |
+ core()->WaitMany(MakeUserPointer(handles), |
+ MakeUserPointer(signals), 1, |
+ MOJO_DEADLINE_INDEFINITE)); |
MockHandleInfo info[2]; |
handles[0] = CreateMockHandle(&info[0]); |
EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WaitMany(handles, signals, 1, MOJO_DEADLINE_INDEFINITE)); |
+ core()->WaitMany(MakeUserPointer(handles), |
+ MakeUserPointer(signals), 1, |
+ MOJO_DEADLINE_INDEFINITE)); |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, signals, 2, MOJO_DEADLINE_INDEFINITE)); |
+ core()->WaitMany(MakeUserPointer(handles), |
+ MakeUserPointer(signals), 2, |
+ MOJO_DEADLINE_INDEFINITE)); |
handles[1] = handles[0] + 1; // Invalid handle. |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, signals, 2, MOJO_DEADLINE_INDEFINITE)); |
+ core()->WaitMany(MakeUserPointer(handles), |
+ MakeUserPointer(signals), 2, |
+ MOJO_DEADLINE_INDEFINITE)); |
handles[1] = CreateMockHandle(&info[1]); |
EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WaitMany(handles, signals, 2, MOJO_DEADLINE_INDEFINITE)); |
+ core()->WaitMany(MakeUserPointer(handles), |
+ MakeUserPointer(signals), 2, |
+ MOJO_DEADLINE_INDEFINITE)); |
EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[0])); |
EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[1])); |
} |
- // |CreateMessagePipe()|: |
- { |
- MojoHandle h; |
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->CreateMessagePipe(NULL, NULL, NULL)); |
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->CreateMessagePipe(NULL, &h, NULL)); |
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->CreateMessagePipe(NULL, NULL, &h)); |
- } |
+ // |CreateMessagePipe()|: Nothing to check (apart from things that cause |
+ // death). |
// |WriteMessage()|: |
// Only check arguments checked by |Core|, namely |handle|, |handles|, and |
// |num_handles|. |
{ |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WriteMessage(MOJO_HANDLE_INVALID, NULL, 0, NULL, 0, |
+ core()->WriteMessage(MOJO_HANDLE_INVALID, NullUserPointer(), 0, |
+ NullUserPointer(), 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
MockHandleInfo info; |
MojoHandle h = CreateMockHandle(&info); |
MojoHandle handles[2] = {MOJO_HANDLE_INVALID, MOJO_HANDLE_INVALID}; |
- // Null |handles| with nonzero |num_handles|. |
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WriteMessage(h, NULL, 0, NULL, 1, |
- MOJO_WRITE_MESSAGE_FLAG_NONE)); |
- // Checked by |Core|, shouldn't go through to the dispatcher. |
- EXPECT_EQ(0u, info.GetWriteMessageCallCount()); |
- |
// Huge handle count (implausibly big on some systems -- more than can be |
// stored in a 32-bit address space). |
// Note: This may return either |MOJO_RESULT_INVALID_ARGUMENT| or |
// |MOJO_RESULT_RESOURCE_EXHAUSTED|, depending on whether it's plausible or |
// not. |
EXPECT_NE(MOJO_RESULT_OK, |
- core()->WriteMessage(h, NULL, 0, handles, |
+ core()->WriteMessage(h, NullUserPointer(), 0, |
+ MakeUserPointer(handles), |
std::numeric_limits<uint32_t>::max(), |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(0u, info.GetWriteMessageCallCount()); |
// Huge handle count (plausibly big). |
EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, |
- core()->WriteMessage(h, NULL, 0, handles, |
+ core()->WriteMessage(h, NullUserPointer(), 0, |
+ MakeUserPointer(handles), |
std::numeric_limits<uint32_t>::max() / |
sizeof(handles[0]), |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
@@ -234,20 +242,23 @@ TEST_F(CoreTest, InvalidArguments) { |
// Invalid handle in |handles|. |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WriteMessage(h, NULL, 0, handles, 1, |
+ core()->WriteMessage(h, NullUserPointer(), 0, |
+ MakeUserPointer(handles), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(0u, info.GetWriteMessageCallCount()); |
// Two invalid handles in |handles|. |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WriteMessage(h, NULL, 0, handles, 2, |
+ core()->WriteMessage(h, NullUserPointer(), 0, |
+ MakeUserPointer(handles), 2, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(0u, info.GetWriteMessageCallCount()); |
// Can't send a handle over itself. |
handles[0] = h; |
EXPECT_EQ(MOJO_RESULT_BUSY, |
- core()->WriteMessage(h, NULL, 0, handles, 1, |
+ core()->WriteMessage(h, NullUserPointer(), 0, |
+ MakeUserPointer(handles), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(0u, info.GetWriteMessageCallCount()); |
@@ -257,27 +268,31 @@ TEST_F(CoreTest, InvalidArguments) { |
// This is "okay", but |MockDispatcher| doesn't implement it. |
handles[0] = h2; |
EXPECT_EQ(MOJO_RESULT_UNIMPLEMENTED, |
- core()->WriteMessage(h, NULL, 0, handles, 1, |
+ core()->WriteMessage(h, NullUserPointer(), 0, |
+ MakeUserPointer(handles), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetWriteMessageCallCount()); |
// One of the |handles| is still invalid. |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WriteMessage(h, NULL, 0, handles, 2, |
+ core()->WriteMessage(h, NullUserPointer(), 0, |
+ MakeUserPointer(handles), 2, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetWriteMessageCallCount()); |
// One of the |handles| is the same as |handle|. |
handles[1] = h; |
EXPECT_EQ(MOJO_RESULT_BUSY, |
- core()->WriteMessage(h, NULL, 0, handles, 2, |
+ core()->WriteMessage(h, NullUserPointer(), 0, |
+ MakeUserPointer(handles), 2, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetWriteMessageCallCount()); |
// Can't send a handle twice in the same message. |
handles[1] = h2; |
EXPECT_EQ(MOJO_RESULT_BUSY, |
- core()->WriteMessage(h, NULL, 0, handles, 2, |
+ core()->WriteMessage(h, NullUserPointer(), 0, |
+ MakeUserPointer(handles), 2, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(1u, info.GetWriteMessageCallCount()); |
@@ -293,23 +308,20 @@ TEST_F(CoreTest, InvalidArguments) { |
// |num_handles|. |
{ |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->ReadMessage(MOJO_HANDLE_INVALID, NULL, NULL, NULL, NULL, |
+ core()->ReadMessage(MOJO_HANDLE_INVALID, NullUserPointer(), |
+ NullUserPointer(), NullUserPointer(), |
+ NullUserPointer(), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
MockHandleInfo info; |
MojoHandle h = CreateMockHandle(&info); |
- uint32_t handle_count = 1; |
- EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->ReadMessage(h, NULL, NULL, NULL, &handle_count, |
- MOJO_READ_MESSAGE_FLAG_NONE)); |
- // Checked by |Core|, shouldn't go through to the dispatcher. |
- EXPECT_EQ(0u, info.GetReadMessageCallCount()); |
- |
// Okay. |
- handle_count = 0; |
+ uint32_t handle_count = 0; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h, NULL, NULL, NULL, &handle_count, |
+ core()->ReadMessage(h, NullUserPointer(), NullUserPointer(), |
+ NullUserPointer(), |
+ MakeUserPointer(&handle_count), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
// Checked by |Core|, shouldn't go through to the dispatcher. |
EXPECT_EQ(1u, info.GetReadMessageCallCount()); |
@@ -318,6 +330,82 @@ TEST_F(CoreTest, InvalidArguments) { |
} |
} |
+// These test invalid arguments that should cause death if we're being paranoid |
+// about checking arguments (which we would want to do if, e.g., we were in a |
+// true "kernel" situation, but we might not want to do otherwise for |
+// performance reasons). Probably blatant errors like passing in null pointers |
+// (for required pointer arguments) will still cause death, but perhaps not |
+// predictably. |
+TEST_F(CoreTest, InvalidArgumentsDeath) { |
+ const char kMemoryCheckFailedRegex[] = "Check failed"; |
+ |
+ // |WaitMany()|: |
+ { |
+ MojoHandle handles[2] = {MOJO_HANDLE_INVALID, MOJO_HANDLE_INVALID}; |
+ MojoHandleSignals signals[2] = {~MOJO_HANDLE_SIGNAL_NONE, |
+ ~MOJO_HANDLE_SIGNAL_NONE}; |
+ EXPECT_DEATH_IF_SUPPORTED( |
+ core()->WaitMany(NullUserPointer(), MakeUserPointer(signals), 1, |
+ MOJO_DEADLINE_INDEFINITE), |
+ kMemoryCheckFailedRegex); |
+ EXPECT_DEATH_IF_SUPPORTED( |
+ core()->WaitMany(MakeUserPointer(handles), NullUserPointer(), 1, |
+ MOJO_DEADLINE_INDEFINITE), |
+ kMemoryCheckFailedRegex); |
+ } |
+ |
+ // |CreateMessagePipe()|: |
+ { |
+ MojoHandle h; |
+ EXPECT_DEATH_IF_SUPPORTED( |
+ core()->CreateMessagePipe(NullUserPointer(), NullUserPointer(), |
+ NullUserPointer()), |
+ kMemoryCheckFailedRegex); |
+ EXPECT_DEATH_IF_SUPPORTED( |
+ core()->CreateMessagePipe(NullUserPointer(), MakeUserPointer(&h), |
+ NullUserPointer()), |
+ kMemoryCheckFailedRegex); |
+ EXPECT_DEATH_IF_SUPPORTED( |
+ core()->CreateMessagePipe(NullUserPointer(), NullUserPointer(), |
+ MakeUserPointer(&h)), |
+ kMemoryCheckFailedRegex); |
+ } |
+ |
+ // |WriteMessage()|: |
+ // Only check arguments checked by |Core|, namely |handle|, |handles|, and |
+ // |num_handles|. |
+ { |
+ MockHandleInfo info; |
+ MojoHandle h = CreateMockHandle(&info); |
+ |
+ // Null |handles| with nonzero |num_handles|. |
+ EXPECT_DEATH_IF_SUPPORTED( |
+ core()->WriteMessage(h, NullUserPointer(), 0, NullUserPointer(), |
+ 1, MOJO_WRITE_MESSAGE_FLAG_NONE), |
+ kMemoryCheckFailedRegex); |
+ |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); |
+ } |
+ |
+ // |ReadMessage()|: |
+ // Only check arguments checked by |Core|, namely |handle|, |handles|, and |
+ // |num_handles|. |
+ { |
+ MockHandleInfo info; |
+ MojoHandle h = CreateMockHandle(&info); |
+ |
+ uint32_t handle_count = 1; |
+ EXPECT_DEATH_IF_SUPPORTED( |
+ core()->ReadMessage(h, NullUserPointer(), NullUserPointer(), |
+ NullUserPointer(), |
+ MakeUserPointer(&handle_count), |
+ MOJO_READ_MESSAGE_FLAG_NONE), |
+ kMemoryCheckFailedRegex); |
+ |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); |
+ } |
+} |
+ |
// TODO(vtl): test |Wait()| and |WaitMany()| properly |
// - including |WaitMany()| with the same handle more than once (with |
// same/different signals) |
@@ -325,7 +413,9 @@ TEST_F(CoreTest, InvalidArguments) { |
TEST_F(CoreTest, MessagePipe) { |
MojoHandle h[2]; |
- EXPECT_EQ(MOJO_RESULT_OK, core()->CreateMessagePipe(NULL, &h[0], &h[1])); |
+ EXPECT_EQ(MOJO_RESULT_OK, |
+ core()->CreateMessagePipe(NullUserPointer(), MakeUserPointer(&h[0]), |
+ MakeUserPointer(&h[1]))); |
// Should get two distinct, valid handles. |
EXPECT_NE(h[0], MOJO_HANDLE_INVALID); |
EXPECT_NE(h[1], MOJO_HANDLE_INVALID); |
@@ -335,13 +425,16 @@ TEST_F(CoreTest, MessagePipe) { |
MojoHandleSignals signals[2] = {MOJO_HANDLE_SIGNAL_READABLE, |
MOJO_HANDLE_SIGNAL_READABLE}; |
EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
- core()->WaitMany(h, signals, 2, 0)); |
+ core()->WaitMany(MakeUserPointer(h), MakeUserPointer(signals), 2, |
+ 0)); |
// Try to read anyway. |
char buffer[1] = {'a'}; |
uint32_t buffer_size = 1; |
EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
- core()->ReadMessage(h[0], buffer, &buffer_size, NULL, NULL, |
+ core()->ReadMessage(h[0], UserPointer<void>(buffer), |
+ MakeUserPointer(&buffer_size), |
+ NullUserPointer(), NullUserPointer(), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
// Check that it left its inputs alone. |
EXPECT_EQ('a', buffer[0]); |
@@ -356,31 +449,38 @@ TEST_F(CoreTest, MessagePipe) { |
// Also check that |h[1]| is writable using |WaitMany()|. |
signals[0] = MOJO_HANDLE_SIGNAL_READABLE; |
signals[1] = MOJO_HANDLE_SIGNAL_WRITABLE; |
- EXPECT_EQ(1, core()->WaitMany(h, signals, 2, MOJO_DEADLINE_INDEFINITE)); |
+ EXPECT_EQ(1, core()->WaitMany(MakeUserPointer(h), MakeUserPointer(signals), 2, |
+ MOJO_DEADLINE_INDEFINITE)); |
// Write to |h[1]|. |
buffer[0] = 'b'; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h[1], buffer, 1, NULL, 0, |
+ core()->WriteMessage(h[1], UserPointer<const void>(buffer), 1, |
+ NullUserPointer(), 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
// Check that |h[0]| is now readable. |
signals[0] = MOJO_HANDLE_SIGNAL_READABLE; |
signals[1] = MOJO_HANDLE_SIGNAL_READABLE; |
- EXPECT_EQ(0, core()->WaitMany(h, signals, 2, MOJO_DEADLINE_INDEFINITE)); |
+ EXPECT_EQ(0, core()->WaitMany(MakeUserPointer(h), MakeUserPointer(signals), 2, |
+ MOJO_DEADLINE_INDEFINITE)); |
// Read from |h[0]|. |
// First, get only the size. |
buffer_size = 0; |
EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, |
- core()->ReadMessage(h[0], NULL, &buffer_size, NULL, NULL, |
+ core()->ReadMessage(h[0], NullUserPointer(), |
+ MakeUserPointer(&buffer_size), |
+ NullUserPointer(), NullUserPointer(), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(1u, buffer_size); |
// Then actually read it. |
buffer[0] = 'c'; |
buffer_size = 1; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h[0], buffer, &buffer_size, NULL, NULL, |
+ core()->ReadMessage(h[0], UserPointer<void>(buffer), |
+ MakeUserPointer(&buffer_size), |
+ NullUserPointer(), NullUserPointer(), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ('b', buffer[0]); |
EXPECT_EQ(1u, buffer_size); |
@@ -392,7 +492,8 @@ TEST_F(CoreTest, MessagePipe) { |
// Write to |h[0]|. |
buffer[0] = 'd'; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h[0], buffer, 1, NULL, 0, |
+ core()->WriteMessage(h[0], UserPointer<const void>(buffer), 1, |
+ NullUserPointer(), 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
// Close |h[0]|. |
@@ -408,7 +509,8 @@ TEST_F(CoreTest, MessagePipe) { |
// Discard a message from |h[1]|. |
EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, |
- core()->ReadMessage(h[1], NULL, NULL, NULL, NULL, |
+ core()->ReadMessage(h[1], NullUserPointer(), NullUserPointer(), |
+ NullUserPointer(), NullUserPointer(), |
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); |
// |h[1]| is no longer readable (and will never be). |
@@ -418,7 +520,8 @@ TEST_F(CoreTest, MessagePipe) { |
// Try writing to |h[1]|. |
buffer[0] = 'e'; |
EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WriteMessage(h[1], buffer, 1, NULL, 0, |
+ core()->WriteMessage(h[1], UserPointer<const void>(buffer), 1, |
+ NullUserPointer(), 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h[1])); |
@@ -439,13 +542,14 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
MojoHandle h_passing[2]; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->CreateMessagePipe(NULL, &h_passing[0], &h_passing[1])); |
+ core()->CreateMessagePipe(NullUserPointer(), |
+ MakeUserPointer(&h_passing[0]), |
+ MakeUserPointer(&h_passing[1]))); |
// Make sure that |h_passing[]| work properly. |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h_passing[0], |
- kHello, kHelloSize, |
- NULL, 0, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kHello), |
+ kHelloSize, NullUserPointer(), 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(MOJO_RESULT_OK, |
core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, |
@@ -453,9 +557,10 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
num_bytes = kBufferSize; |
num_handles = arraysize(handles); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h_passing[1], |
- buffer, &num_bytes, |
- handles, &num_handles, |
+ core()->ReadMessage(h_passing[1], UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
+ MakeUserPointer(handles), |
+ MakeUserPointer(&num_handles), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kHelloSize, num_bytes); |
EXPECT_STREQ(kHello, buffer); |
@@ -464,34 +569,34 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
// Make sure that you can't pass either of the message pipe's handles over |
// itself. |
EXPECT_EQ(MOJO_RESULT_BUSY, |
- core()->WriteMessage(h_passing[0], |
- kHello, kHelloSize, |
- &h_passing[0], 1, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kHello), |
+ kHelloSize, MakeUserPointer(&h_passing[0]), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WriteMessage(h_passing[0], |
- kHello, kHelloSize, |
- &h_passing[1], 1, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kHello), |
+ kHelloSize, MakeUserPointer(&h_passing[1]), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
MojoHandle h_passed[2]; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->CreateMessagePipe(NULL, &h_passed[0], &h_passed[1])); |
+ core()->CreateMessagePipe(NullUserPointer(), |
+ MakeUserPointer(&h_passed[0]), |
+ MakeUserPointer(&h_passed[1]))); |
// Make sure that |h_passed[]| work properly. |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h_passed[0], |
- kHello, kHelloSize, |
- NULL, 0, |
+ core()->WriteMessage(h_passed[0], UserPointer<const void>(kHello), |
+ kHelloSize, NullUserPointer(), 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(MOJO_RESULT_OK, |
core()->Wait(h_passed[1], MOJO_HANDLE_SIGNAL_READABLE, 1000000000)); |
num_bytes = kBufferSize; |
num_handles = arraysize(handles); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h_passed[1], |
- buffer, &num_bytes, |
- handles, &num_handles, |
+ core()->ReadMessage(h_passed[1], UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
+ MakeUserPointer(handles), |
+ MakeUserPointer(&num_handles), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kHelloSize, num_bytes); |
EXPECT_STREQ(kHello, buffer); |
@@ -499,9 +604,9 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
// Send |h_passed[1]| from |h_passing[0]| to |h_passing[1]|. |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h_passing[0], |
- kWorld, kWorldSize, |
- &h_passed[1], 1, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kWorld), |
+ kWorldSize, |
+ MakeUserPointer(&h_passed[1]), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(MOJO_RESULT_OK, |
core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, |
@@ -509,9 +614,10 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
num_bytes = kBufferSize; |
num_handles = arraysize(handles); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h_passing[1], |
- buffer, &num_bytes, |
- handles, &num_handles, |
+ core()->ReadMessage(h_passing[1], UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
+ MakeUserPointer(handles), |
+ MakeUserPointer(&num_handles), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kWorldSize, num_bytes); |
EXPECT_STREQ(kWorld, buffer); |
@@ -531,18 +637,18 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
// Write to |h_passed[0]|. Should receive on |h_received|. |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h_passed[0], |
- kHello, kHelloSize, |
- NULL, 0, |
+ core()->WriteMessage(h_passed[0], UserPointer<const void>(kHello), |
+ kHelloSize, NullUserPointer(), 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(MOJO_RESULT_OK, |
core()->Wait(h_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000)); |
num_bytes = kBufferSize; |
num_handles = arraysize(handles); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h_received, |
- buffer, &num_bytes, |
- handles, &num_handles, |
+ core()->ReadMessage(h_received, UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
+ MakeUserPointer(handles), |
+ MakeUserPointer(&num_handles), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kHelloSize, num_bytes); |
EXPECT_STREQ(kHello, buffer); |
@@ -557,7 +663,9 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
TEST_F(CoreTest, DataPipe) { |
MojoHandle ph, ch; // p is for producer and c is for consumer. |
- EXPECT_EQ(MOJO_RESULT_OK, core()->CreateDataPipe(NULL, &ph, &ch)); |
+ EXPECT_EQ(MOJO_RESULT_OK, |
+ core()->CreateDataPipe(NullUserPointer(), MakeUserPointer(&ph), |
+ MakeUserPointer(&ch))); |
// Should get two distinct, valid handles. |
EXPECT_NE(ph, MOJO_HANDLE_INVALID); |
EXPECT_NE(ch, MOJO_HANDLE_INVALID); |
@@ -579,7 +687,8 @@ TEST_F(CoreTest, DataPipe) { |
char elements[2] = {'A', 'B'}; |
uint32_t num_bytes = 2u; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteData(ph, elements, &num_bytes, |
+ core()->WriteData(ph, UserPointer<const void>(elements), |
+ MakeUserPointer(&num_bytes), |
MOJO_WRITE_DATA_FLAG_NONE)); |
EXPECT_EQ(2u, num_bytes); |
@@ -592,7 +701,8 @@ TEST_F(CoreTest, DataPipe) { |
elements[1] = -1; |
num_bytes = 1u; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadData(ch, elements, &num_bytes, |
+ core()->ReadData(ch, UserPointer<void>(elements), |
+ MakeUserPointer(&num_bytes), |
MOJO_READ_DATA_FLAG_NONE)); |
EXPECT_EQ('A', elements[0]); |
EXPECT_EQ(-1, elements[1]); |
@@ -601,7 +711,8 @@ TEST_F(CoreTest, DataPipe) { |
void* write_ptr = NULL; |
num_bytes = 0u; |
ASSERT_EQ(MOJO_RESULT_OK, |
- core()->BeginWriteData(ph, &write_ptr, &num_bytes, |
+ core()->BeginWriteData(ph, MakeUserPointer(&write_ptr), |
+ MakeUserPointer(&num_bytes), |
MOJO_WRITE_DATA_FLAG_NONE)); |
// We count on the default options providing a decent buffer size. |
ASSERT_GE(num_bytes, 3u); |
@@ -610,7 +721,8 @@ TEST_F(CoreTest, DataPipe) { |
elements[0] = 'X'; |
num_bytes = 1u; |
EXPECT_EQ(MOJO_RESULT_BUSY, |
- core()->WriteData(ph, elements, &num_bytes, |
+ core()->WriteData(ph, UserPointer<const void>(elements), |
+ MakeUserPointer(&num_bytes), |
MOJO_WRITE_DATA_FLAG_NONE)); |
// Actually write the data, and complete it now. |
@@ -622,20 +734,21 @@ TEST_F(CoreTest, DataPipe) { |
// Query how much data we have. |
num_bytes = 0; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadData(ch, NULL, &num_bytes, MOJO_READ_DATA_FLAG_QUERY)); |
+ core()->ReadData(ch, NullUserPointer(), MakeUserPointer(&num_bytes), |
+ MOJO_READ_DATA_FLAG_QUERY)); |
EXPECT_EQ(4u, num_bytes); |
// Try to discard ten characters, in all-or-none mode. Should fail. |
num_bytes = 10; |
EXPECT_EQ(MOJO_RESULT_OUT_OF_RANGE, |
- core()->ReadData(ch, NULL, &num_bytes, |
+ core()->ReadData(ch, NullUserPointer(), MakeUserPointer(&num_bytes), |
MOJO_READ_DATA_FLAG_DISCARD | |
MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
// Discard two characters. |
num_bytes = 2; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadData(ch, NULL, &num_bytes, |
+ core()->ReadData(ch, NullUserPointer(), MakeUserPointer(&num_bytes), |
MOJO_READ_DATA_FLAG_DISCARD | |
MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
@@ -643,7 +756,8 @@ TEST_F(CoreTest, DataPipe) { |
const void* read_ptr = NULL; |
num_bytes = 2; |
ASSERT_EQ(MOJO_RESULT_OK, |
- core()->BeginReadData(ch, &read_ptr, &num_bytes, |
+ core()->BeginReadData(ch, MakeUserPointer(&read_ptr), |
+ MakeUserPointer(&num_bytes), |
MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
// Note: Count on still being able to do the contiguous read here. |
ASSERT_EQ(2u, num_bytes); |
@@ -651,7 +765,7 @@ TEST_F(CoreTest, DataPipe) { |
// Discarding right now should fail. |
num_bytes = 1; |
EXPECT_EQ(MOJO_RESULT_BUSY, |
- core()->ReadData(ch, NULL, &num_bytes, |
+ core()->ReadData(ch, NullUserPointer(), MakeUserPointer(&num_bytes), |
MOJO_READ_DATA_FLAG_DISCARD)); |
// Actually check our data and end the two-phase read. |
@@ -689,17 +803,19 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
MojoHandle h_passing[2]; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->CreateMessagePipe(NULL, &h_passing[0], &h_passing[1])); |
+ core()->CreateMessagePipe(NullUserPointer(), |
+ MakeUserPointer(&h_passing[0]), |
+ MakeUserPointer(&h_passing[1]))); |
MojoHandle ph, ch; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->CreateDataPipe(NULL, &ph, &ch)); |
+ core()->CreateDataPipe(NullUserPointer(), MakeUserPointer(&ph), |
+ MakeUserPointer(&ch))); |
// Send |ch| from |h_passing[0]| to |h_passing[1]|. |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h_passing[0], |
- kHello, kHelloSize, |
- &ch, 1, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kHello), |
+ kHelloSize, MakeUserPointer(&ch), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(MOJO_RESULT_OK, |
core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, |
@@ -707,9 +823,10 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
num_bytes = kBufferSize; |
num_handles = arraysize(handles); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h_passing[1], |
- buffer, &num_bytes, |
- handles, &num_handles, |
+ core()->ReadMessage(h_passing[1], UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
+ MakeUserPointer(handles), |
+ MakeUserPointer(&num_handles), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kHelloSize, num_bytes); |
EXPECT_STREQ(kHello, buffer); |
@@ -730,22 +847,23 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
// Write to |ph|. Should receive on |ch_received|. |
num_bytes = kWorldSize; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteData(ph, kWorld, &num_bytes, |
+ core()->WriteData(ph, UserPointer<const void>(kWorld), |
+ MakeUserPointer(&num_bytes), |
MOJO_WRITE_DATA_FLAG_ALL_OR_NONE)); |
EXPECT_EQ(MOJO_RESULT_OK, |
core()->Wait(ch_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000)); |
num_bytes = kBufferSize; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadData(ch_received, buffer, &num_bytes, |
+ core()->ReadData(ch_received, UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kWorldSize, num_bytes); |
EXPECT_STREQ(kWorld, buffer); |
// Now pass |ph| in the same direction. |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h_passing[0], |
- kWorld, kWorldSize, |
- &ph, 1, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kWorld), |
+ kWorldSize, MakeUserPointer(&ph), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(MOJO_RESULT_OK, |
core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, |
@@ -753,9 +871,10 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
num_bytes = kBufferSize; |
num_handles = arraysize(handles); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h_passing[1], |
- buffer, &num_bytes, |
- handles, &num_handles, |
+ core()->ReadMessage(h_passing[1], UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
+ MakeUserPointer(handles), |
+ MakeUserPointer(&num_handles), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kWorldSize, num_bytes); |
EXPECT_STREQ(kWorld, buffer); |
@@ -776,13 +895,15 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
// Write to |ph_received|. Should receive on |ch_received|. |
num_bytes = kHelloSize; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteData(ph_received, kHello, &num_bytes, |
+ core()->WriteData(ph_received, UserPointer<const void>(kHello), |
+ MakeUserPointer(&num_bytes), |
MOJO_WRITE_DATA_FLAG_ALL_OR_NONE)); |
EXPECT_EQ(MOJO_RESULT_OK, |
core()->Wait(ch_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000)); |
num_bytes = kBufferSize; |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadData(ch_received, buffer, &num_bytes, |
+ core()->ReadData(ch_received, UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kHelloSize, num_bytes); |
EXPECT_STREQ(kHello, buffer); |
@@ -796,20 +917,19 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
void* write_ptr = NULL; |
num_bytes = 0; |
ASSERT_EQ(MOJO_RESULT_OK, |
- core()->BeginWriteData(ph, &write_ptr, &num_bytes, |
+ core()->BeginWriteData(ph, MakeUserPointer(&write_ptr), |
+ MakeUserPointer(&num_bytes), |
MOJO_WRITE_DATA_FLAG_NONE)); |
ASSERT_GE(num_bytes, 1u); |
EXPECT_EQ(MOJO_RESULT_BUSY, |
- core()->WriteMessage(h_passing[0], |
- kHello, kHelloSize, |
- &ph, 1, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kHello), |
+ kHelloSize, MakeUserPointer(&ph), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
// But |ch| can, even if |ph| is in a two-phase write. |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h_passing[0], |
- kHello, kHelloSize, |
- &ch, 1, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kHello), |
+ kHelloSize, MakeUserPointer(&ch), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
ch = MOJO_HANDLE_INVALID; |
EXPECT_EQ(MOJO_RESULT_OK, |
@@ -818,9 +938,10 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
num_bytes = kBufferSize; |
num_handles = arraysize(handles); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h_passing[1], |
- buffer, &num_bytes, |
- handles, &num_handles, |
+ core()->ReadMessage(h_passing[1], UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
+ MakeUserPointer(handles), |
+ MakeUserPointer(&num_handles), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kHelloSize, num_bytes); |
EXPECT_STREQ(kHello, buffer); |
@@ -840,19 +961,18 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
const void* read_ptr = NULL; |
num_bytes = 1; |
ASSERT_EQ(MOJO_RESULT_OK, |
- core()->BeginReadData(ch, &read_ptr, &num_bytes, |
+ core()->BeginReadData(ch, MakeUserPointer(&read_ptr), |
+ MakeUserPointer(&num_bytes), |
MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
EXPECT_EQ(MOJO_RESULT_BUSY, |
- core()->WriteMessage(h_passing[0], |
- kHello, kHelloSize, |
- &ch, 1, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kHello), |
+ kHelloSize, MakeUserPointer(&ch), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
// But |ph| can, even if |ch| is in a two-phase read. |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->WriteMessage(h_passing[0], |
- kWorld, kWorldSize, |
- &ph, 1, |
+ core()->WriteMessage(h_passing[0], UserPointer<const void>(kWorld), |
+ kWorldSize, MakeUserPointer(&ph), 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
ph = MOJO_HANDLE_INVALID; |
EXPECT_EQ(MOJO_RESULT_OK, |
@@ -861,9 +981,10 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
num_bytes = kBufferSize; |
num_handles = arraysize(handles); |
EXPECT_EQ(MOJO_RESULT_OK, |
- core()->ReadMessage(h_passing[1], |
- buffer, &num_bytes, |
- handles, &num_handles, |
+ core()->ReadMessage(h_passing[1], UserPointer<void>(buffer), |
+ MakeUserPointer(&num_bytes), |
+ MakeUserPointer(handles), |
+ MakeUserPointer(&num_handles), |
MOJO_READ_MESSAGE_FLAG_NONE)); |
EXPECT_EQ(kWorldSize, num_bytes); |
EXPECT_STREQ(kWorld, buffer); |