Index: chrome/browser/devtools/device/port_forwarding_controller.cc |
diff --git a/chrome/browser/devtools/device/port_forwarding_controller.cc b/chrome/browser/devtools/device/port_forwarding_controller.cc |
index d19e9fffb36def4ee251d25ceabd1e8f1a6bb1b4..eb82daa84674f95662eb7b26f73f90416f4b38d1 100644 |
--- a/chrome/browser/devtools/device/port_forwarding_controller.cc |
+++ b/chrome/browser/devtools/device/port_forwarding_controller.cc |
@@ -254,8 +254,7 @@ FindBestBrowserForTethering( |
class PortForwardingController::Connection |
: public AndroidDeviceManager::AndroidWebSocket::Delegate { |
public: |
- Connection(Registry* registry, |
- scoped_refptr<AndroidDeviceManager::Device> device, |
+ Connection(PortForwardingController* controller, |
scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser, |
const ForwardingMap& forwarding_map); |
~Connection() override; |
@@ -273,9 +272,7 @@ class PortForwardingController::Connection |
content::BrowserThread::UI>; |
friend class base::DeleteHelper<Connection>; |
- |
typedef std::map<int, std::string> ForwardingMap; |
- |
typedef base::Callback<void(PortStatus)> CommandCallback; |
typedef std::map<int, CommandCallback> CommandCallbackMap; |
@@ -298,8 +295,7 @@ class PortForwardingController::Connection |
void OnFrameRead(const std::string& message) override; |
void OnSocketClosed() override; |
- PortForwardingController::Registry* registry_; |
- scoped_refptr<AndroidDeviceManager::Device> device_; |
+ PortForwardingController* controller_; |
scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser_; |
scoped_ptr<AndroidDeviceManager::AndroidWebSocket> web_socket_; |
int command_id_; |
@@ -313,29 +309,30 @@ class PortForwardingController::Connection |
}; |
PortForwardingController::Connection::Connection( |
- Registry* registry, |
- scoped_refptr<AndroidDeviceManager::Device> device, |
+ PortForwardingController* controller, |
scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser, |
const ForwardingMap& forwarding_map) |
- : registry_(registry), |
- device_(device), |
+ : controller_(controller), |
browser_(browser), |
command_id_(0), |
connected_(false), |
forwarding_map_(forwarding_map), |
weak_factory_(this) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- (*registry_)[device_->serial()] = this; |
+ controller_->registry_[browser->serial()] = this; |
+ scoped_refptr<AndroidDeviceManager::Device> device( |
+ controller_->bridge_->FindDevice(browser->serial())); |
+ DCHECK(device.get()); |
web_socket_.reset( |
- device_->CreateWebSocket(browser->socket(), |
- kDevToolsRemoteBrowserTarget, this)); |
+ device->CreateWebSocket(browser->socket(), |
+ kDevToolsRemoteBrowserTarget, this)); |
} |
PortForwardingController::Connection::~Connection() { |
- |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(registry_->find(device_->serial()) != registry_->end()); |
- registry_->erase(device_->serial()); |
+ DCHECK(controller_->registry_.find(browser_->serial()) != |
+ controller_->registry_.end()); |
+ controller_->registry_.erase(browser_->serial()); |
} |
void PortForwardingController::Connection::UpdateForwardingMap( |
@@ -515,7 +512,10 @@ void PortForwardingController::Connection::OnFrameRead( |
base::Bind(&Connection::UpdateSocketCountOnHandlerThread, |
weak_factory_.GetWeakPtr(), port); |
- device_->OpenSocket( |
+ scoped_refptr<AndroidDeviceManager::Device> device( |
+ controller_->bridge_->FindDevice(browser_->serial())); |
+ DCHECK(device.get()); |
+ device->OpenSocket( |
connection_id.c_str(), |
base::Bind(&SocketTunnel::StartTunnel, |
destination_host, |
@@ -523,8 +523,11 @@ void PortForwardingController::Connection::OnFrameRead( |
callback)); |
} |
-PortForwardingController::PortForwardingController(Profile* profile) |
+PortForwardingController::PortForwardingController( |
+ Profile* profile, |
+ DevToolsAndroidBridge* bridge) |
: profile_(profile), |
+ bridge_(bridge), |
pref_service_(profile->GetPrefs()) { |
pref_change_registrar_.Init(pref_service_); |
base::Closure callback = base::Bind( |
@@ -538,23 +541,20 @@ PortForwardingController::~PortForwardingController() {} |
PortForwardingController::ForwardingStatus |
PortForwardingController::DeviceListChanged( |
- const DevToolsAndroidBridge::CompleteDevices& complete_devices) { |
+ const DevToolsAndroidBridge::RemoteDevices& devices) { |
ForwardingStatus status; |
if (forwarding_map_.empty()) |
return status; |
- for (const auto& pair : complete_devices) { |
- scoped_refptr<AndroidDeviceManager::Device> device(pair.first); |
- scoped_refptr<DevToolsAndroidBridge::RemoteDevice> remote_device( |
- pair.second); |
- if (!remote_device->is_connected()) |
+ for (const auto& device : devices) { |
+ if (!device->is_connected()) |
continue; |
- Registry::iterator rit = registry_.find(remote_device->serial()); |
+ Registry::iterator rit = registry_.find(device->serial()); |
if (rit == registry_.end()) { |
scoped_refptr<DevToolsAndroidBridge::RemoteBrowser> browser( |
- FindBestBrowserForTethering(remote_device->browsers())); |
+ FindBestBrowserForTethering(device->browsers())); |
if (browser.get()) |
- new Connection(®istry_, device, browser, forwarding_map_); |
+ new Connection(this, browser, forwarding_map_); |
} else { |
status.push_back(std::make_pair(rit->second->browser(), |
rit->second->GetPortStatusMap())); |