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

Side by Side Diff: chrome/browser/devtools/device/usb/usb_device_provider.cc

Issue 274573002: DevTools: Extract ADB specific requests from DevToolsAndroidBridge into a separate class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased build files Created 6 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/devtools/device/usb/usb_device_provider.h" 5 #include "chrome/browser/devtools/device/usb/usb_device_provider.h"
6 6
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "chrome/browser/devtools/device/adb/adb_device_info_query.h"
8 #include "chrome/browser/devtools/device/usb/android_rsa.h" 9 #include "chrome/browser/devtools/device/usb/android_rsa.h"
9 #include "chrome/browser/devtools/device/usb/android_usb_device.h" 10 #include "chrome/browser/devtools/device/usb/android_usb_device.h"
10 #include "crypto/rsa_private_key.h" 11 #include "crypto/rsa_private_key.h"
11 #include "net/base/net_errors.h" 12 #include "net/base/net_errors.h"
12 #include "net/socket/stream_socket.h" 13 #include "net/socket/stream_socket.h"
13 14
14 namespace { 15 namespace {
15 16
16 const char kLocalAbstractCommand[] = "localabstract:%s"; 17 const char kLocalAbstractCommand[] = "localabstract:%s";
17 18
18 const int kBufferSize = 16 * 1024; 19 const int kBufferSize = 16 * 1024;
19 20
20 class UsbDeviceImpl : public AndroidDeviceManager::Device { 21 class UsbDeviceImpl : public AndroidDeviceManager::Device {
21 public: 22 public:
22 explicit UsbDeviceImpl(AndroidUsbDevice* device); 23 explicit UsbDeviceImpl(AndroidUsbDevice* device);
23 24
24 virtual void RunCommand(const std::string& command, 25 virtual void QueryDeviceInfo(const DeviceInfoCallback& callback) OVERRIDE;
25 const CommandCallback& callback) OVERRIDE;
26 26
27 virtual void OpenSocket(const std::string& name, 27 virtual void OpenSocket(const std::string& name,
28 const SocketCallback& callback) OVERRIDE; 28 const SocketCallback& callback) OVERRIDE;
29 private: 29 private:
30 void OnOpenSocket(const SocketCallback& callback, 30 void OnOpenSocket(const SocketCallback& callback,
31 net::StreamSocket* socket, 31 net::StreamSocket* socket,
32 int result); 32 int result);
33 void RunCommand(const std::string& command,
34 const CommandCallback& callback);
33 void OpenedForCommand(const CommandCallback& callback, 35 void OpenedForCommand(const CommandCallback& callback,
34 net::StreamSocket* socket, 36 net::StreamSocket* socket,
35 int result); 37 int result);
36 void OnRead(net::StreamSocket* socket, 38 void OnRead(net::StreamSocket* socket,
37 scoped_refptr<net::IOBuffer> buffer, 39 scoped_refptr<net::IOBuffer> buffer,
38 const std::string& data, 40 const std::string& data,
39 const CommandCallback& callback, 41 const CommandCallback& callback,
40 int result); 42 int result);
41 43
42 virtual ~UsbDeviceImpl() {} 44 virtual ~UsbDeviceImpl() {}
43 scoped_refptr<AndroidUsbDevice> device_; 45 scoped_refptr<AndroidUsbDevice> device_;
44 }; 46 };
45 47
46 48
47 UsbDeviceImpl::UsbDeviceImpl(AndroidUsbDevice* device) 49 UsbDeviceImpl::UsbDeviceImpl(AndroidUsbDevice* device)
48 : Device(device->serial(), device->is_connected()), 50 : Device(device->serial(), device->is_connected()),
49 device_(device) { 51 device_(device) {
50 device_->InitOnCallerThread(); 52 device_->InitOnCallerThread();
51 } 53 }
52 54
53 void UsbDeviceImpl::RunCommand(const std::string& command, 55 void UsbDeviceImpl::QueryDeviceInfo(const DeviceInfoCallback& callback) {
54 const CommandCallback& callback) { 56 new AdbDeviceInfoQuery(
55 DCHECK(CalledOnValidThread()); 57 base::Bind(&UsbDeviceImpl::RunCommand, this), callback);
56 net::StreamSocket* socket = device_->CreateSocket(command);
57 if (!socket) {
58 callback.Run(net::ERR_CONNECTION_FAILED, std::string());
59 return;
60 }
61 int result = socket->Connect(base::Bind(&UsbDeviceImpl::OpenedForCommand,
62 this, callback, socket));
63 if (result != net::ERR_IO_PENDING)
64 callback.Run(result, std::string());
65 } 58 }
66 59
67 void UsbDeviceImpl::OpenSocket(const std::string& name, 60 void UsbDeviceImpl::OpenSocket(const std::string& name,
68 const SocketCallback& callback) { 61 const SocketCallback& callback) {
69 DCHECK(CalledOnValidThread()); 62 DCHECK(CalledOnValidThread());
70 std::string socket_name = 63 std::string socket_name =
71 base::StringPrintf(kLocalAbstractCommand, name.c_str()); 64 base::StringPrintf(kLocalAbstractCommand, name.c_str());
72 net::StreamSocket* socket = device_->CreateSocket(socket_name); 65 net::StreamSocket* socket = device_->CreateSocket(socket_name);
73 if (!socket) { 66 if (!socket) {
74 callback.Run(net::ERR_CONNECTION_FAILED, NULL); 67 callback.Run(net::ERR_CONNECTION_FAILED, NULL);
75 return; 68 return;
76 } 69 }
77 int result = socket->Connect(base::Bind(&UsbDeviceImpl::OnOpenSocket, this, 70 int result = socket->Connect(base::Bind(&UsbDeviceImpl::OnOpenSocket, this,
78 callback, socket)); 71 callback, socket));
79 if (result != net::ERR_IO_PENDING) 72 if (result != net::ERR_IO_PENDING)
80 callback.Run(result, NULL); 73 callback.Run(result, NULL);
81 } 74 }
82 75
83 void UsbDeviceImpl::OnOpenSocket(const SocketCallback& callback, 76 void UsbDeviceImpl::OnOpenSocket(const SocketCallback& callback,
84 net::StreamSocket* socket, 77 net::StreamSocket* socket,
85 int result) { 78 int result) {
86 callback.Run(result, result == net::OK ? socket : NULL); 79 callback.Run(result, result == net::OK ? socket : NULL);
87 } 80 }
88 81
82 void UsbDeviceImpl::RunCommand(const std::string& command,
83 const CommandCallback& callback) {
84 DCHECK(CalledOnValidThread());
85 net::StreamSocket* socket = device_->CreateSocket(command);
86 if (!socket) {
87 callback.Run(net::ERR_CONNECTION_FAILED, std::string());
88 return;
89 }
90 int result = socket->Connect(base::Bind(&UsbDeviceImpl::OpenedForCommand,
91 this, callback, socket));
92 if (result != net::ERR_IO_PENDING)
93 callback.Run(result, std::string());
94 }
95
89 void UsbDeviceImpl::OpenedForCommand(const CommandCallback& callback, 96 void UsbDeviceImpl::OpenedForCommand(const CommandCallback& callback,
90 net::StreamSocket* socket, 97 net::StreamSocket* socket,
91 int result) { 98 int result) {
92 if (result != net::OK) { 99 if (result != net::OK) {
93 callback.Run(result, std::string()); 100 callback.Run(result, std::string());
94 return; 101 return;
95 } 102 }
96 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kBufferSize); 103 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kBufferSize);
97 result = socket->Read(buffer, kBufferSize, 104 result = socket->Read(buffer, kBufferSize,
98 base::Bind(&UsbDeviceImpl::OnRead, this, 105 base::Bind(&UsbDeviceImpl::OnRead, this,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 rsa_key_.reset(AndroidRSAPrivateKey(profile)); 149 rsa_key_.reset(AndroidRSAPrivateKey(profile));
143 } 150 }
144 151
145 UsbDeviceProvider::~UsbDeviceProvider() { 152 UsbDeviceProvider::~UsbDeviceProvider() {
146 } 153 }
147 154
148 void UsbDeviceProvider::QueryDevices(const QueryDevicesCallback& callback) { 155 void UsbDeviceProvider::QueryDevices(const QueryDevicesCallback& callback) {
149 AndroidUsbDevice::Enumerate( 156 AndroidUsbDevice::Enumerate(
150 rsa_key_.get(), base::Bind(&EnumeratedDevices, callback)); 157 rsa_key_.get(), base::Bind(&EnumeratedDevices, callback));
151 } 158 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698