Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(643)

Unified Diff: chrome/browser/devtools/devtools_adb_bridge.cc

Issue 23953002: DevTools: request usb permission on ChromeOS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/devtools/devtools_adb_bridge.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/devtools/devtools_adb_bridge.cc
diff --git a/chrome/browser/devtools/devtools_adb_bridge.cc b/chrome/browser/devtools/devtools_adb_bridge.cc
index 8837b0e25f5c1df5e8a29a9735fc81e9f83dfa9b..489e95a1f6b26087816ffd536dff3efac2764f46 100644
--- a/chrome/browser/devtools/devtools_adb_bridge.cc
+++ b/chrome/browser/devtools/devtools_adb_bridge.cc
@@ -99,6 +99,7 @@ class UsbDeviceImpl : public DevToolsAdbBridge::AndroidDevice {
explicit UsbDeviceImpl(AndroidUsbDevice* device)
: AndroidDevice(device->serial()),
device_(device) {
+ device_->InitOnCallerThread();
}
virtual void RunCommand(const std::string& command,
@@ -172,13 +173,20 @@ class AdbPagesCommand : public base::RefCountedThreadSafe<
public:
typedef base::Callback<void(DevToolsAdbBridge::RemoteDevices*)> Callback;
- AdbPagesCommand(DevToolsAdbBridge* bridge, const Callback& callback)
+ AdbPagesCommand(DevToolsAdbBridge* bridge,
+ crypto::RSAPrivateKey* rsa_key,
+ const Callback& callback)
: bridge_(bridge),
callback_(callback) {
remote_devices_.reset(new DevToolsAdbBridge::RemoteDevices());
- bridge_->GetAdbMessageLoop()->PostTask(FROM_HERE,
- base::Bind(&DevToolsAdbBridge::EnumerateUsbDevices, bridge_,
- base::Bind(&AdbPagesCommand::ReceivedUsbDevices, this)));
+
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kRemoteDebuggingRawUSB)) {
+ AndroidUsbDevice::Enumerate(rsa_key,
+ base::Bind(&AdbPagesCommand::ReceivedUsbDevices, this));
+ } else {
+ ReceivedUsbDevices(AndroidUsbDevices());
+ }
}
private:
@@ -190,15 +198,41 @@ class AdbPagesCommand : public base::RefCountedThreadSafe<
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
}
- void ReceivedUsbDevices(const AndroidDevices& devices) {
+ void ReceivedUsbDevices(const AndroidUsbDevices& usb_devices) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ bridge_->GetAdbMessageLoop()->PostTask(
+ FROM_HERE, base::Bind(&AdbPagesCommand::WrapUsbDevices, this,
+ usb_devices));
+ }
+
+ void WrapUsbDevices(const AndroidUsbDevices& usb_devices) {
DCHECK_EQ(bridge_->GetAdbMessageLoop(), base::MessageLoop::current());
- devices_ = devices;
- bridge_->EnumerateAdbDevices(
+
+#if defined(DEBUG_DEVTOOLS)
+ devices_.push_back(new AdbDeviceImpl("")); // For desktop remote debugging.
+#endif // defined(DEBUG_DEVTOOLS)
+
+ for (AndroidUsbDevices::const_iterator it = usb_devices.begin();
+ it != usb_devices.end(); ++it) {
+ devices_.push_back(new UsbDeviceImpl(*it));
+ }
+
+ AdbClientSocket::AdbQuery(
+ kAdbPort, kHostDevicesCommand,
base::Bind(&AdbPagesCommand::ReceivedAdbDevices, this));
}
- void ReceivedAdbDevices(const AndroidDevices& devices) {
- devices_.insert(devices_.end(), devices.begin(), devices.end());
+ void ReceivedAdbDevices(
+ int result,
+ const std::string& response) {
+ DCHECK_EQ(bridge_->GetAdbMessageLoop(), base::MessageLoop::current());
+ std::vector<std::string> serials;
+ Tokenize(response, "\n", &serials);
+ for (size_t i = 0; i < serials.size(); ++i) {
+ std::vector<std::string> tokens;
+ Tokenize(serials[i], "\t ", &tokens);
+ devices_.push_back(new AdbDeviceImpl(tokens[0]));
+ }
ProcessSerials();
}
@@ -868,27 +902,6 @@ DevToolsAdbBridge::DevToolsAdbBridge(Profile* profile)
new PortForwardingController(this, profile->GetPrefs()));
}
-void DevToolsAdbBridge::EnumerateUsbDevices(
- const AndroidDevicesCallback& callback) {
- DCHECK_EQ(base::MessageLoop::current(), adb_thread_->message_loop());
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kRemoteDebuggingRawUSB)) {
- AndroidUsbDevice::Enumerate(rsa_key_.get(),
- base::Bind(&DevToolsAdbBridge::ReceivedUsbDevices, this, callback));
- } else {
- ReceivedUsbDevices(callback, AndroidUsbDevices());
- }
-}
-
-void DevToolsAdbBridge::EnumerateAdbDevices(
- const AndroidDevicesCallback& callback) {
- DCHECK_EQ(base::MessageLoop::current(), adb_thread_->message_loop());
-
- AdbClientSocket::AdbQuery(
- kAdbPort, kHostDevicesCommand,
- base::Bind(&DevToolsAdbBridge::ReceivedAdbDevices, this, callback));
-}
-
void DevToolsAdbBridge::AddListener(Listener* listener) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (listeners_.empty())
@@ -913,50 +926,14 @@ DevToolsAdbBridge::~DevToolsAdbBridge() {
DCHECK(listeners_.empty());
}
-void DevToolsAdbBridge::ReceivedUsbDevices(
- const AndroidDevicesCallback& callback,
- const AndroidUsbDevices& usb_devices) {
- AndroidDevices devices;
-
-#if defined(DEBUG_DEVTOOLS)
- devices.push_back(new AdbDeviceImpl("")); // For desktop remote debugging.
-#endif // defined(DEBUG_DEVTOOLS)
-
- for (AndroidUsbDevices::const_iterator it = usb_devices.begin();
- it != usb_devices.end(); ++it) {
- devices.push_back(new UsbDeviceImpl(*it));
- }
-
- callback.Run(devices);
-}
-
-void DevToolsAdbBridge::ReceivedAdbDevices(
- const AndroidDevicesCallback& callback,
- int result,
- const std::string& response) {
- AndroidDevices devices;
- if (result != net::OK) {
- callback.Run(devices);
- return;
- }
-
- std::vector<std::string> serials;
- Tokenize(response, "\n", &serials);
- for (size_t i = 0; i < serials.size(); ++i) {
- std::vector<std::string> tokens;
- Tokenize(serials[i], "\t ", &tokens);
- devices.push_back(new AdbDeviceImpl(tokens[0]));
- }
- callback.Run(devices);
-}
-
void DevToolsAdbBridge::RequestRemoteDevices() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (!has_message_loop_)
return;
new AdbPagesCommand(
- this, base::Bind(&DevToolsAdbBridge::ReceivedRemoteDevices, this));
+ this, rsa_key_.get(),
+ base::Bind(&DevToolsAdbBridge::ReceivedRemoteDevices, this));
}
void DevToolsAdbBridge::ReceivedRemoteDevices(RemoteDevices* devices_ptr) {
« no previous file with comments | « chrome/browser/devtools/devtools_adb_bridge.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698