| // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_DEVTOOLS_ADB_WEB_SOCKET_H_ |
| #define CHROME_BROWSER_DEVTOOLS_ADB_WEB_SOCKET_H_ |
| |
| #include "chrome/browser/devtools/android_device.h" |
| |
| class AdbWebSocket : public base::RefCountedThreadSafe<AdbWebSocket> { |
| public: |
| class Delegate { |
| public: |
| virtual void OnSocketOpened() = 0; |
| virtual void OnFrameRead(const std::string& message) = 0; |
| virtual void OnSocketClosed(bool closed_by_device) = 0; |
| virtual bool ProcessIncomingMessage(const std::string& message) = 0; |
| |
| protected: |
| virtual ~Delegate() {} |
| }; |
| |
| AdbWebSocket(scoped_refptr<AndroidDevice> device, |
| const std::string& socket_name, |
| const std::string& url, |
| base::MessageLoop* adb_message_loop, |
| Delegate* delegate); |
| |
| void Disconnect(); |
| |
| void SendFrame(const std::string& message); |
| |
| void SendFrameOnHandlerThread(const std::string& message); |
| |
| private: |
| friend class base::RefCountedThreadSafe<AdbWebSocket>; |
| |
| virtual ~AdbWebSocket(); |
| |
| void ConnectOnHandlerThread(); |
| void ConnectedOnHandlerThread(int result, net::StreamSocket* socket); |
| void StartListeningOnHandlerThread(); |
| void OnBytesRead(scoped_refptr<net::IOBuffer> response_buffer, int result); |
| void SendPendingRequests(int result); |
| void DisconnectOnHandlerThread(bool closed_by_device); |
| |
| void OnSocketOpened(); |
| void OnFrameRead(const std::string& message); |
| void OnSocketClosed(bool closed_by_device); |
| |
| scoped_refptr<AndroidDevice> device_; |
| std::string socket_name_; |
| std::string url_; |
| base::MessageLoop* adb_message_loop_; |
| scoped_ptr<net::StreamSocket> socket_; |
| Delegate* delegate_; |
| std::string response_buffer_; |
| std::string request_buffer_; |
| DISALLOW_COPY_AND_ASSIGN(AdbWebSocket); |
| }; |
| |
| #endif // CHROME_BROWSER_DEVTOOLS_ADB_WEB_SOCKET_H_ |