| Index: ipc/mojo/ipc_mojo_bootstrap.cc
|
| diff --git a/ipc/mojo/ipc_mojo_bootstrap.cc b/ipc/mojo/ipc_mojo_bootstrap.cc
|
| index 1b1308295ad2fae5e498c7118470ba70b7ad09ed..a9202700d9bb8b547ae489bd6cd05d71c045f455 100644
|
| --- a/ipc/mojo/ipc_mojo_bootstrap.cc
|
| +++ b/ipc/mojo/ipc_mojo_bootstrap.cc
|
| @@ -10,7 +10,12 @@
|
| #include "base/process/process_handle.h"
|
| #include "ipc/ipc_message_utils.h"
|
| #include "ipc/ipc_platform_file.h"
|
| +
|
| +#if defined(USE_CHROME_EDK)
|
| +#include "mojo/edk/embedder/platform_channel_pair.h"
|
| +#else
|
| #include "third_party/mojo/src/mojo/edk/embedder/platform_channel_pair.h"
|
| +#endif
|
|
|
| namespace IPC {
|
|
|
| @@ -29,20 +34,29 @@ class MojoServerBootstrap : public MojoBootstrap {
|
| bool OnMessageReceived(const Message& message) override;
|
| void OnChannelConnected(int32_t peer_pid) override;
|
|
|
| +#if defined(USE_CHROME_EDK)
|
| + mojo::edk::ScopedPlatformHandle server_pipe_;
|
| +#else
|
| mojo::embedder::ScopedPlatformHandle server_pipe_;
|
| +#endif
|
| bool connected_;
|
| + int32_t peer_pid_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(MojoServerBootstrap);
|
| };
|
|
|
| -MojoServerBootstrap::MojoServerBootstrap() : connected_(false) {
|
| +MojoServerBootstrap::MojoServerBootstrap() : connected_(false), peer_pid_(0) {
|
| }
|
|
|
| void MojoServerBootstrap::SendClientPipe(int32_t peer_pid) {
|
| DCHECK_EQ(state(), STATE_INITIALIZED);
|
| DCHECK(connected_);
|
|
|
| +#if defined(USE_CHROME_EDK)
|
| + mojo::edk::PlatformChannelPair channel_pair;
|
| +#else
|
| mojo::embedder::PlatformChannelPair channel_pair;
|
| +#endif
|
| server_pipe_ = channel_pair.PassServerHandle();
|
|
|
| base::Process peer_process =
|
| @@ -78,6 +92,7 @@ void MojoServerBootstrap::SendClientPipe(int32_t peer_pid) {
|
| void MojoServerBootstrap::OnChannelConnected(int32_t peer_pid) {
|
| DCHECK_EQ(state(), STATE_INITIALIZED);
|
| connected_ = true;
|
| + peer_pid_ = peer_pid;
|
| SendClientPipe(peer_pid);
|
| }
|
|
|
| @@ -90,8 +105,13 @@ bool MojoServerBootstrap::OnMessageReceived(const Message&) {
|
|
|
| set_state(STATE_READY);
|
| CHECK(server_pipe_.is_valid());
|
| +#if defined(USE_CHROME_EDK)
|
| delegate()->OnPipeAvailable(
|
| - mojo::embedder::ScopedPlatformHandle(server_pipe_.release()));
|
| + mojo::edk::ScopedPlatformHandle(server_pipe_.release()), peer_pid_);
|
| +#else
|
| + delegate()->OnPipeAvailable(
|
| + mojo::embedder::ScopedPlatformHandle(server_pipe_.release()), peer_pid_);
|
| +#endif
|
|
|
| return true;
|
| }
|
| @@ -107,10 +127,12 @@ class MojoClientBootstrap : public MojoBootstrap {
|
| bool OnMessageReceived(const Message& message) override;
|
| void OnChannelConnected(int32_t peer_pid) override;
|
|
|
| + int32 peer_pid_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(MojoClientBootstrap);
|
| };
|
|
|
| -MojoClientBootstrap::MojoClientBootstrap() {
|
| +MojoClientBootstrap::MojoClientBootstrap() : peer_pid_(0) {
|
| }
|
|
|
| bool MojoClientBootstrap::OnMessageReceived(const Message& message) {
|
| @@ -131,14 +153,21 @@ bool MojoClientBootstrap::OnMessageReceived(const Message& message) {
|
| // Sends ACK back.
|
| Send(new Message());
|
| set_state(STATE_READY);
|
| +#if defined(USE_CHROME_EDK)
|
| + delegate()->OnPipeAvailable(
|
| + mojo::edk::ScopedPlatformHandle(mojo::edk::PlatformHandle(
|
| + PlatformFileForTransitToPlatformFile(pipe))), peer_pid_);
|
| +#else
|
| delegate()->OnPipeAvailable(
|
| mojo::embedder::ScopedPlatformHandle(mojo::embedder::PlatformHandle(
|
| - PlatformFileForTransitToPlatformFile(pipe))));
|
| + PlatformFileForTransitToPlatformFile(pipe))), peer_pid_);
|
| +#endif
|
|
|
| return true;
|
| }
|
|
|
| void MojoClientBootstrap::OnChannelConnected(int32_t peer_pid) {
|
| + peer_pid_ = peer_pid;
|
| }
|
|
|
| } // namespace
|
|
|