Index: ipc/mojo/ipc_channel_mojo.h |
diff --git a/ipc/mojo/ipc_channel_mojo.h b/ipc/mojo/ipc_channel_mojo.h |
index dd57bc8bf9aa45d3ed57581cc0fc2ab19d1e2e26..22c56a9e6894643e51f6f3838131dc6da513c8ce 100644 |
--- a/ipc/mojo/ipc_channel_mojo.h |
+++ b/ipc/mojo/ipc_channel_mojo.h |
@@ -24,6 +24,13 @@ struct ChannelInfo; |
namespace IPC { |
+namespace internal { |
+class ControlReader; |
+class ServerControlReader; |
+class ClientControlReader; |
+class MessageReader; |
+} |
+ |
// Mojo-based IPC::Channel implementation over a platform handle. |
// |
// ChannelMojo builds Mojo MessagePipe using underlying pipe given by |
@@ -74,6 +81,15 @@ class IPC_MOJO_EXPORT ChannelMojo : public Channel { |
#if defined(OS_POSIX) && !defined(OS_NACL) |
virtual int GetClientFileDescriptor() const OVERRIDE; |
virtual int TakeClientFileDescriptor() OVERRIDE; |
+ |
+ // These access protected API of IPC::Message, which has ChannelMojo |
+ // as a friend class. |
+ static MojoResult WriteToFileDescriptorSet( |
+ const std::vector<MojoHandle>& handle_buffer, |
+ Message* message); |
+ static MojoResult ReadFromFileDescriptorSet(const Message& message, |
+ std::vector<MojoHandle>* handles); |
+ |
#endif // defined(OS_POSIX) && !defined(OS_NACL) |
// Called from MessagePipeReader implementations |
@@ -83,6 +99,12 @@ class IPC_MOJO_EXPORT ChannelMojo : public Channel { |
void OnPipeError(internal::MessagePipeReader* reader); |
void set_peer_pid(base::ProcessId pid) { peer_pid_ = pid; } |
+ protected: |
+ ChannelMojo(const ChannelHandle& channel_handle, |
+ Mode mode, |
+ Listener* listener, |
+ scoped_refptr<base::TaskRunner> io_thread_task_runner); |
+ |
private: |
struct ChannelInfoDeleter { |
void operator()(mojo::embedder::ChannelInfo* ptr) const; |
@@ -93,14 +115,6 @@ class IPC_MOJO_EXPORT ChannelMojo : public Channel { |
// notifications invoked by them. |
typedef internal::MessagePipeReader::DelayedDeleter ReaderDeleter; |
- class ControlReader; |
- class ServerControlReader; |
- class ClientControlReader; |
- class MessageReader; |
- |
- ChannelMojo(scoped_ptr<Channel> bootstrap, Mode mode, Listener* listener, |
- scoped_refptr<base::TaskRunner> io_thread_task_runner); |
- |
void InitOnIOThread(); |
scoped_ptr<Channel> bootstrap_; |
@@ -110,8 +124,8 @@ class IPC_MOJO_EXPORT ChannelMojo : public Channel { |
scoped_ptr<mojo::embedder::ChannelInfo, |
ChannelInfoDeleter> channel_info_; |
- scoped_ptr<ControlReader, ReaderDeleter> control_reader_; |
- scoped_ptr<MessageReader, ReaderDeleter> message_reader_; |
+ scoped_ptr<internal::ControlReader, ReaderDeleter> control_reader_; |
+ scoped_ptr<internal::MessageReader, ReaderDeleter> message_reader_; |
ScopedVector<Message> pending_messages_; |
base::WeakPtrFactory<ChannelMojo> weak_factory_; |