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

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

Issue 644963003: [DevTools] Port forwarding doesn't keep USB connection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/websocket
Patch Set: Created 6 years, 2 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 97d6834ea78a13430774da404b8228dd4dbaf1ff..dbc2a651d9c8af11aeb20cadb946399dc35040fb 100644
--- a/chrome/browser/devtools/device/devtools_android_bridge.cc
+++ b/chrome/browser/devtools/device/devtools_android_bridge.cc
@@ -309,6 +309,7 @@ class DevToolsAndroidBridge::AgentHostDelegate
bool socket_opened_;
bool is_web_view_;
std::vector<std::string> pending_messages_;
+ scoped_refptr<AndroidDeviceManager::Device> device_;
scoped_ptr<AndroidDeviceManager::AndroidWebSocket> web_socket_;
content::DevToolsAgentHost* agent_host_;
content::DevToolsExternalAgentProxy* proxy_;
@@ -362,12 +363,21 @@ void DevToolsAndroidBridge::AgentHostDelegate::Attach(
proxy_ = proxy;
content::RecordAction(base::UserMetricsAction(is_web_view_ ?
"DevTools_InspectAndroidWebView" : "DevTools_InspectAndroidPage"));
+
+ DeviceMap& device_map(bridge_->device_map_);
+ DeviceMap::iterator it = device_map.find(browser_id_.first);
+ if (it == device_map.end())
+ return;
+
+ // Retain the device so it's not released until AgentHost is detached.
+ device_ = it->second;
web_socket_.reset(
- bridge_->CreateWebSocket(browser_id_, debug_url_, this));
+ device_->CreateWebSocket(browser_id_.second, debug_url_, this));
}
void DevToolsAndroidBridge::AgentHostDelegate::Detach() {
web_socket_.reset();
+ device_ = nullptr;
}
void DevToolsAndroidBridge::AgentHostDelegate::SendMessageToBackend(
@@ -633,18 +643,6 @@ DevToolsAndroidBridge::GetBrowserAgentHost(
browser->IsWebView());
}
-AndroidDeviceManager::AndroidWebSocket*
-DevToolsAndroidBridge::CreateWebSocket(
- const BrowserId& browser_id,
- const std::string& url,
- AndroidDeviceManager::AndroidWebSocket::Delegate* delegate) {
- DeviceMap::iterator it = device_map_.find(browser_id.first);
- if (it == device_map_.end())
- return NULL;
-
- return it->second->CreateWebSocket(browser_id.second, url, delegate);
-}
-
void DevToolsAndroidBridge::RespondToOpenOnUIThread(
scoped_refptr<RemoteBrowser> browser,
const RemotePageCallback& callback,

Powered by Google App Engine
This is Rietveld 408576698