| 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,
|
|
|