diff options
-rw-r--r-- | chrome/browser/devtools/adb_client_socket.cc | 26 | ||||
-rw-r--r-- | chrome/browser/devtools/android_device.cc | 108 | ||||
-rw-r--r-- | chrome/browser/devtools/android_device.h | 3 | ||||
-rw-r--r-- | chrome/browser/devtools/devtools_adb_bridge.cc | 27 | ||||
-rw-r--r-- | chrome/browser/devtools/port_forwarding_controller.cc | 3 | ||||
-rw-r--r-- | chrome/browser/resources/inspect/inspect.js | 10 | ||||
-rw-r--r-- | chrome/browser/ui/webui/inspect_ui.cc | 6 |
7 files changed, 67 insertions, 116 deletions
diff --git a/chrome/browser/devtools/adb_client_socket.cc b/chrome/browser/devtools/adb_client_socket.cc index e16273e..e9d1959 100644 --- a/chrome/browser/devtools/adb_client_socket.cc +++ b/chrome/browser/devtools/adb_client_socket.cc @@ -280,11 +280,37 @@ void AdbClientSocket::AdbQuery(int port, new AdbQuerySocket(port, query, callback); } +#if defined(DEBUG_DEVTOOLS) +static void UseTransportQueryForDesktop(const SocketCallback& callback, + net::StreamSocket* socket, + int result) { + callback.Run(result, socket); +} +#endif // defined(DEBUG_DEVTOOLS) + // static void AdbClientSocket::TransportQuery(int port, const std::string& serial, const std::string& socket_name, const SocketCallback& callback) { +#if defined(DEBUG_DEVTOOLS) + if (serial.empty()) { + // Use plain socket for remote debugging on Desktop (debugging purposes). + net::IPAddressNumber ip_number; + net::ParseIPLiteralToNumber(kLocalhost, &ip_number); + + int tcp_port = 0; + if (!base::StringToInt(socket_name, &tcp_port)) + tcp_port = 9222; + + net::AddressList address_list = + net::AddressList::CreateFromIPAddress(ip_number, tcp_port); + net::TCPClientSocket* socket = new net::TCPClientSocket( + address_list, NULL, net::NetLog::Source()); + socket->Connect(base::Bind(&UseTransportQueryForDesktop, callback, socket)); + return; + } +#endif // defined(DEBUG_DEVTOOLS) new AdbTransportSocket(port, serial, socket_name, callback); } diff --git a/chrome/browser/devtools/android_device.cc b/chrome/browser/devtools/android_device.cc index e8b2fba..c2aa0ba 100644 --- a/chrome/browser/devtools/android_device.cc +++ b/chrome/browser/devtools/android_device.cc @@ -4,7 +4,6 @@ #include "chrome/browser/devtools/android_device.h" -#include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/threading/thread.h" @@ -12,8 +11,6 @@ #include "chrome/browser/devtools/adb/android_usb_device.h" #include "chrome/browser/devtools/adb_client_socket.h" #include "net/base/net_errors.h" -#include "net/base/net_util.h" -#include "net/socket/tcp_client_socket.h" using content::BrowserThread; @@ -26,14 +23,6 @@ const char kLocalAbstractCommand[] = "localabstract:%s"; const int kAdbPort = 5037; const int kBufferSize = 16 * 1024; -#if defined(DEBUG_DEVTOOLS) -const char kDeviceModelCommand[] = "shell:getprop ro.product.model"; -const char kOpenedUnixSocketsCommand[] = "shell:cat /proc/net/unix"; -const char kLocalChrome[] = "Local Chrome"; -const char kLocalhost[] = "127.0.0.1"; -#endif - - // AdbDeviceImpl -------------------------------------------------------------- class AdbDeviceImpl : public AndroidDevice { @@ -198,6 +187,11 @@ void AdbDeviceProvider::ReceivedAdbDevices(const QueryDevicesCallback& callback, AndroidDevices result; +#if defined(DEBUG_DEVTOOLS) + // For desktop remote debugging. + result.push_back(new AdbDeviceImpl("", true)); +#endif // defined(DEBUG_DEVTOOLS) + std::vector<std::string> serials; Tokenize(response, "\n", &serials); for (size_t i = 0; i < serials.size(); ++i) { @@ -317,6 +311,7 @@ void AndroidDevice::OnHttpSocketOpened2( } // AdbCountDevicesCommand ----------------------------------------------------- +// TODO(zvorygin): Remove this class. class AdbCountDevicesCommand : public base::RefCountedThreadSafe< AdbCountDevicesCommand, BrowserThread::DeleteOnUIThread> { public: @@ -415,94 +410,3 @@ scoped_refptr<AndroidDeviceProvider> AndroidDeviceProvider::GetAdbDeviceProvider() { return new AdbDeviceProvider(); } - - -#if defined(DEBUG_DEVTOOLS) - -class SelfAsDevice: public AndroidDevice { - public: - SelfAsDevice(); - virtual void RunCommand(const std::string& command, - const CommandCallback& callback) OVERRIDE; - virtual void OpenSocket(const std::string& socket_name, - const SocketCallback& callback) OVERRIDE; - private: - void RunCommandCallback(const CommandCallback& callback, - const std::string& response, - int result); - - void RunSocketCallback(const SocketCallback& callback, - net::StreamSocket* socket, - int result); - virtual ~SelfAsDevice() {} -}; - -SelfAsDevice::SelfAsDevice() - : AndroidDevice("local", true) -{} - -void SelfAsDevice::RunCommandCallback(const CommandCallback& callback, - const std::string& response, - int result) { - callback.Run(result, response); -} - -void SelfAsDevice::RunSocketCallback(const SocketCallback& callback, - net::StreamSocket* socket, - int result) { - callback.Run(result, socket); -} - -void SelfAsDevice::RunCommand(const std::string& command, - const CommandCallback& callback) { - std::string response; - if (command == kDeviceModelCommand) { - response = kLocalChrome; - } else if (command == kOpenedUnixSocketsCommand) { - response = "Num RefCount Protocol Flags Type St Inode Path\n" - "00000000: 00000002 00000000" - " 00010000 0001 01 20894 @chrome_devtools_remote\n"; - } - - base::MessageLoop::current()->PostTask(FROM_HERE, - base::Bind(&SelfAsDevice::RunCommandCallback, this, callback, - response, 0)); -} - -void SelfAsDevice::OpenSocket(const std::string& socket_name, - const SocketCallback& callback) { - // Use plain socket for remote debugging on Desktop (debugging purposes). - net::IPAddressNumber ip_number; - net::ParseIPLiteralToNumber(kLocalhost, &ip_number); - int tcp_port = 9222; - - net::AddressList address_list = - net::AddressList::CreateFromIPAddress(ip_number, tcp_port); - net::TCPClientSocket* socket = new net::TCPClientSocket( - address_list, NULL, net::NetLog::Source()); - socket->Connect(base::Bind(&SelfAsDevice::RunSocketCallback, this, callback, - socket)); - return; -} - -class SelfAsDeviceProvider: public AndroidDeviceProvider { - public: - virtual void QueryDevices(const QueryDevicesCallback& callback) OVERRIDE; - virtual ~SelfAsDeviceProvider(){} -}; - -void SelfAsDeviceProvider::QueryDevices(const QueryDevicesCallback& callback) { - AndroidDevices result; - result.push_back(new SelfAsDevice()); - - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - base::Bind(&SelfAsDeviceProvider::RunCallbackOnUIThread, - callback, result)); -} - -// static -scoped_refptr<AndroidDeviceProvider> - AndroidDeviceProvider::GetSelfAsDeviceProvider() { - return new SelfAsDeviceProvider(); -} -#endif diff --git a/chrome/browser/devtools/android_device.h b/chrome/browser/devtools/android_device.h index 41d810e..9a1e616 100644 --- a/chrome/browser/devtools/android_device.h +++ b/chrome/browser/devtools/android_device.h @@ -77,9 +77,6 @@ class AndroidDeviceProvider static scoped_refptr<AndroidDeviceProvider> GetAdbDeviceProvider(); static scoped_refptr<AndroidDeviceProvider> GetUsbDeviceProvider(Profile* profile); -#if defined(DEBUG_DEVTOOLS) - static scoped_refptr<AndroidDeviceProvider> GetSelfAsDeviceProvider(); -#endif protected: friend struct diff --git a/chrome/browser/devtools/devtools_adb_bridge.cc b/chrome/browser/devtools/devtools_adb_bridge.cc index a9c06b8..25e6013 100644 --- a/chrome/browser/devtools/devtools_adb_bridge.cc +++ b/chrome/browser/devtools/devtools_adb_bridge.cc @@ -75,6 +75,10 @@ const int kNewPageNavigateDelayMs = 500; const char kWebViewSocketPrefix[] = "webview_devtools_remote"; const char kWebViewNameTemplate[] = "WebView in %s"; +#if defined(DEBUG_DEVTOOLS) +const char kLocalChrome[] = "Local Chrome"; +#endif // defined(DEBUG_DEVTOOLS) + typedef DevToolsAdbBridge::Callback Callback; typedef std::vector<scoped_refptr<AndroidDevice> > AndroidDevices; @@ -357,6 +361,24 @@ void AdbPagesCommand::ProcessSerials() { } scoped_refptr<AndroidDevice> device = current_device(); +#if defined(DEBUG_DEVTOOLS) + // For desktop remote debugging. + if (device->serial().empty()) { + device->set_model(kLocalChrome); + remote_devices_->push_back( + new DevToolsAdbBridge::RemoteDevice(device)); + scoped_refptr<DevToolsAdbBridge::RemoteBrowser> remote_browser = + new DevToolsAdbBridge::RemoteBrowser( + adb_thread_, device, std::string()); + remote_browser->set_display_name(kChromeDefaultName); + remote_devices_->back()->AddBrowser(remote_browser); + browsers_.push_back(remote_browser); + device->HttpQuery( + std::string(), kVersionRequest, + base::Bind(&AdbPagesCommand::ReceivedVersion, this)); + return; + } +#endif // defined(DEBUG_DEVTOOLS) if (device->is_connected()) { device->RunCommand(kDeviceModelCommand, @@ -439,6 +461,11 @@ void AdbPagesCommand::ProcessSockets() { return; } + if (!current_device()->serial().empty() && + current_browser()->socket().empty()) { + NextBrowser(); + return; + } current_device()->HttpQuery( current_browser()->socket(), kVersionRequest, diff --git a/chrome/browser/devtools/port_forwarding_controller.cc b/chrome/browser/devtools/port_forwarding_controller.cc index 7d4255e..627030e 100644 --- a/chrome/browser/devtools/port_forwarding_controller.cc +++ b/chrome/browser/devtools/port_forwarding_controller.cc @@ -588,7 +588,8 @@ PortForwardingController::UpdateDeviceList( Registry::iterator rit = registry_.find(device->GetSerial()); if (rit == registry_.end()) { std::string socket = FindBestSocketForTethering(device->browsers()); - if (!socket.empty()) { + if (!socket.empty() || device->GetSerial().empty()) { + // Will delete itself when disconnected. new Connection( ®istry_, device->device(), socket, adb_thread_, pref_service_); } diff --git a/chrome/browser/resources/inspect/inspect.js b/chrome/browser/resources/inspect/inspect.js index 9ea5be4..a03a928 100644 --- a/chrome/browser/resources/inspect/inspect.js +++ b/chrome/browser/resources/inspect/inspect.js @@ -170,10 +170,12 @@ function populateRemoteTargets(devices) { deviceName.className = 'device-name'; deviceHeader.appendChild(deviceName); - var deviceSerial = document.createElement('div'); - deviceSerial.className = 'device-serial'; - deviceSerial.textContent = '#' + device.adbSerial.toUpperCase(); - deviceHeader.appendChild(deviceSerial); + if (device.adbSerial) { + var deviceSerial = document.createElement('div'); + deviceSerial.className = 'device-serial'; + deviceSerial.textContent = '#' + device.adbSerial.toUpperCase(); + deviceHeader.appendChild(deviceSerial); + } var devicePorts = document.createElement('div'); devicePorts.className = 'device-ports'; diff --git a/chrome/browser/ui/webui/inspect_ui.cc b/chrome/browser/ui/webui/inspect_ui.cc index 6ac3744..93b53ce 100644 --- a/chrome/browser/ui/webui/inspect_ui.cc +++ b/chrome/browser/ui/webui/inspect_ui.cc @@ -317,12 +317,6 @@ void InspectUI::UpdateDiscoverUsbDevicesEnabled() { value->GetAsBoolean(&enabled); DevToolsAdbBridge::DeviceProviders device_providers; - -#if defined(DEBUG_DEVTOOLS) - device_providers.push_back( - AndroidDeviceProvider::GetSelfAsDeviceProvider()); -#endif - device_providers.push_back(AndroidDeviceProvider::GetAdbDeviceProvider()); if (enabled) { |