| Index: ipc/ipc_channel_nacl.cc
|
| diff --git a/ipc/ipc_channel_nacl.cc b/ipc/ipc_channel_nacl.cc
|
| index f796af9ea3dc54bc86c501bc41d9ba839e8d3bfc..0928ba633057a48cde02aacdb6123b4aee840bd6 100644
|
| --- a/ipc/ipc_channel_nacl.cc
|
| +++ b/ipc/ipc_channel_nacl.cc
|
| @@ -62,7 +62,7 @@ bool ReadDataOnReaderThread(int pipe, MessageContents* contents) {
|
|
|
| } // namespace
|
|
|
| -class Channel::ChannelImpl::ReaderThreadRunner
|
| +class ChannelNacl::ReaderThreadRunner
|
| : public base::DelegateSimpleThread::Delegate {
|
| public:
|
| // |pipe|: A file descriptor from which we will read using imc_recvmsg.
|
| @@ -91,7 +91,7 @@ class Channel::ChannelImpl::ReaderThreadRunner
|
| DISALLOW_COPY_AND_ASSIGN(ReaderThreadRunner);
|
| };
|
|
|
| -Channel::ChannelImpl::ReaderThreadRunner::ReaderThreadRunner(
|
| +ChannelNacl::ReaderThreadRunner::ReaderThreadRunner(
|
| int pipe,
|
| base::Callback<void (scoped_ptr<MessageContents>)> data_read_callback,
|
| base::Callback<void ()> failure_callback,
|
| @@ -102,7 +102,7 @@ Channel::ChannelImpl::ReaderThreadRunner::ReaderThreadRunner(
|
| main_message_loop_(main_message_loop) {
|
| }
|
|
|
| -void Channel::ChannelImpl::ReaderThreadRunner::Run() {
|
| +void ChannelNacl::ReaderThreadRunner::Run() {
|
| while (true) {
|
| scoped_ptr<MessageContents> msg_contents(new MessageContents);
|
| bool success = ReadDataOnReaderThread(pipe_, msg_contents.get());
|
| @@ -118,9 +118,9 @@ void Channel::ChannelImpl::ReaderThreadRunner::Run() {
|
| }
|
| }
|
|
|
| -Channel::ChannelImpl::ChannelImpl(const IPC::ChannelHandle& channel_handle,
|
| - Mode mode,
|
| - Listener* listener)
|
| +ChannelNacl::ChannelNacl(const IPC::ChannelHandle& channel_handle,
|
| + Mode mode,
|
| + Listener* listener)
|
| : ChannelReader(listener),
|
| mode_(mode),
|
| waiting_connect_(true),
|
| @@ -135,17 +135,17 @@ Channel::ChannelImpl::ChannelImpl(const IPC::ChannelHandle& channel_handle,
|
| }
|
| }
|
|
|
| -Channel::ChannelImpl::~ChannelImpl() {
|
| +ChannelNacl::~ChannelNacl() {
|
| Close();
|
| }
|
|
|
| -base::ProcessId Channel::ChannelImpl::peer_pid() const {
|
| +base::ProcessId ChannelNacl::GetPeerPID() const {
|
| // This shouldn't actually get used in the untrusted side of the proxy, and we
|
| // don't have the real pid anyway.
|
| return -1;
|
| }
|
|
|
| -bool Channel::ChannelImpl::Connect() {
|
| +bool ChannelNacl::Connect() {
|
| if (pipe_ == -1) {
|
| DLOG(WARNING) << "Channel creation failed: " << pipe_name_;
|
| return false;
|
| @@ -159,9 +159,9 @@ bool Channel::ChannelImpl::Connect() {
|
| reader_thread_runner_.reset(
|
| new ReaderThreadRunner(
|
| pipe_,
|
| - base::Bind(&Channel::ChannelImpl::DidRecvMsg,
|
| + base::Bind(&ChannelNacl::DidRecvMsg,
|
| weak_ptr_factory_.GetWeakPtr()),
|
| - base::Bind(&Channel::ChannelImpl::ReadDidFail,
|
| + base::Bind(&ChannelNacl::ReadDidFail,
|
| weak_ptr_factory_.GetWeakPtr()),
|
| base::MessageLoopProxy::current()));
|
| reader_thread_.reset(
|
| @@ -172,13 +172,13 @@ bool Channel::ChannelImpl::Connect() {
|
| // If there were any messages queued before connection, send them.
|
| ProcessOutgoingMessages();
|
| base::MessageLoopProxy::current()->PostTask(FROM_HERE,
|
| - base::Bind(&Channel::ChannelImpl::CallOnChannelConnected,
|
| + base::Bind(&ChannelNacl::CallOnChannelConnected,
|
| weak_ptr_factory_.GetWeakPtr()));
|
|
|
| return true;
|
| }
|
|
|
| -void Channel::ChannelImpl::Close() {
|
| +void ChannelNacl::Close() {
|
| // For now, we assume that at shutdown, the reader thread will be woken with
|
| // a failure (see NaClIPCAdapter::BlockingRead and CloseChannel). Or... we
|
| // might simply be killed with no chance to clean up anyway :-).
|
| @@ -195,7 +195,7 @@ void Channel::ChannelImpl::Close() {
|
| output_queue_.clear();
|
| }
|
|
|
| -bool Channel::ChannelImpl::Send(Message* message) {
|
| +bool ChannelNacl::Send(Message* message) {
|
| DVLOG(2) << "sending message @" << message << " on channel @" << this
|
| << " with type " << message->type();
|
| scoped_ptr<Message> message_ptr(message);
|
| @@ -212,7 +212,7 @@ bool Channel::ChannelImpl::Send(Message* message) {
|
| return true;
|
| }
|
|
|
| -void Channel::ChannelImpl::DidRecvMsg(scoped_ptr<MessageContents> contents) {
|
| +void ChannelNacl::DidRecvMsg(scoped_ptr<MessageContents> contents) {
|
| // Close sets the pipe to -1. It's possible we'll get a buffer sent to us from
|
| // the reader thread after Close is called. If so, we ignore it.
|
| if (pipe_ == -1)
|
| @@ -233,11 +233,11 @@ void Channel::ChannelImpl::DidRecvMsg(scoped_ptr<MessageContents> contents) {
|
| ProcessIncomingMessages();
|
| }
|
|
|
| -void Channel::ChannelImpl::ReadDidFail() {
|
| +void ChannelNacl::ReadDidFail() {
|
| Close();
|
| }
|
|
|
| -bool Channel::ChannelImpl::CreatePipe(
|
| +bool ChannelNacl::CreatePipe(
|
| const IPC::ChannelHandle& channel_handle) {
|
| DCHECK(pipe_ == -1);
|
|
|
| @@ -256,7 +256,7 @@ bool Channel::ChannelImpl::CreatePipe(
|
| return true;
|
| }
|
|
|
| -bool Channel::ChannelImpl::ProcessOutgoingMessages() {
|
| +bool ChannelNacl::ProcessOutgoingMessages() {
|
| DCHECK(!waiting_connect_); // Why are we trying to send messages if there's
|
| // no connection?
|
| if (output_queue_.empty())
|
| @@ -304,11 +304,11 @@ bool Channel::ChannelImpl::ProcessOutgoingMessages() {
|
| return true;
|
| }
|
|
|
| -void Channel::ChannelImpl::CallOnChannelConnected() {
|
| - listener()->OnChannelConnected(peer_pid());
|
| +void ChannelNacl::CallOnChannelConnected() {
|
| + listener()->OnChannelConnected(GetPeerPID());
|
| }
|
|
|
| -Channel::ChannelImpl::ReadState Channel::ChannelImpl::ReadData(
|
| +ChannelNacl::ReadState ChannelNacl::ReadData(
|
| char* buffer,
|
| int buffer_len,
|
| int* bytes_read) {
|
| @@ -339,7 +339,7 @@ Channel::ChannelImpl::ReadState Channel::ChannelImpl::ReadData(
|
| return READ_SUCCEEDED;
|
| }
|
|
|
| -bool Channel::ChannelImpl::WillDispatchInputMessage(Message* msg) {
|
| +bool ChannelNacl::WillDispatchInputMessage(Message* msg) {
|
| uint16 header_fds = msg->header()->num_fds;
|
| CHECK(header_fds == input_fds_.size());
|
| if (header_fds == 0)
|
| @@ -354,44 +354,24 @@ bool Channel::ChannelImpl::WillDispatchInputMessage(Message* msg) {
|
| return true;
|
| }
|
|
|
| -bool Channel::ChannelImpl::DidEmptyInputBuffers() {
|
| +bool ChannelNacl::DidEmptyInputBuffers() {
|
| // When the input data buffer is empty, the fds should be too.
|
| return input_fds_.empty();
|
| }
|
|
|
| -void Channel::ChannelImpl::HandleInternalMessage(const Message& msg) {
|
| +void ChannelNacl::HandleInternalMessage(const Message& msg) {
|
| // The trusted side IPC::Channel should handle the "hello" handshake; we
|
| // should not receive the "Hello" message.
|
| NOTREACHED();
|
| }
|
|
|
| -//------------------------------------------------------------------------------
|
| -// Channel's methods simply call through to ChannelImpl.
|
| +// Channel's methods
|
|
|
| -Channel::Channel(const IPC::ChannelHandle& channel_handle,
|
| - Mode mode,
|
| - Listener* listener)
|
| - : channel_impl_(new ChannelImpl(channel_handle, mode, listener)) {
|
| -}
|
| -
|
| -Channel::~Channel() {
|
| - delete channel_impl_;
|
| -}
|
| -
|
| -bool Channel::Connect() {
|
| - return channel_impl_->Connect();
|
| -}
|
| -
|
| -void Channel::Close() {
|
| - channel_impl_->Close();
|
| -}
|
| -
|
| -base::ProcessId Channel::peer_pid() const {
|
| - return channel_impl_->peer_pid();
|
| -}
|
| -
|
| -bool Channel::Send(Message* message) {
|
| - return channel_impl_->Send(message);
|
| +// static
|
| +scoped_ptr<Channel> Channel::Create(
|
| + const IPC::ChannelHandle &channel_handle, Mode mode, Listener* listener) {
|
| + return scoped_ptr<Channel>(
|
| + new ChannelNacl(channel_handle, mode, listener));
|
| }
|
|
|
| } // namespace IPC
|
|
|