Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1779)

Unified Diff: chrome/browser/devtools/device/android_web_socket.cc

Issue 287643002: DevTools: Partially redesigned DevToolsAndroidBridge and AndroidDeviceManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved Device::OpenSocket callback to HandlerThread Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/devtools/device/android_web_socket.cc
diff --git a/chrome/browser/devtools/device/android_web_socket.cc b/chrome/browser/devtools/device/android_web_socket.cc
index adecd0aa15b26d6cea03a2627089665105e87dd0..81d2627c7f6c0ae1dd5f9119367a82ba8b07bd6a 100644
--- a/chrome/browser/devtools/device/android_web_socket.cc
+++ b/chrome/browser/devtools/device/android_web_socket.cc
@@ -4,7 +4,7 @@
#include "base/message_loop/message_loop.h"
#include "base/rand_util.h"
-#include "chrome/browser/devtools/device/devtools_android_bridge.h"
+#include "chrome/browser/devtools/device/android_device_manager.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
@@ -18,15 +18,14 @@ namespace {
const int kBufferSize = 16 * 1024;
-class WebSocketImpl : public DevToolsAndroidBridge::AndroidWebSocket {
+class WebSocketImpl : public AndroidDeviceManager::AndroidWebSocket {
public:
- WebSocketImpl(scoped_refptr<DevToolsAndroidBridge> android_bridge,
- AndroidDeviceManager* device_manager,
- base::MessageLoop* device_message_loop,
- const std::string& serial,
- const std::string& socket_name,
- const std::string& url,
- Delegate* delegate);
+ typedef AndroidDeviceManager::Device Device;
+ WebSocketImpl(scoped_refptr<base::MessageLoopProxy> device_message_loop,
+ scoped_refptr<Device> device,
+ const std::string& socket_name,
+ const std::string& url,
+ Delegate* delegate);
virtual void Connect() OVERRIDE;
virtual void Disconnect() OVERRIDE;
@@ -38,8 +37,7 @@ class WebSocketImpl : public DevToolsAndroidBridge::AndroidWebSocket {
virtual ~WebSocketImpl();
- void ConnectOnHandlerThread();
- void ConnectedOnHandlerThread(int result, net::StreamSocket* socket);
+ void Connected(int result, net::StreamSocket* socket);
void StartListeningOnHandlerThread();
void OnBytesRead(scoped_refptr<net::IOBuffer> response_buffer, int result);
void SendFrameOnHandlerThread(const std::string& message);
@@ -50,10 +48,8 @@ class WebSocketImpl : public DevToolsAndroidBridge::AndroidWebSocket {
void OnFrameRead(const std::string& message);
void OnSocketClosed(bool closed_by_device);
- scoped_refptr<DevToolsAndroidBridge> android_bridge_;
- AndroidDeviceManager* device_manager_;
- base::MessageLoop* device_message_loop_;
- std::string serial_;
+ scoped_refptr<base::MessageLoopProxy> device_message_loop_;
+ scoped_refptr<Device> device_;
std::string socket_name_;
std::string url_;
scoped_ptr<net::StreamSocket> socket_;
@@ -63,17 +59,13 @@ class WebSocketImpl : public DevToolsAndroidBridge::AndroidWebSocket {
};
WebSocketImpl::WebSocketImpl(
- scoped_refptr<DevToolsAndroidBridge> android_bridge,
- AndroidDeviceManager* device_manager,
- base::MessageLoop* device_message_loop,
- const std::string& serial,
+ scoped_refptr<base::MessageLoopProxy> device_message_loop,
+ scoped_refptr<Device> device,
const std::string& socket_name,
const std::string& url,
Delegate* delegate)
- : android_bridge_(android_bridge),
- device_manager_(device_manager),
- device_message_loop_(device_message_loop),
- serial_(serial),
+ : device_message_loop_(device_message_loop),
+ device_(device),
socket_name_(socket_name),
url_(url),
delegate_(delegate) {
@@ -81,11 +73,12 @@ WebSocketImpl::WebSocketImpl(
void WebSocketImpl::Connect() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- device_message_loop_->PostTask(
- FROM_HERE, base::Bind(&WebSocketImpl::ConnectOnHandlerThread, this));
+ device_->HttpUpgrade(
+ socket_name_, url_, base::Bind(&WebSocketImpl::Connected, this));
}
void WebSocketImpl::Disconnect() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
device_message_loop_->PostTask(
FROM_HERE,
base::Bind(&WebSocketImpl::DisconnectOnHandlerThread, this, false));
@@ -103,6 +96,7 @@ void WebSocketImpl::ClearDelegate() {
}
void WebSocketImpl::SendFrameOnHandlerThread(const std::string& message) {
+ DCHECK_EQ(device_message_loop_, base::MessageLoopProxy::current());
int mask = base::RandInt(0, 0x7FFFFFFF);
std::string encoded_frame = WebSocket::EncodeFrameHybi17(message, mask);
request_buffer_ += encoded_frame;
@@ -110,30 +104,25 @@ void WebSocketImpl::SendFrameOnHandlerThread(const std::string& message) {
SendPendingRequests(0);
}
-WebSocketImpl::~WebSocketImpl() {}
-
-void WebSocketImpl::ConnectOnHandlerThread() {
- device_manager_->HttpUpgrade(
- serial_,
- socket_name_,
- url_,
- base::Bind(&WebSocketImpl::ConnectedOnHandlerThread, this));
+WebSocketImpl::~WebSocketImpl() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
}
-void WebSocketImpl::ConnectedOnHandlerThread(
- int result, net::StreamSocket* socket) {
+void WebSocketImpl::Connected(int result, net::StreamSocket* socket) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (result != net::OK || socket == NULL) {
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- base::Bind(&WebSocketImpl::OnSocketClosed, this, true));
+ OnSocketClosed(true);
return;
}
socket_.reset(socket);
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- base::Bind(&WebSocketImpl::OnSocketOpened, this));
- StartListeningOnHandlerThread();
+ device_message_loop_->PostTask(
+ FROM_HERE,
+ base::Bind(&WebSocketImpl::StartListeningOnHandlerThread, this));
+ OnSocketOpened();
}
void WebSocketImpl::StartListeningOnHandlerThread() {
+ DCHECK_EQ(device_message_loop_, base::MessageLoopProxy::current());
scoped_refptr<net::IOBuffer> response_buffer =
new net::IOBuffer(kBufferSize);
int result = socket_->Read(
@@ -146,6 +135,7 @@ void WebSocketImpl::StartListeningOnHandlerThread() {
void WebSocketImpl::OnBytesRead(
scoped_refptr<net::IOBuffer> response_buffer, int result) {
+ DCHECK_EQ(device_message_loop_, base::MessageLoopProxy::current());
if (!socket_)
return;
@@ -185,6 +175,7 @@ void WebSocketImpl::OnBytesRead(
}
void WebSocketImpl::SendPendingRequests(int result) {
+ DCHECK_EQ(device_message_loop_, base::MessageLoopProxy::current());
if (!socket_)
return;
if (result < 0) {
@@ -205,6 +196,7 @@ void WebSocketImpl::SendPendingRequests(int result) {
}
void WebSocketImpl::DisconnectOnHandlerThread(bool closed_by_device) {
+ DCHECK_EQ(device_message_loop_, base::MessageLoopProxy::current());
if (!socket_)
return;
// Wipe out socket_ first since Disconnect can re-enter this method.
@@ -231,13 +223,10 @@ void WebSocketImpl::OnSocketClosed(bool closed_by_device) {
} // namespace
-scoped_refptr<DevToolsAndroidBridge::AndroidWebSocket>
-DevToolsAndroidBridge::RemoteBrowser::CreateWebSocket(
+scoped_refptr<AndroidDeviceManager::AndroidWebSocket>
+AndroidDeviceManager::Device::CreateWebSocket(
+ const std::string& socket,
const std::string& url,
- DevToolsAndroidBridge::AndroidWebSocket::Delegate* delegate) {
- return new WebSocketImpl(
- android_bridge_,
- android_bridge_->device_manager(),
- android_bridge_->device_message_loop(),
- serial_, socket_, url, delegate);
+ AndroidDeviceManager::AndroidWebSocket::Delegate* delegate) {
+ return new WebSocketImpl(device_message_loop_, this, socket, url, delegate);
}
« no previous file with comments | « chrome/browser/devtools/device/android_device_manager.cc ('k') | chrome/browser/devtools/device/devtools_android_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698