Index: mojo/shell/runner/child/runner_connection.cc |
diff --git a/mojo/shell/runner/child/runner_connection.cc b/mojo/shell/runner/child/runner_connection.cc |
index 313c00a338d7bdade01b3a465639378835f78a0b..75b4648dc0db58f70f7753fe65959533d4e84baa 100644 |
--- a/mojo/shell/runner/child/runner_connection.cc |
+++ b/mojo/shell/runner/child/runner_connection.cc |
@@ -74,6 +74,13 @@ |
using GotApplicationRequestCallback = |
base::Callback<void(InterfaceRequest<mojom::ShellClient>)>; |
+void OnCreateMessagePipe(ScopedMessagePipeHandle* result, |
+ Blocker::Unblocker unblocker, |
+ ScopedMessagePipeHandle pipe) { |
+ *result = std::move(pipe); |
+ unblocker.Unblock(base::Bind(&base::DoNothing)); |
+} |
+ |
void OnGotApplicationRequest(InterfaceRequest<mojom::ShellClient>* out_request, |
InterfaceRequest<mojom::ShellClient> request) { |
*out_request = std::move(request); |
@@ -222,10 +229,13 @@ |
std::string primordial_pipe_token = |
base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
switches::kPrimordialPipeToken); |
- handle = edk::CreateChildMessagePipe(primordial_pipe_token); |
- } |
- |
- DCHECK(handle.is_valid()); |
+ Blocker blocker; |
+ edk::CreateChildMessagePipe( |
+ primordial_pipe_token, |
+ base::Bind(&OnCreateMessagePipe, base::Unretained(&handle), |
+ blocker.GetUnblocker())); |
+ blocker.Block(); |
+ } |
Blocker blocker; |
controller_runner_->PostTask( |