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

Unified Diff: mojo/edk/embedder/embedder_unittest.cc

Issue 2680973006: Mojo EDK: Add safe process connection API (Closed)
Patch Set: . Created 3 years, 10 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/embedder/embedder.cc ('k') | mojo/edk/embedder/named_platform_channel_pair.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/edk/embedder/embedder_unittest.cc
diff --git a/mojo/edk/embedder/embedder_unittest.cc b/mojo/edk/embedder/embedder_unittest.cc
index f0fe44050d69149b390359d99192c0c358acf7da..2eb6bebb9deb53ca539dfb5c9dab69a6e5e5f9a8 100644
--- a/mojo/edk/embedder/embedder_unittest.cc
+++ b/mojo/edk/embedder/embedder_unittest.cc
@@ -16,6 +16,7 @@
#include "base/files/file.h"
#include "base/logging.h"
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "base/memory/shared_memory.h"
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
@@ -26,6 +27,7 @@
#include "mojo/edk/embedder/embedder.h"
#include "mojo/edk/embedder/named_platform_handle.h"
#include "mojo/edk/embedder/named_platform_handle_utils.h"
+#include "mojo/edk/embedder/pending_process_connection.h"
#include "mojo/edk/embedder/platform_channel_pair.h"
#include "mojo/edk/embedder/test_embedder.h"
#include "mojo/edk/system/test_utils.h"
@@ -189,13 +191,12 @@ TEST_F(EmbedderTest, ChannelsHandlePassing) {
}
TEST_F(EmbedderTest, PipeSetup) {
- std::string child_token = GenerateRandomToken();
- std::string pipe_token = GenerateRandomToken();
-
- ScopedMessagePipeHandle parent_mp =
- CreateParentMessagePipe(pipe_token, child_token);
- ScopedMessagePipeHandle child_mp =
- CreateChildMessagePipe(pipe_token);
+ // Ensures that a pending process connection's message pipe can be claimed by
+ // the host process itself.
+ PendingProcessConnection process;
+ std::string pipe_token;
+ ScopedMessagePipeHandle parent_mp = process.CreateMessagePipe(&pipe_token);
+ ScopedMessagePipeHandle child_mp = CreateChildMessagePipe(pipe_token);
const std::string kHello = "hello";
WriteMessage(parent_mp.get().value(), kHello);
@@ -206,13 +207,10 @@ TEST_F(EmbedderTest, PipeSetup) {
TEST_F(EmbedderTest, PipeSetup_LaunchDeath) {
PlatformChannelPair pair;
- std::string child_token = GenerateRandomToken();
- std::string pipe_token = GenerateRandomToken();
-
- ScopedMessagePipeHandle parent_mp =
- CreateParentMessagePipe(pipe_token, child_token);
- ChildProcessLaunched(base::GetCurrentProcessHandle(), pair.PassServerHandle(),
- child_token);
+ PendingProcessConnection process;
+ std::string pipe_token;
+ ScopedMessagePipeHandle parent_mp = process.CreateMessagePipe(&pipe_token);
+ process.Connect(base::GetCurrentProcessHandle(), pair.PassServerHandle());
// Close the remote end, simulating child death before the child connects to
// the reserved port.
@@ -227,13 +225,14 @@ TEST_F(EmbedderTest, PipeSetup_LaunchDeath) {
TEST_F(EmbedderTest, PipeSetup_LaunchFailure) {
PlatformChannelPair pair;
- std::string child_token = GenerateRandomToken();
- std::string pipe_token = GenerateRandomToken();
+ auto process = base::MakeUnique<PendingProcessConnection>();
+ std::string pipe_token;
+ ScopedMessagePipeHandle parent_mp = process->CreateMessagePipe(&pipe_token);
- ScopedMessagePipeHandle parent_mp =
- CreateParentMessagePipe(pipe_token, child_token);
+ // Ensure that if a PendingProcessConnection goes away before Connect() is
+ // called, any message pipes associated with it detect peer closure.
+ process.reset();
- ChildProcessLaunchFailed(child_token);
EXPECT_EQ(MOJO_RESULT_OK, MojoWait(parent_mp.get().value(),
MOJO_HANDLE_SIGNAL_PEER_CLOSED,
MOJO_DEADLINE_INDEFINITE,
« no previous file with comments | « mojo/edk/embedder/embedder.cc ('k') | mojo/edk/embedder/named_platform_channel_pair.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698