Chromium Code Reviews| 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 68245c175ace138c74ec20643214f529dd656f65..cd0886c441a4d6761b753bcd0c46058dda6d74cb 100644 |
| --- a/chrome/browser/devtools/device/devtools_android_bridge.cc |
| +++ b/chrome/browser/devtools/device/devtools_android_bridge.cc |
| @@ -5,6 +5,7 @@ |
| #include "chrome/browser/devtools/device/devtools_android_bridge.h" |
| #include <map> |
| +#include <set> |
| #include <vector> |
| #include "base/base64.h" |
| @@ -25,7 +26,7 @@ |
| #include "base/values.h" |
| #include "chrome/browser/devtools/device/adb/adb_device_provider.h" |
| #include "chrome/browser/devtools/device/port_forwarding_controller.h" |
| -#include "chrome/browser/devtools/device/self_device_provider.h" |
| +#include "chrome/browser/devtools/device/tcp_device_provider.h" |
| #include "chrome/browser/devtools/device/usb/usb_device_provider.h" |
| #include "chrome/browser/devtools/device/webrtc/webrtc_device_provider.h" |
| #include "chrome/browser/devtools/devtools_protocol.h" |
| @@ -45,6 +46,7 @@ |
| #include "content/public/browser/devtools_external_agent_proxy_delegate.h" |
| #include "content/public/browser/user_metrics.h" |
| #include "net/base/escape.h" |
| +#include "net/base/host_port_pair.h" |
| #include "net/base/net_errors.h" |
| using content::BrowserThread; |
| @@ -907,15 +909,43 @@ void DevToolsAndroidBridge::ScheduleTaskDefault(const base::Closure& task) { |
| base::TimeDelta::FromMilliseconds(kAdbPollingIntervalMs)); |
| } |
| -void DevToolsAndroidBridge::CreateDeviceProviders() { |
| - AndroidDeviceManager::DeviceProviders device_providers; |
| +static scoped_refptr<TCPDeviceProvider> CreateTCPDeviceProvider() { |
| + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
| + if (command_line->HasSwitch(switches::kRemoteDebuggingTargets)) { |
| + std::string value = |
| + command_line->GetSwitchValueASCII(switches::kRemoteDebuggingTargets); |
| + std::vector<std::string> addresses = base::SplitString( |
| + value, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); |
| + std::set<net::HostPortPair> targets; |
| + for (const std::string& address : addresses) { |
| + net::HostPortPair target = net::HostPortPair::FromString(address); |
| + if (target.IsEmpty()) { |
| + LOG(WARNING) << "Invalid target: " << address; |
| + continue; |
| + } |
| + targets.insert(target); |
| + } |
| + if (targets.empty()) |
| + return nullptr; |
| + return new TCPDeviceProvider(targets); |
| #if defined(DEBUG_DEVTOOLS) |
| - RemoteDebuggingServer::EnableTetheringForDebug(); |
| - // We cannot rely on command line switch here as we might want to connect |
| - // to another instance of Chrome. Using hard-coded port number instead. |
| - const int kDefaultDebuggingPort = 9222; |
| - device_providers.push_back(new SelfAsDeviceProvider(kDefaultDebuggingPort)); |
| + } else { |
| + RemoteDebuggingServer::EnableTetheringForDebug(); |
| + // We cannot rely on command line switch here as we might want to connect |
| + // to another instance of Chrome. Using hard-coded port number instead. |
| + const int kDefaultDebuggingPort = 9222; |
| + return TCPDeviceProvider::CreateForLocalhost(kDefaultDebuggingPort); |
| #endif |
| + } |
| + return nullptr; |
| +} |
| + |
| +void DevToolsAndroidBridge::CreateDeviceProviders() { |
| + AndroidDeviceManager::DeviceProviders device_providers; |
| + |
| + if (scoped_refptr<TCPDeviceProvider> provider = CreateTCPDeviceProvider()) { |
|
dgozman
2015/07/06 14:10:55
nit: no {}
yurys
2015/07/06 14:14:52
Done.
|
| + device_providers.push_back(provider); |
| + } |
| device_providers.push_back(new AdbDeviceProvider()); |
| PrefService* service = profile_->GetPrefs(); |