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

Unified Diff: ipc/mojo/ipc_mojo_bootstrap.cc

Issue 1350023003: Add a Mojo EDK for Chrome that uses one OS pipe per message pipe. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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
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..8a1ef8fbc0d629ffe2396145bf00079886fec598 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 {
@@ -31,11 +36,12 @@ class MojoServerBootstrap : public MojoBootstrap {
mojo::embedder::ScopedPlatformHandle server_pipe_;
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) {
@@ -78,6 +84,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);
}
@@ -91,7 +98,7 @@ bool MojoServerBootstrap::OnMessageReceived(const Message&) {
set_state(STATE_READY);
CHECK(server_pipe_.is_valid());
delegate()->OnPipeAvailable(
- mojo::embedder::ScopedPlatformHandle(server_pipe_.release()));
+ mojo::embedder::ScopedPlatformHandle(server_pipe_.release()), peer_pid_);
return true;
}
@@ -107,10 +114,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) {
@@ -133,12 +142,13 @@ bool MojoClientBootstrap::OnMessageReceived(const Message& message) {
set_state(STATE_READY);
delegate()->OnPipeAvailable(
mojo::embedder::ScopedPlatformHandle(mojo::embedder::PlatformHandle(
- PlatformFileForTransitToPlatformFile(pipe))));
+ PlatformFileForTransitToPlatformFile(pipe))), peer_pid_);
return true;
}
void MojoClientBootstrap::OnChannelConnected(int32_t peer_pid) {
+ peer_pid_ = peer_pid;
}
} // namespace

Powered by Google App Engine
This is Rietveld 408576698