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

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

Issue 1946763002: EDK: Add MojoHandleRights to DispatcherTransport. (Closed) Base URL: https://github.com/domokit/mojo.git@work788_edk_handle_10
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/remote_data_pipe_impl_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/edk/system/remote_message_pipe_unittest.cc
diff --git a/mojo/edk/system/remote_message_pipe_unittest.cc b/mojo/edk/system/remote_message_pipe_unittest.cc
index a5280436cc6aa6ede10f1aa79491fd9cc1c98c77..0632f0dd50764c3dea768b100870f6180bb685da 100644
--- a/mojo/edk/system/remote_message_pipe_unittest.cc
+++ b/mojo/edk/system/remote_message_pipe_unittest.cc
@@ -20,6 +20,7 @@
#include "mojo/edk/system/channel.h"
#include "mojo/edk/system/channel_endpoint.h"
#include "mojo/edk/system/channel_endpoint_id.h"
+#include "mojo/edk/system/handle.h"
#include "mojo/edk/system/handle_transport.h"
#include "mojo/edk/system/incoming_endpoint.h"
#include "mojo/edk/system/message_pipe.h"
@@ -626,6 +627,9 @@ TEST_F(RemoteMessagePipeTest, HandlePassing) {
MessagePipeDispatcher::kDefaultCreateOptions);
auto local_mp = MessagePipe::CreateLocalLocal();
dispatcher->Init(local_mp.Clone(), 0);
+ Handle handle(std::move(dispatcher), MOJO_HANDLE_RIGHT_TRANSFER |
+ MOJO_HANDLE_RIGHT_READ |
+ MOJO_HANDLE_RIGHT_WRITE);
// Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do
// it later, it might already be readable.)
@@ -636,8 +640,7 @@ TEST_F(RemoteMessagePipeTest, HandlePassing) {
// Write to MP 0, port 0.
{
- DispatcherTransport transport(
- test::DispatcherTryStartTransport(dispatcher.get()));
+ DispatcherTransport transport(test::HandleTryStartTransport(handle));
EXPECT_TRUE(transport.is_valid());
std::vector<DispatcherTransport> transports;
@@ -648,10 +651,10 @@ TEST_F(RemoteMessagePipeTest, HandlePassing) {
&transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
transport.End();
- // |dispatcher| should have been closed. This is |DCHECK()|ed when the
- // |dispatcher| is destroyed.
- EXPECT_TRUE(dispatcher->HasOneRef());
- dispatcher = nullptr;
+ // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
+ // the |handle.dispatcher| is destroyed.
+ EXPECT_TRUE(handle.dispatcher->HasOneRef());
+ handle.reset();
}
// Wait.
@@ -771,6 +774,9 @@ TEST_F(RemoteMessagePipeTest, HandlePassingHalfClosed) {
MessagePipeDispatcher::kDefaultCreateOptions);
auto local_mp = MessagePipe::CreateLocalLocal();
dispatcher->Init(local_mp.Clone(), 0);
+ Handle handle(std::move(dispatcher), MOJO_HANDLE_RIGHT_TRANSFER |
+ MOJO_HANDLE_RIGHT_READ |
+ MOJO_HANDLE_RIGHT_WRITE);
hss = local_mp->GetHandleSignalsState(0);
EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals);
@@ -811,8 +817,7 @@ TEST_F(RemoteMessagePipeTest, HandlePassingHalfClosed) {
// Write to MP 0, port 0.
{
- DispatcherTransport transport(
- test::DispatcherTryStartTransport(dispatcher.get()));
+ DispatcherTransport transport(test::HandleTryStartTransport(handle));
EXPECT_TRUE(transport.is_valid());
std::vector<DispatcherTransport> transports;
@@ -823,10 +828,10 @@ TEST_F(RemoteMessagePipeTest, HandlePassingHalfClosed) {
&transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
transport.End();
- // |dispatcher| should have been closed. This is |DCHECK()|ed when the
- // |dispatcher| is destroyed.
- EXPECT_TRUE(dispatcher->HasOneRef());
- dispatcher = nullptr;
+ // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
+ // the |handle.dispatcher| is destroyed.
+ EXPECT_TRUE(handle.dispatcher->HasOneRef());
+ handle.reset();
}
// Wait.
@@ -919,10 +924,13 @@ TEST_F(RemoteMessagePipeTest, SharedBufferPassing) {
&result);
EXPECT_EQ(MOJO_RESULT_OK, result);
ASSERT_TRUE(dispatcher);
+ Handle handle(std::move(dispatcher),
+ MOJO_HANDLE_RIGHT_DUPLICATE | MOJO_HANDLE_RIGHT_TRANSFER |
+ MOJO_HANDLE_RIGHT_READ | MOJO_HANDLE_RIGHT_WRITE);
// Make a mapping.
std::unique_ptr<PlatformSharedBufferMapping> mapping0;
- EXPECT_EQ(MOJO_RESULT_OK, dispatcher->MapBuffer(
+ EXPECT_EQ(MOJO_RESULT_OK, handle.dispatcher->MapBuffer(
0, 100, MOJO_MAP_BUFFER_FLAG_NONE, &mapping0));
ASSERT_TRUE(mapping0);
ASSERT_TRUE(mapping0->GetBase());
@@ -940,8 +948,7 @@ TEST_F(RemoteMessagePipeTest, SharedBufferPassing) {
// Write to MP 0, port 0.
{
- DispatcherTransport transport(
- test::DispatcherTryStartTransport(dispatcher.get()));
+ DispatcherTransport transport(test::HandleTryStartTransport(handle));
EXPECT_TRUE(transport.is_valid());
std::vector<DispatcherTransport> transports;
@@ -952,10 +959,10 @@ TEST_F(RemoteMessagePipeTest, SharedBufferPassing) {
&transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
transport.End();
- // |dispatcher| should have been closed. This is |DCHECK()|ed when the
- // |dispatcher| is destroyed.
- EXPECT_TRUE(dispatcher->HasOneRef());
- dispatcher = nullptr;
+ // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
+ // the |handle.dispatcher| is destroyed.
+ EXPECT_TRUE(handle.dispatcher->HasOneRef());
+ handle.reset();
}
// Wait.
@@ -1040,6 +1047,10 @@ TEST_F(RemoteMessagePipeTest, PlatformHandlePassing) {
// be passed.
auto dispatcher =
PlatformHandleDispatcher::Create(PlatformHandleFromFILE(std::move(fp)));
+ // TODO(vtl): Are these the correct rights for a |PlatformHandleDispatcher|?
+ Handle handle(std::move(dispatcher), MOJO_HANDLE_RIGHT_TRANSFER |
+ MOJO_HANDLE_RIGHT_READ |
+ MOJO_HANDLE_RIGHT_WRITE);
// Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do
// it later, it might already be readable.)
@@ -1050,8 +1061,7 @@ TEST_F(RemoteMessagePipeTest, PlatformHandlePassing) {
// Write to MP 0, port 0.
{
- DispatcherTransport transport(
- test::DispatcherTryStartTransport(dispatcher.get()));
+ DispatcherTransport transport(test::HandleTryStartTransport(handle));
EXPECT_TRUE(transport.is_valid());
std::vector<DispatcherTransport> transports;
@@ -1062,10 +1072,10 @@ TEST_F(RemoteMessagePipeTest, PlatformHandlePassing) {
&transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
transport.End();
- // |dispatcher| should have been closed. This is |DCHECK()|ed when the
- // |dispatcher| is destroyed.
- EXPECT_TRUE(dispatcher->HasOneRef());
- dispatcher = nullptr;
+ // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
+ // the |handle.dispatcher| is destroyed.
+ EXPECT_TRUE(handle.dispatcher->HasOneRef());
+ handle.reset();
}
// Wait.
@@ -1175,6 +1185,9 @@ TEST_F(RemoteMessagePipeTest, PassMessagePipeHandleAcrossAndBack) {
MessagePipeDispatcher::kDefaultCreateOptions);
auto local_mp = MessagePipe::CreateLocalLocal();
dispatcher->Init(local_mp.Clone(), 0);
+ Handle handle(std::move(dispatcher), MOJO_HANDLE_RIGHT_TRANSFER |
+ MOJO_HANDLE_RIGHT_READ |
+ MOJO_HANDLE_RIGHT_WRITE);
// Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do
// it later, it might already be readable.)
@@ -1185,8 +1198,7 @@ TEST_F(RemoteMessagePipeTest, PassMessagePipeHandleAcrossAndBack) {
// Write to MP 0, port 0.
{
- DispatcherTransport transport(
- test::DispatcherTryStartTransport(dispatcher.get()));
+ DispatcherTransport transport(test::HandleTryStartTransport(handle));
EXPECT_TRUE(transport.is_valid());
std::vector<DispatcherTransport> transports;
@@ -1197,10 +1209,10 @@ TEST_F(RemoteMessagePipeTest, PassMessagePipeHandleAcrossAndBack) {
&transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
transport.End();
- // |dispatcher| should have been closed. This is |DCHECK()|ed when the
- // |dispatcher| is destroyed.
- EXPECT_TRUE(dispatcher->HasOneRef());
- dispatcher = nullptr;
+ // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
+ // the |handle.dispatcher| is destroyed.
+ EXPECT_TRUE(handle.dispatcher->HasOneRef());
+ handle.reset();
}
// Wait.
@@ -1233,6 +1245,10 @@ TEST_F(RemoteMessagePipeTest, PassMessagePipeHandleAcrossAndBack) {
dispatcher = RefPtr<MessagePipeDispatcher>(
static_cast<MessagePipeDispatcher*>(read_dispatchers[0].get()));
read_dispatchers.clear();
+ // TODO(vtl): We should really get |handle| from |ReadMessage()|.
+ handle = Handle(std::move(dispatcher), MOJO_HANDLE_RIGHT_TRANSFER |
+ MOJO_HANDLE_RIGHT_READ |
+ MOJO_HANDLE_RIGHT_WRITE);
// Now pass it back.
@@ -1245,8 +1261,7 @@ TEST_F(RemoteMessagePipeTest, PassMessagePipeHandleAcrossAndBack) {
// Write to MP 1, port 1.
{
- DispatcherTransport transport(
- test::DispatcherTryStartTransport(dispatcher.get()));
+ DispatcherTransport transport(test::HandleTryStartTransport(handle));
EXPECT_TRUE(transport.is_valid());
std::vector<DispatcherTransport> transports;
@@ -1257,10 +1272,10 @@ TEST_F(RemoteMessagePipeTest, PassMessagePipeHandleAcrossAndBack) {
&transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
transport.End();
- // |dispatcher| should have been closed. This is |DCHECK()|ed when the
- // |dispatcher| is destroyed.
- EXPECT_TRUE(dispatcher->HasOneRef());
- dispatcher = nullptr;
+ // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
+ // the |handle.dispatcher| is destroyed.
+ EXPECT_TRUE(handle.dispatcher->HasOneRef());
+ handle.reset();
}
// Wait.
« no previous file with comments | « mojo/edk/system/remote_data_pipe_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698