| Index: chrome/browser/extensions/api/socket/tcp_socket.h | 
| diff --git a/chrome/browser/extensions/api/socket/tcp_socket.h b/chrome/browser/extensions/api/socket/tcp_socket.h | 
| index fc0922bcbdb565a209a9c0d181a4ea670ae94ebc..6e69c633772c60977479ddddf11e361767fa322b 100644 | 
| --- a/chrome/browser/extensions/api/socket/tcp_socket.h | 
| +++ b/chrome/browser/extensions/api/socket/tcp_socket.h | 
| @@ -12,6 +12,7 @@ | 
| // This looks like it should be forward-declarable, but it does some tricky | 
| // moves that make it easier to just include it. | 
| #include "net/socket/tcp_client_socket.h" | 
| +#include "net/socket/tcp_server_socket.h" | 
|  | 
| namespace net { | 
| class Socket; | 
| @@ -25,6 +26,11 @@ class TCPSocket : public Socket { | 
| public: | 
| TCPSocket(const std::string& owner_extension_id, | 
| ApiResourceEventNotifier* event_notifier); | 
| +  TCPSocket(net::TCPClientSocket* tcp_client_socket, | 
| +            const std::string& owner_extension_id, | 
| +            ApiResourceEventNotifier* event_notifier, | 
| +            bool is_connected = false); | 
| + | 
| virtual ~TCPSocket(); | 
|  | 
| virtual void Connect(const std::string& address, | 
| @@ -43,6 +49,9 @@ class TCPSocket : public Socket { | 
| const CompletionCallback& callback) OVERRIDE; | 
| virtual bool SetKeepAlive(bool enable, int delay) OVERRIDE; | 
| virtual bool SetNoDelay(bool no_delay) OVERRIDE; | 
| +  virtual int Listen(int backlog, std::string* error_msg) OVERRIDE; | 
| +  virtual void Accept(const AcceptCompletionCallback &callback) OVERRIDE; | 
| + | 
| virtual bool GetPeerAddress(net::IPEndPoint* address) OVERRIDE; | 
| virtual bool GetLocalAddress(net::IPEndPoint* address) OVERRIDE; | 
| virtual Socket::SocketType GetSocketType() const OVERRIDE; | 
| @@ -51,6 +60,9 @@ class TCPSocket : public Socket { | 
| net::TCPClientSocket* tcp_client_socket, | 
| const std::string& owner_extension_id, | 
| ApiResourceEventNotifier* event_notifier); | 
| +  static TCPSocket* CreateServerSocketForTesting( | 
| +      net::TCPServerSocket* tcp_server_socket, | 
| +      const std::string& owner_extension_id); | 
|  | 
| protected: | 
| virtual int WriteImpl(net::IOBuffer* io_buffer, | 
| @@ -61,16 +73,28 @@ class TCPSocket : public Socket { | 
| void OnConnectComplete(int result); | 
| void OnReadComplete(scoped_refptr<net::IOBuffer> io_buffer, | 
| int result); | 
| +  void OnAccept(int result); | 
|  | 
| -  TCPSocket(net::TCPClientSocket* tcp_client_socket, | 
| -            const std::string& owner_extension_id, | 
| -            ApiResourceEventNotifier* event_notifier); | 
| +  TCPSocket(net::TCPServerSocket* tcp_server_socket, | 
| +            const std::string& owner_extension_id); | 
|  | 
| scoped_ptr<net::TCPClientSocket> socket_; | 
| +  scoped_ptr<net::TCPServerSocket> server_socket_; | 
| +  scoped_ptr<net::IPEndPoint> bind_address_; | 
| + | 
| +  enum SocketMode { | 
| +    UNKNOWN = 0, | 
| +    CLIENT, | 
| +    SERVER, | 
| +  }; | 
| +  SocketMode socket_mode_; | 
|  | 
| CompletionCallback connect_callback_; | 
|  | 
| ReadCompletionCallback read_callback_; | 
| + | 
| +  scoped_ptr<net::StreamSocket> accept_socket_; | 
| +  AcceptCompletionCallback accept_callback_; | 
| }; | 
|  | 
| }  //  namespace extensions | 
|  |