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

Side by Side Diff: chrome/browser/devtools/devtools_adb_bridge.cc

Issue 26436003: DevTools: display 'Pending authentication' message upon raw usb debugging. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review comment addressed. Created 7 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/devtools_adb_bridge.h" 5 #include "chrome/browser/devtools/devtools_adb_bridge.h"
6 6
7 #include <map> 7 #include <map>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 77
78 // AdbDeviceImpl -------------------------------------------------------------- 78 // AdbDeviceImpl --------------------------------------------------------------
79 79
80 class AdbDeviceImpl : public DevToolsAdbBridge::AndroidDevice { 80 class AdbDeviceImpl : public DevToolsAdbBridge::AndroidDevice {
81 public: 81 public:
82 explicit AdbDeviceImpl(const std::string& serial); 82 explicit AdbDeviceImpl(const std::string& serial);
83 virtual void RunCommand(const std::string& command, 83 virtual void RunCommand(const std::string& command,
84 const CommandCallback& callback) OVERRIDE; 84 const CommandCallback& callback) OVERRIDE;
85 virtual void OpenSocket(const std::string& name, 85 virtual void OpenSocket(const std::string& name,
86 const SocketCallback& callback) OVERRIDE; 86 const SocketCallback& callback) OVERRIDE;
87 virtual bool IsConnected() OVERRIDE;
88
87 private: 89 private:
88 virtual ~AdbDeviceImpl() {} 90 virtual ~AdbDeviceImpl() {}
89 }; 91 };
90 92
91 AdbDeviceImpl::AdbDeviceImpl(const std::string& serial) 93 AdbDeviceImpl::AdbDeviceImpl(const std::string& serial)
92 : AndroidDevice(serial) { 94 : AndroidDevice(serial) {
93 } 95 }
94 96
95 void AdbDeviceImpl::RunCommand(const std::string& command, 97 void AdbDeviceImpl::RunCommand(const std::string& command,
96 const CommandCallback& callback) { 98 const CommandCallback& callback) {
97 std::string query = base::StringPrintf(kHostTransportCommand, 99 std::string query = base::StringPrintf(kHostTransportCommand,
98 serial().c_str(), command.c_str()); 100 serial().c_str(), command.c_str());
99 AdbClientSocket::AdbQuery(kAdbPort, query, callback); 101 AdbClientSocket::AdbQuery(kAdbPort, query, callback);
100 } 102 }
101 103
102 void AdbDeviceImpl::OpenSocket(const std::string& name, 104 void AdbDeviceImpl::OpenSocket(const std::string& name,
103 const SocketCallback& callback) { 105 const SocketCallback& callback) {
104 std::string socket_name = 106 std::string socket_name =
105 base::StringPrintf(kLocalAbstractCommand, name.c_str()); 107 base::StringPrintf(kLocalAbstractCommand, name.c_str());
106 AdbClientSocket::TransportQuery(kAdbPort, serial(), socket_name, callback); 108 AdbClientSocket::TransportQuery(kAdbPort, serial(), socket_name, callback);
107 } 109 }
108 110
111 bool AdbDeviceImpl::IsConnected() {
112 return true;
113 }
114
109 115
110 // UsbDeviceImpl -------------------------------------------------------------- 116 // UsbDeviceImpl --------------------------------------------------------------
111 117
112 class UsbDeviceImpl : public DevToolsAdbBridge::AndroidDevice { 118 class UsbDeviceImpl : public DevToolsAdbBridge::AndroidDevice {
113 public: 119 public:
114 explicit UsbDeviceImpl(AndroidUsbDevice* device); 120 explicit UsbDeviceImpl(AndroidUsbDevice* device);
115 virtual void RunCommand(const std::string& command, 121 virtual void RunCommand(const std::string& command,
116 const CommandCallback& callback) OVERRIDE; 122 const CommandCallback& callback) OVERRIDE;
117 virtual void OpenSocket(const std::string& name, 123 virtual void OpenSocket(const std::string& name,
118 const SocketCallback& callback) OVERRIDE; 124 const SocketCallback& callback) OVERRIDE;
125 virtual bool IsConnected() OVERRIDE;
119 126
120 private: 127 private:
121 void OnOpenSocket(const SocketCallback& callback, 128 void OnOpenSocket(const SocketCallback& callback,
122 net::StreamSocket* socket, 129 net::StreamSocket* socket,
123 int result); 130 int result);
124 void OpenedForCommand(const CommandCallback& callback, 131 void OpenedForCommand(const CommandCallback& callback,
125 net::StreamSocket* socket, 132 net::StreamSocket* socket,
126 int result); 133 int result);
127 void OnRead(net::StreamSocket* socket, 134 void OnRead(net::StreamSocket* socket,
128 scoped_refptr<net::IOBuffer> buffer, 135 scoped_refptr<net::IOBuffer> buffer,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 } 201 }
195 202
196 std::string new_data = data + std::string(buffer->data(), result); 203 std::string new_data = data + std::string(buffer->data(), result);
197 result = socket->Read(buffer, kBufferSize, 204 result = socket->Read(buffer, kBufferSize,
198 base::Bind(&UsbDeviceImpl::OnRead, this, 205 base::Bind(&UsbDeviceImpl::OnRead, this,
199 socket, buffer, new_data, callback)); 206 socket, buffer, new_data, callback));
200 if (result != net::ERR_IO_PENDING) 207 if (result != net::ERR_IO_PENDING)
201 OnRead(socket, buffer, new_data, callback, result); 208 OnRead(socket, buffer, new_data, callback, result);
202 } 209 }
203 210
211 bool UsbDeviceImpl::IsConnected() {
212 return device_->is_connected();
213 }
214
204 215
205 // AdbCountDevicesCommand ----------------------------------------------------- 216 // AdbCountDevicesCommand -----------------------------------------------------
206 217
207 class AdbCountDevicesCommand : public base::RefCountedThreadSafe< 218 class AdbCountDevicesCommand : public base::RefCountedThreadSafe<
208 AdbCountDevicesCommand, 219 AdbCountDevicesCommand,
209 content::BrowserThread::DeleteOnUIThread> { 220 content::BrowserThread::DeleteOnUIThread> {
210 public: 221 public:
211 typedef base::Callback<void(int)> Callback; 222 typedef base::Callback<void(int)> Callback;
212 223
213 AdbCountDevicesCommand( 224 AdbCountDevicesCommand(
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 remote_devices_->back()->AddBrowser(remote_browser); 402 remote_devices_->back()->AddBrowser(remote_browser);
392 browsers_.push_back(remote_browser); 403 browsers_.push_back(remote_browser);
393 device->HttpQuery( 404 device->HttpQuery(
394 std::string(), kVersionRequest, 405 std::string(), kVersionRequest,
395 base::Bind(&AdbPagesCommand::ReceivedVersion, this)); 406 base::Bind(&AdbPagesCommand::ReceivedVersion, this));
396 return; 407 return;
397 } 408 }
398 #endif // defined(DEBUG_DEVTOOLS) 409 #endif // defined(DEBUG_DEVTOOLS)
399 410
400 scoped_refptr<DevToolsAdbBridge::AndroidDevice> device = devices_.back(); 411 scoped_refptr<DevToolsAdbBridge::AndroidDevice> device = devices_.back();
401 device->RunCommand(kDeviceModelCommand, 412 if (device->IsConnected()) {
402 base::Bind(&AdbPagesCommand::ReceivedModel, this)); 413 device->RunCommand(kDeviceModelCommand,
414 base::Bind(&AdbPagesCommand::ReceivedModel, this));
415 } else {
416 remote_devices_->push_back(new DevToolsAdbBridge::RemoteDevice(device));
417 devices_.pop_back();
418 ProcessSerials();
419 }
403 } 420 }
404 421
405 void AdbPagesCommand::ReceivedModel(int result, const std::string& response) { 422 void AdbPagesCommand::ReceivedModel(int result, const std::string& response) {
406 DCHECK_EQ(adb_thread_->message_loop(), base::MessageLoop::current()); 423 DCHECK_EQ(adb_thread_->message_loop(), base::MessageLoop::current());
407 if (result < 0) { 424 if (result < 0) {
408 devices_.pop_back(); 425 devices_.pop_back();
409 ProcessSerials(); 426 ProcessSerials();
410 return; 427 return;
411 } 428 }
412 scoped_refptr<DevToolsAdbBridge::AndroidDevice> device = devices_.back(); 429 scoped_refptr<DevToolsAdbBridge::AndroidDevice> device = devices_.back();
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 649
633 int width; 650 int width;
634 int height; 651 int height;
635 std::vector<std::string> numbers; 652 std::vector<std::string> numbers;
636 Tokenize(pairs[1].substr(1, pairs[1].size() - 2), ",", &numbers); 653 Tokenize(pairs[1].substr(1, pairs[1].size() - 2), ",", &numbers);
637 if (numbers.size() != 2 || 654 if (numbers.size() != 2 ||
638 !base::StringToInt(numbers[0], &width) || 655 !base::StringToInt(numbers[0], &width) ||
639 !base::StringToInt(numbers[1], &height)) 656 !base::StringToInt(numbers[1], &height))
640 return; 657 return;
641 658
642 remote_devices_->back()->SetScreenSize(gfx::Size(width, height)); 659 remote_devices_->back()->set_screen_size(gfx::Size(width, height));
643 } 660 }
644 661
645 662
646 // AdbProtocolCommand --------------------------------------------------------- 663 // AdbProtocolCommand ---------------------------------------------------------
647 664
648 class AdbProtocolCommand : public AdbWebSocket::Delegate { 665 class AdbProtocolCommand : public AdbWebSocket::Delegate {
649 public: 666 public:
650 AdbProtocolCommand( 667 AdbProtocolCommand(
651 scoped_refptr<DevToolsAdbBridge::RefCountedAdbThread> adb_thread, 668 scoped_refptr<DevToolsAdbBridge::RefCountedAdbThread> adb_thread,
652 scoped_refptr<DevToolsAdbBridge::AndroidDevice> device, 669 scoped_refptr<DevToolsAdbBridge::AndroidDevice> device,
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
1029 } 1046 }
1030 1047
1031 1048
1032 // DevToolsAdbBridge::RemoteDevice -------------------------------------------- 1049 // DevToolsAdbBridge::RemoteDevice --------------------------------------------
1033 1050
1034 DevToolsAdbBridge::RemoteDevice::RemoteDevice( 1051 DevToolsAdbBridge::RemoteDevice::RemoteDevice(
1035 scoped_refptr<AndroidDevice> device) 1052 scoped_refptr<AndroidDevice> device)
1036 : device_(device) { 1053 : device_(device) {
1037 } 1054 }
1038 1055
1056 std::string DevToolsAdbBridge::RemoteDevice::GetSerial() {
1057 return device_->serial();
1058 }
1059
1060 std::string DevToolsAdbBridge::RemoteDevice::GetModel() {
1061 return device_->model();
1062 }
1063
1064 bool DevToolsAdbBridge::RemoteDevice::IsConnected() {
1065 return device_->IsConnected();
1066 }
1067
1068 void DevToolsAdbBridge::RemoteDevice::AddBrowser(
1069 scoped_refptr<RemoteBrowser> browser) {
1070 browsers_.push_back(browser);
1071 }
1072
1039 DevToolsAdbBridge::RemoteDevice::~RemoteDevice() { 1073 DevToolsAdbBridge::RemoteDevice::~RemoteDevice() {
1040 } 1074 }
1041 1075
1042 1076
1043 // DevToolsAdbBridge::RefCountedAdbThread ------------------------------------- 1077 // DevToolsAdbBridge::RefCountedAdbThread -------------------------------------
1044 1078
1045 DevToolsAdbBridge::RefCountedAdbThread* 1079 DevToolsAdbBridge::RefCountedAdbThread*
1046 DevToolsAdbBridge::RefCountedAdbThread::instance_ = NULL; 1080 DevToolsAdbBridge::RefCountedAdbThread::instance_ = NULL;
1047 1081
1048 // static 1082 // static
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
1145 1179
1146 if (listeners_.empty()) 1180 if (listeners_.empty())
1147 return; 1181 return;
1148 1182
1149 BrowserThread::PostDelayedTask( 1183 BrowserThread::PostDelayedTask(
1150 BrowserThread::UI, 1184 BrowserThread::UI,
1151 FROM_HERE, 1185 FROM_HERE,
1152 base::Bind(&DevToolsAdbBridge::RequestRemoteDevices, this), 1186 base::Bind(&DevToolsAdbBridge::RequestRemoteDevices, this),
1153 base::TimeDelta::FromMilliseconds(kAdbPollingIntervalMs)); 1187 base::TimeDelta::FromMilliseconds(kAdbPollingIntervalMs));
1154 } 1188 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/devtools_adb_bridge.h ('k') | chrome/browser/devtools/port_forwarding_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698