Index: mojo/runner/host/child_process.cc |
diff --git a/mojo/runner/host/child_process.cc b/mojo/runner/host/child_process.cc |
index 1cb0d6291af26112b340b9516f7040df488a0945..06a70fa4244dd3733e451cb41129bbe16d061187 100644 |
--- a/mojo/runner/host/child_process.cc |
+++ b/mojo/runner/host/child_process.cc |
@@ -28,6 +28,8 @@ |
#include "base/threading/thread_checker.h" |
#include "mojo/edk/embedder/embedder.h" |
#include "mojo/edk/embedder/platform_channel_pair.h" |
+#include "mojo/edk/embedder/process_delegate.h" |
+#include "mojo/edk/embedder/scoped_platform_handle.h" |
#include "mojo/message_pump/message_pump_mojo.h" |
#include "mojo/public/cpp/bindings/binding.h" |
#include "mojo/public/cpp/system/core.h" |
@@ -35,10 +37,6 @@ |
#include "mojo/runner/host/native_application_support.h" |
#include "mojo/runner/host/switches.h" |
#include "mojo/runner/init.h" |
-#include "third_party/mojo/src/mojo/edk/embedder/embedder.h" |
-#include "third_party/mojo/src/mojo/edk/embedder/platform_channel_pair.h" |
-#include "third_party/mojo/src/mojo/edk/embedder/process_delegate.h" |
-#include "third_party/mojo/src/mojo/edk/embedder/scoped_platform_handle.h" |
#if defined(OS_LINUX) && !defined(OS_ANDROID) |
#include "base/rand_util.h" |
@@ -51,10 +49,6 @@ namespace runner { |
namespace { |
-void DidCreateChannel(embedder::ChannelInfo* channel_info) { |
- DVLOG(2) << "ChildControllerImpl::DidCreateChannel()"; |
-} |
- |
// Blocker --------------------------------------------------------------------- |
// Blocks a thread until another thread unblocks it, at which point it unblocks |
@@ -104,18 +98,16 @@ class Blocker { |
class ChildControllerImpl; |
// Should be created and initialized on the main thread. |
-// TODO(use_chrome_edk) |
-// class AppContext : public edk::ProcessDelegate { |
-class AppContext : public embedder::ProcessDelegate { |
+class AppContext : public edk::ProcessDelegate { |
public: |
AppContext() |
: io_thread_("io_thread"), controller_thread_("controller_thread") {} |
~AppContext() override {} |
void Init() { |
- embedder::PreInitializeChildProcess(); |
+ edk::PreInitializeChildProcess(); |
// Initialize Mojo before starting any threads. |
- embedder::Init(); |
+ edk::Init(); |
// Create and start our I/O thread. |
base::Thread::Options io_thread_options(base::MessageLoop::TYPE_IO, 0); |
@@ -123,11 +115,9 @@ class AppContext : public embedder::ProcessDelegate { |
io_runner_ = io_thread_.task_runner().get(); |
CHECK(io_runner_.get()); |
- // TODO(vtl): This should be SLAVE, not NONE. |
// This must be created before controller_thread_ since MessagePumpMojo will |
// create a message pipe which requires this code to be run first. |
- embedder::InitIPCSupport(embedder::ProcessType::NONE, this, io_runner_, |
- embedder::ScopedPlatformHandle()); |
+ edk::InitIPCSupport(this, io_runner_); |
} |
void StartControllerThread() { |
@@ -169,7 +159,7 @@ class AppContext : public embedder::ProcessDelegate { |
controller_.reset(); |
// Next shutdown IPC. We'll unblock the main thread in OnShutdownComplete(). |
- embedder::ShutdownIPCSupport(); |
+ edk::ShutdownIPCSupport(); |
} |
// ProcessDelegate implementation. |
@@ -301,39 +291,34 @@ scoped_ptr<mojo::runner::LinuxSandbox> InitializeSandbox() { |
#endif |
ScopedMessagePipeHandle InitializeHostMessagePipe( |
- embedder::ScopedPlatformHandle platform_channel, |
+ edk::ScopedPlatformHandle platform_channel, |
scoped_refptr<base::TaskRunner> io_task_runner) { |
- ScopedMessagePipeHandle host_message_pipe( |
- embedder::CreateChannel(std::move(platform_channel), |
- base::Bind(&DidCreateChannel), io_task_runner)); |
- |
- if (base::CommandLine::ForCurrentProcess()->HasSwitch("use-new-edk")) { |
- // When using the new Mojo EDK, each message pipe is backed by a platform |
- // handle. The one platform handle that comes on the command line is used |
- // to bind to the ChildController interface. However we also want a |
- // platform handle to setup the communication channel by which we exchange |
- // handles to/from tokens, which is needed for sandboxed Windows |
- // processes. |
- char broker_handle[10]; |
- MojoHandleSignalsState state; |
- MojoResult rv = |
- MojoWait(host_message_pipe.get().value(), MOJO_HANDLE_SIGNAL_READABLE, |
- MOJO_DEADLINE_INDEFINITE, &state); |
- CHECK_EQ(MOJO_RESULT_OK, rv); |
- uint32_t num_bytes = arraysize(broker_handle); |
- rv = MojoReadMessage(host_message_pipe.get().value(), |
- broker_handle, &num_bytes, nullptr, 0, |
- MOJO_READ_MESSAGE_FLAG_NONE); |
- CHECK_EQ(MOJO_RESULT_OK, rv); |
- |
- edk::ScopedPlatformHandle broker_channel = |
- edk::PlatformChannelPair::PassClientHandleFromParentProcessFromString( |
- std::string(broker_handle, num_bytes)); |
- CHECK(broker_channel.is_valid()); |
- embedder::SetParentPipeHandle( |
- mojo::embedder::ScopedPlatformHandle(mojo::embedder::PlatformHandle( |
- broker_channel.release().handle))); |
- } |
+ ScopedMessagePipeHandle host_message_pipe(edk::CreateMessagePipe( |
+ std::move(platform_channel))); |
+ |
+ // When using the new Mojo EDK, each message pipe is backed by a platform |
+ // handle. The one platform handle that comes on the command line is used |
+ // to bind to the ChildController interface. However we also want a |
+ // platform handle to setup the communication channel by which we exchange |
+ // handles to/from tokens, which is needed for sandboxed Windows |
+ // processes. |
+ char broker_handle[10]; |
+ MojoHandleSignalsState state; |
+ MojoResult rv = |
+ MojoWait(host_message_pipe.get().value(), MOJO_HANDLE_SIGNAL_READABLE, |
+ MOJO_DEADLINE_INDEFINITE, &state); |
+ CHECK_EQ(MOJO_RESULT_OK, rv); |
+ uint32_t num_bytes = arraysize(broker_handle); |
+ rv = MojoReadMessage(host_message_pipe.get().value(), |
+ broker_handle, &num_bytes, nullptr, 0, |
+ MOJO_READ_MESSAGE_FLAG_NONE); |
+ CHECK_EQ(MOJO_RESULT_OK, rv); |
+ |
+ edk::ScopedPlatformHandle broker_channel = |
+ edk::PlatformChannelPair::PassClientHandleFromParentProcessFromString( |
+ std::string(broker_handle, num_bytes)); |
+ CHECK(broker_channel.is_valid()); |
+ edk::SetParentPipeHandle(std::move(broker_channel)) ; |
return host_message_pipe; |
} |
@@ -365,8 +350,8 @@ int ChildProcessMain() { |
sandbox = InitializeSandbox(); |
#endif |
- embedder::ScopedPlatformHandle platform_channel = |
- embedder::PlatformChannelPair::PassClientHandleFromParentProcess( |
+ edk::ScopedPlatformHandle platform_channel = |
+ edk::PlatformChannelPair::PassClientHandleFromParentProcess( |
command_line); |
CHECK(platform_channel.is_valid()); |