Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(700)

Unified Diff: mojo/edk/system/core_unittest.cc

Issue 1880823005: [mojo-edk] Add explicit message object APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/edk/system/core_test_base.cc ('k') | mojo/edk/system/dispatcher.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/edk/system/core_unittest.cc
diff --git a/mojo/edk/system/core_unittest.cc b/mojo/edk/system/core_unittest.cc
index 7eeabc03e2fc0b26ea6a522427064b6facb22068..b180b5574ee396582b5d763484c9b04d3af2d2f6 100644
--- a/mojo/edk/system/core_unittest.cc
+++ b/mojo/edk/system/core_unittest.cc
@@ -327,6 +327,18 @@ TEST_F(CoreTest, InvalidArguments) {
MOJO_WRITE_MESSAGE_FLAG_NONE));
ASSERT_EQ(0u, info.GetWriteMessageCallCount());
+ // Null |bytes| with non-zero message size.
+ ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
+ core()->WriteMessage(h, nullptr, 1, nullptr, 0,
+ MOJO_WRITE_MESSAGE_FLAG_NONE));
+ ASSERT_EQ(0u, info.GetWriteMessageCallCount());
+
+ // Null |handles| with non-zero handle count.
+ ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
+ core()->WriteMessage(h, nullptr, 0, nullptr, 1,
+ MOJO_WRITE_MESSAGE_FLAG_NONE));
+ ASSERT_EQ(0u, info.GetWriteMessageCallCount());
+
// Huge handle count (plausibly big).
ASSERT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED,
core()->WriteMessage(
@@ -349,19 +361,21 @@ TEST_F(CoreTest, InvalidArguments) {
MOJO_WRITE_MESSAGE_FLAG_NONE));
ASSERT_EQ(0u, info.GetWriteMessageCallCount());
- // Can't send a handle over itself.
+ // Can't send a handle over itself. Note that this will also cause |h| to be
+ // closed.
handles[0] = h;
ASSERT_EQ(
- MOJO_RESULT_BUSY,
+ MOJO_RESULT_INVALID_ARGUMENT,
core()->WriteMessage(h, nullptr, 0, handles, 1,
MOJO_WRITE_MESSAGE_FLAG_NONE));
ASSERT_EQ(0u, info.GetWriteMessageCallCount());
+ h = CreateMockHandle(&info);
+
MockHandleInfo info2;
- MojoHandle h2 = CreateMockHandle(&info2);
// This is "okay", but |MockDispatcher| doesn't implement it.
- handles[0] = h2;
+ handles[0] = CreateMockHandle(&info2);
ASSERT_EQ(
MOJO_RESULT_UNIMPLEMENTED,
core()->WriteMessage(h, nullptr, 0, handles, 1,
@@ -369,32 +383,33 @@ TEST_F(CoreTest, InvalidArguments) {
ASSERT_EQ(1u, info.GetWriteMessageCallCount());
// One of the |handles| is still invalid.
+ handles[0] = CreateMockHandle(&info2);
ASSERT_EQ(
MOJO_RESULT_INVALID_ARGUMENT,
core()->WriteMessage(h, nullptr, 0, handles, 2,
MOJO_WRITE_MESSAGE_FLAG_NONE));
ASSERT_EQ(1u, info.GetWriteMessageCallCount());
- // One of the |handles| is the same as |handle|.
+ // One of the |handles| is the same as |h|. Both handles are closed.
+ handles[0] = CreateMockHandle(&info2);
handles[1] = h;
ASSERT_EQ(
- MOJO_RESULT_BUSY,
+ MOJO_RESULT_INVALID_ARGUMENT,
core()->WriteMessage(h, nullptr, 0, handles, 2,
MOJO_WRITE_MESSAGE_FLAG_NONE));
ASSERT_EQ(1u, info.GetWriteMessageCallCount());
+ h = CreateMockHandle(&info);
+
// Can't send a handle twice in the same message.
- handles[1] = h2;
+ handles[0] = CreateMockHandle(&info2);
+ handles[1] = handles[0];
ASSERT_EQ(
MOJO_RESULT_BUSY,
core()->WriteMessage(h, nullptr, 0, handles, 2,
MOJO_WRITE_MESSAGE_FLAG_NONE));
ASSERT_EQ(1u, info.GetWriteMessageCallCount());
- // Note: Since we never successfully sent anything with it, |h2| should
- // still be valid.
- ASSERT_EQ(MOJO_RESULT_OK, core()->Close(h2));
-
ASSERT_EQ(MOJO_RESULT_OK, core()->Close(h));
}
@@ -462,22 +477,6 @@ TEST_F(CoreTest, InvalidArgumentsDeath) {
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|.
- ASSERT_DEATH_IF_SUPPORTED(
- core()->WriteMessage(h, nullptr, 0, nullptr, 1,
- MOJO_WRITE_MESSAGE_FLAG_NONE),
- kMemoryCheckFailedRegex);
-
- ASSERT_EQ(MOJO_RESULT_OK, core()->Close(h));
- }
-
// |ReadMessage()|:
// Only check arguments checked by |Core|, namely |handle|, |handles|, and
// |num_handles|.
@@ -711,14 +710,19 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) {
// Make sure that you can't pass either of the message pipe's handles over
// itself.
- ASSERT_EQ(MOJO_RESULT_BUSY,
+ ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
core()->WriteMessage(h_passing[0], kHello, kHelloSize,
&h_passing[0], 1,
MOJO_WRITE_MESSAGE_FLAG_NONE));
+ ASSERT_EQ(MOJO_RESULT_OK,
+ core()->CreateMessagePipe(nullptr, &h_passing[0], &h_passing[1]));
+
ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
core()->WriteMessage(h_passing[0], kHello, kHelloSize,
&h_passing[1], 1,
MOJO_WRITE_MESSAGE_FLAG_NONE));
+ ASSERT_EQ(MOJO_RESULT_OK,
+ core()->CreateMessagePipe(nullptr, &h_passing[0], &h_passing[1]));
MojoHandle h_passed[2];
MojoCreateMessagePipeOptions options;
« no previous file with comments | « mojo/edk/system/core_test_base.cc ('k') | mojo/edk/system/dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698