| Index: remoting/protocol/channel_multiplexer.cc | 
| diff --git a/remoting/protocol/channel_multiplexer.cc b/remoting/protocol/channel_multiplexer.cc | 
| index 8cdbf0d60af091469c6acb327211529f2e8f2444..e18c973c48989ca295b1e9d31639b8056bd002a0 100644 | 
| --- a/remoting/protocol/channel_multiplexer.cc | 
| +++ b/remoting/protocol/channel_multiplexer.cc | 
| @@ -14,8 +14,8 @@ | 
| #include "base/stl_util.h" | 
| #include "base/thread_task_runner_handle.h" | 
| #include "net/base/net_errors.h" | 
| -#include "net/socket/stream_socket.h" | 
| #include "remoting/protocol/message_serialization.h" | 
| +#include "remoting/protocol/p2p_stream_socket.h" | 
|  | 
| namespace remoting { | 
| namespace protocol { | 
| @@ -77,7 +77,7 @@ class ChannelMultiplexer::MuxChannel { | 
| void set_receive_id(int id) { receive_id_ = id; } | 
|  | 
| // Called by ChannelMultiplexer. | 
| -  scoped_ptr<net::StreamSocket> CreateSocket(); | 
| +  scoped_ptr<P2PStreamSocket> CreateSocket(); | 
| void OnIncomingPacket(scoped_ptr<MultiplexPacket> packet, | 
| const base::Closure& done_task); | 
| void OnBaseChannelError(int error); | 
| @@ -100,7 +100,7 @@ class ChannelMultiplexer::MuxChannel { | 
| DISALLOW_COPY_AND_ASSIGN(MuxChannel); | 
| }; | 
|  | 
| -class ChannelMultiplexer::MuxSocket : public net::StreamSocket, | 
| +class ChannelMultiplexer::MuxSocket : public P2PStreamSocket, | 
| public base::NonThreadSafe, | 
| public base::SupportsWeakPtr<MuxSocket> { | 
| public: | 
| @@ -111,7 +111,7 @@ class ChannelMultiplexer::MuxSocket : public net::StreamSocket, | 
| void OnBaseChannelError(int error); | 
| void OnPacketReceived(); | 
|  | 
| -  // net::StreamSocket interface. | 
| +  // P2PStreamSocket interface. | 
| int Read(net::IOBuffer* buffer, | 
| int buffer_len, | 
| const net::CompletionCallback& callback) override; | 
| @@ -119,59 +119,6 @@ class ChannelMultiplexer::MuxSocket : public net::StreamSocket, | 
| int buffer_len, | 
| const net::CompletionCallback& callback) override; | 
|  | 
| -  int SetReceiveBufferSize(int32 size) override { | 
| -    NOTIMPLEMENTED(); | 
| -    return net::ERR_NOT_IMPLEMENTED; | 
| -  } | 
| -  int SetSendBufferSize(int32 size) override { | 
| -    NOTIMPLEMENTED(); | 
| -    return net::ERR_NOT_IMPLEMENTED; | 
| -  } | 
| - | 
| -  int Connect(const net::CompletionCallback& callback) override { | 
| -    NOTIMPLEMENTED(); | 
| -    return net::ERR_NOT_IMPLEMENTED; | 
| -  } | 
| -  void Disconnect() override { NOTIMPLEMENTED(); } | 
| -  bool IsConnected() const override { | 
| -    NOTIMPLEMENTED(); | 
| -    return true; | 
| -  } | 
| -  bool IsConnectedAndIdle() const override { | 
| -    NOTIMPLEMENTED(); | 
| -    return false; | 
| -  } | 
| -  int GetPeerAddress(net::IPEndPoint* address) const override { | 
| -    NOTIMPLEMENTED(); | 
| -    return net::ERR_NOT_IMPLEMENTED; | 
| -  } | 
| -  int GetLocalAddress(net::IPEndPoint* address) const override { | 
| -    NOTIMPLEMENTED(); | 
| -    return net::ERR_NOT_IMPLEMENTED; | 
| -  } | 
| -  const net::BoundNetLog& NetLog() const override { | 
| -    NOTIMPLEMENTED(); | 
| -    return net_log_; | 
| -  } | 
| -  void SetSubresourceSpeculation() override { NOTIMPLEMENTED(); } | 
| -  void SetOmniboxSpeculation() override { NOTIMPLEMENTED(); } | 
| -  bool WasEverUsed() const override { return true; } | 
| -  bool UsingTCPFastOpen() const override { return false; } | 
| -  bool WasNpnNegotiated() const override { return false; } | 
| -  net::NextProto GetNegotiatedProtocol() const override { | 
| -    return net::kProtoUnknown; | 
| -  } | 
| -  bool GetSSLInfo(net::SSLInfo* ssl_info) override { | 
| -    NOTIMPLEMENTED(); | 
| -    return false; | 
| -  } | 
| -  void GetConnectionAttempts(net::ConnectionAttempts* out) const override { | 
| -    out->clear(); | 
| -  } | 
| -  void ClearConnectionAttempts() override {} | 
| -  void AddConnectionAttempts(const net::ConnectionAttempts& attempts) override { | 
| -  } | 
| - | 
| private: | 
| MuxChannel* channel_; | 
|  | 
| @@ -185,8 +132,6 @@ class ChannelMultiplexer::MuxSocket : public net::StreamSocket, | 
| int write_result_; | 
| net::CompletionCallback write_callback_; | 
|  | 
| -  net::BoundNetLog net_log_; | 
| - | 
| DISALLOW_COPY_AND_ASSIGN(MuxSocket); | 
| }; | 
|  | 
| @@ -209,7 +154,7 @@ ChannelMultiplexer::MuxChannel::~MuxChannel() { | 
| STLDeleteElements(&pending_packets_); | 
| } | 
|  | 
| -scoped_ptr<net::StreamSocket> ChannelMultiplexer::MuxChannel::CreateSocket() { | 
| +scoped_ptr<P2PStreamSocket> ChannelMultiplexer::MuxChannel::CreateSocket() { | 
| DCHECK(!socket_);  // Can't create more than one socket per channel. | 
| scoped_ptr<MuxSocket> result(new MuxSocket(this)); | 
| socket_ = result.get(); | 
| @@ -420,7 +365,7 @@ void ChannelMultiplexer::CancelChannelCreation(const std::string& name) { | 
| } | 
|  | 
| void ChannelMultiplexer::OnBaseChannelReady( | 
| -    scoped_ptr<net::StreamSocket> socket) { | 
| +    scoped_ptr<P2PStreamSocket> socket) { | 
| base_channel_factory_ = nullptr; | 
| base_channel_ = socket.Pass(); | 
|  | 
| @@ -429,7 +374,8 @@ void ChannelMultiplexer::OnBaseChannelReady( | 
| reader_.StartReading(base_channel_.get(), | 
| base::Bind(&ChannelMultiplexer::OnBaseChannelError, | 
| base::Unretained(this))); | 
| -    writer_.Init(base_channel_.get(), | 
| +    writer_.Init(base::Bind(&P2PStreamSocket::Write, | 
| +                            base::Unretained(base_channel_.get())), | 
| base::Bind(&ChannelMultiplexer::OnBaseChannelError, | 
| base::Unretained(this))); | 
| } | 
| @@ -451,7 +397,7 @@ void ChannelMultiplexer::DoCreatePendingChannels() { | 
|  | 
| PendingChannel c = pending_channels_.front(); | 
| pending_channels_.erase(pending_channels_.begin()); | 
| -  scoped_ptr<net::StreamSocket> socket; | 
| +  scoped_ptr<P2PStreamSocket> socket; | 
| if (base_channel_.get()) | 
| socket = GetOrCreateChannel(c.name)->CreateSocket(); | 
| c.callback.Run(socket.Pass()); | 
|  |