summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/devtools/adb_client_socket.cc26
-rw-r--r--chrome/browser/devtools/android_device.cc108
-rw-r--r--chrome/browser/devtools/android_device.h3
-rw-r--r--chrome/browser/devtools/devtools_adb_bridge.cc27
-rw-r--r--chrome/browser/devtools/port_forwarding_controller.cc3
-rw-r--r--chrome/browser/resources/inspect/inspect.js10
-rw-r--r--chrome/browser/ui/webui/inspect_ui.cc6
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(
&registry_, 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) {