Index: mojo/public/c/system/tests/core_unittest.cc |
diff --git a/mojo/public/c/system/tests/core_unittest.cc b/mojo/public/c/system/tests/core_unittest.cc |
index b8667fd80faa6047e5aa2d30bc297843e3e41cac..4e3686048511dafe62c6e7a3dbe888786de4cd82 100644 |
--- a/mojo/public/c/system/tests/core_unittest.cc |
+++ b/mojo/public/c/system/tests/core_unittest.cc |
@@ -24,6 +24,22 @@ const char* MinimalCppTest(); |
namespace mojo { |
namespace { |
+const MojoHandleRights kDefaultMessagePipeHandleRights = |
+ MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ | |
+ MOJO_HANDLE_RIGHT_WRITE | MOJO_HANDLE_RIGHT_GET_OPTIONS | |
+ MOJO_HANDLE_RIGHT_SET_OPTIONS; |
+const MojoHandleRights kDefaultDataPipeProducerHandleRights = |
+ MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_WRITE | |
+ MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS; |
+const MojoHandleRights kDefaultDataPipeConsumerHandleRights = |
+ MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ | |
+ MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS; |
+const MojoHandleRights kDefaultSharedBufferHandleRights = |
+ MOJO_HANDLE_RIGHT_DUPLICATE | MOJO_HANDLE_RIGHT_TRANSFER | |
+ MOJO_HANDLE_RIGHT_GET_OPTIONS | MOJO_HANDLE_RIGHT_SET_OPTIONS | |
+ MOJO_HANDLE_RIGHT_MAP_READABLE | MOJO_HANDLE_RIGHT_MAP_WRITABLE | |
+ MOJO_HANDLE_RIGHT_MAP_EXECUTABLE; |
+ |
TEST(CoreTest, GetTimeTicksNow) { |
const MojoTimeTicks start = MojoGetTimeTicksNow(); |
EXPECT_NE(static_cast<MojoTimeTicks>(0), start) |
@@ -42,6 +58,11 @@ TEST(CoreTest, InvalidHandle) { |
// Close: |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(MOJO_HANDLE_INVALID)); |
+ // GetRights: |
+ MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
+ MojoGetRights(MOJO_HANDLE_INVALID, &rights)); |
+ |
// Wait: |
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
MojoWait(MOJO_HANDLE_INVALID, ~MOJO_HANDLE_SIGNAL_NONE, 1000000u, |
@@ -129,6 +150,15 @@ TEST(CoreTest, BasicMessagePipe) { |
EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(nullptr, &h0, &h1)); |
EXPECT_NE(h0, MOJO_HANDLE_INVALID); |
EXPECT_NE(h1, MOJO_HANDLE_INVALID); |
+ EXPECT_NE(h0, h1); |
+ |
+ // Both handles should have the correct rights. |
+ MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h0, &rights)); |
+ EXPECT_EQ(kDefaultMessagePipeHandleRights, rights); |
+ rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h1, &rights)); |
+ EXPECT_EQ(kDefaultMessagePipeHandleRights, rights); |
// Shouldn't be readable, we haven't written anything. |
MojoHandleSignalsState state; |
@@ -225,6 +255,15 @@ TEST(CoreTest, MAYBE_BasicDataPipe) { |
EXPECT_EQ(MOJO_RESULT_OK, MojoCreateDataPipe(nullptr, &hp, &hc)); |
EXPECT_NE(hp, MOJO_HANDLE_INVALID); |
EXPECT_NE(hc, MOJO_HANDLE_INVALID); |
+ EXPECT_NE(hp, hc); |
+ |
+ // Both handles should have the correct rights. |
+ MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(hp, &rights)); |
+ EXPECT_EQ(kDefaultDataPipeProducerHandleRights, rights); |
+ rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(hc, &rights)); |
+ EXPECT_EQ(kDefaultDataPipeConsumerHandleRights, rights); |
// The consumer |hc| shouldn't be readable. |
MojoHandleSignalsState state; |
@@ -583,6 +622,11 @@ TEST(CoreTest, MAYBE_BasicSharedBuffer) { |
EXPECT_EQ(MOJO_RESULT_OK, MojoCreateSharedBuffer(nullptr, 100, &h0)); |
EXPECT_NE(h0, MOJO_HANDLE_INVALID); |
+ // The handle should have the correct rights. |
+ MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h0, &rights)); |
+ EXPECT_EQ(kDefaultSharedBufferHandleRights, rights); |
+ |
// Check information about the buffer from |h0|. |
MojoBufferInformation info = {}; |
static const uint32_t kInfoSize = static_cast<uint32_t>(sizeof(info)); |
@@ -603,6 +647,11 @@ TEST(CoreTest, MAYBE_BasicSharedBuffer) { |
EXPECT_EQ(MOJO_RESULT_OK, MojoDuplicateBufferHandle(h0, nullptr, &h1)); |
EXPECT_NE(h1, MOJO_HANDLE_INVALID); |
+ // The new handle should have the correct rights. |
+ rights = MOJO_HANDLE_RIGHT_NONE; |
+ EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h1, &rights)); |
+ EXPECT_EQ(kDefaultSharedBufferHandleRights, rights); |
+ |
// Check information about the buffer from |h1|. |
info = MojoBufferInformation(); |
EXPECT_EQ(MOJO_RESULT_OK, MojoGetBufferInformation(h1, &info, kInfoSize)); |