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

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

Issue 449883002: DevTools: Removed refcounting from AndroidWebSocket (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass delegate message loop to WebSocketImpl Created 6 years, 4 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/devtools_android_bridge.cc
diff --git a/chrome/browser/devtools/device/devtools_android_bridge.cc b/chrome/browser/devtools/device/devtools_android_bridge.cc
index c25c4699d204fccaff523286fac09269557dcca8..e58a8572e8a499ce1d075ba2dec3f1b1fa08b46e 100644
--- a/chrome/browser/devtools/device/devtools_android_bridge.cc
+++ b/chrome/browser/devtools/device/devtools_android_bridge.cc
@@ -186,11 +186,12 @@ class ProtocolCommand
private:
virtual void OnSocketOpened() OVERRIDE;
virtual void OnFrameRead(const std::string& message) OVERRIDE;
- virtual void OnSocketClosed(bool closed_by_device) OVERRIDE;
+ virtual void OnSocketClosed() OVERRIDE;
+ virtual ~ProtocolCommand();
const std::string command_;
const base::Closure callback_;
- scoped_refptr<DevToolsAndroidBridge::AndroidWebSocket> web_socket_;
+ scoped_ptr<DevToolsAndroidBridge::AndroidWebSocket> web_socket_;
DISALLOW_COPY_AND_ASSIGN(ProtocolCommand);
};
@@ -201,9 +202,8 @@ ProtocolCommand::ProtocolCommand(
const std::string& command,
const base::Closure callback)
: command_(command),
- callback_(callback){
- web_socket_ = browser->CreateWebSocket(debug_url, this);
- web_socket_->Connect();
+ callback_(callback),
+ web_socket_(browser->CreateWebSocket(debug_url, this)) {
}
void ProtocolCommand::OnSocketOpened() {
@@ -211,16 +211,18 @@ void ProtocolCommand::OnSocketOpened() {
}
void ProtocolCommand::OnFrameRead(const std::string& message) {
- web_socket_->Disconnect();
+ delete this;
}
-void ProtocolCommand::OnSocketClosed(bool closed_by_device) {
- if (!callback_.is_null()) {
- callback_.Run();
- }
+void ProtocolCommand::OnSocketClosed() {
delete this;
}
+ProtocolCommand::~ProtocolCommand() {
+ if (!callback_.is_null())
+ callback_.Run();
+}
+
} // namespace
class AgentHostDelegate;
@@ -291,14 +293,15 @@ class AgentHostDelegate
const std::string& message) OVERRIDE;
virtual void OnSocketOpened() OVERRIDE;
virtual void OnFrameRead(const std::string& message) OVERRIDE;
- virtual void OnSocketClosed(bool closed_by_device) OVERRIDE;
+ virtual void OnSocketClosed() OVERRIDE;
const std::string id_;
+ scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser_;
+ const std::string debug_url_;
bool socket_opened_;
- bool detached_;
bool is_web_view_;
std::vector<std::string> pending_messages_;
- scoped_refptr<DevToolsAndroidBridge::AndroidWebSocket> web_socket_;
+ scoped_ptr<DevToolsAndroidBridge::AndroidWebSocket> web_socket_;
content::DevToolsAgentHost* agent_host_;
content::DevToolsExternalAgentProxy* proxy_;
DISALLOW_COPY_AND_ASSIGN(AgentHostDelegate);
@@ -327,10 +330,10 @@ AgentHostDelegate::AgentHostDelegate(
scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser,
const std::string& debug_url)
: id_(id),
+ browser_(browser),
+ debug_url_(debug_url),
socket_opened_(false),
- detached_(false),
is_web_view_(browser->IsWebView()),
- web_socket_(browser->CreateWebSocket(debug_url, this)),
agent_host_(NULL),
proxy_(NULL) {
g_host_delegates.Get()[id] = this;
@@ -338,20 +341,17 @@ AgentHostDelegate::AgentHostDelegate(
AgentHostDelegate::~AgentHostDelegate() {
g_host_delegates.Get().erase(id_);
- web_socket_->ClearDelegate();
}
void AgentHostDelegate::Attach(content::DevToolsExternalAgentProxy* proxy) {
proxy_ = proxy;
content::RecordAction(base::UserMetricsAction(is_web_view_ ?
"DevTools_InspectAndroidWebView" : "DevTools_InspectAndroidPage"));
- web_socket_->Connect();
+ web_socket_.reset(browser_->CreateWebSocket(debug_url_, this));
}
void AgentHostDelegate::Detach() {
- detached_ = true;
- if (socket_opened_)
- web_socket_->Disconnect();
+ web_socket_.reset();
}
void AgentHostDelegate::SendMessageToBackend(const std::string& message) {
@@ -362,11 +362,6 @@ void AgentHostDelegate::SendMessageToBackend(const std::string& message) {
}
void AgentHostDelegate::OnSocketOpened() {
- if (detached_) {
- web_socket_->Disconnect();
- return;
- }
-
socket_opened_ = true;
for (std::vector<std::string>::iterator it = pending_messages_.begin();
it != pending_messages_.end(); ++it) {
@@ -380,8 +375,8 @@ void AgentHostDelegate::OnFrameRead(const std::string& message) {
proxy_->DispatchOnClientHost(message);
}
-void AgentHostDelegate::OnSocketClosed(bool closed_by_device) {
- if (proxy_ && closed_by_device)
+void AgentHostDelegate::OnSocketClosed() {
+ if (proxy_)
proxy_->ConnectionClosed();
}
@@ -614,7 +609,7 @@ DevToolsAndroidBridge::RemoteBrowser::GetAgentHost() {
"adb:" + device_->serial() + ":" + socket_, this, kBrowserTargetSocket);
}
-scoped_refptr<DevToolsAndroidBridge::AndroidWebSocket>
+DevToolsAndroidBridge::AndroidWebSocket*
DevToolsAndroidBridge::RemoteBrowser::CreateWebSocket(
const std::string& url,
DevToolsAndroidBridge::AndroidWebSocket::Delegate* delegate) {

Powered by Google App Engine
This is Rietveld 408576698