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

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

Issue 505783002: Revert of DevTools: Removed refcounting from AndroidWebSocket (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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
« no previous file with comments | « chrome/browser/devtools/device/self_device_provider.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/adb/adb_device_info_query.h"
9 #include "chrome/browser/devtools/device/usb/android_rsa.h" 9 #include "chrome/browser/devtools/device/usb/android_rsa.h"
10 #include "chrome/browser/devtools/device/usb/android_usb_device.h" 10 #include "chrome/browser/devtools/device/usb/android_usb_device.h"
11 #include "crypto/rsa_private_key.h" 11 #include "crypto/rsa_private_key.h"
12 #include "net/base/net_errors.h" 12 #include "net/base/net_errors.h"
13 #include "net/socket/stream_socket.h" 13 #include "net/socket/stream_socket.h"
14 14
15 namespace { 15 namespace {
16 16
17 const char kLocalAbstractCommand[] = "localabstract:%s"; 17 const char kLocalAbstractCommand[] = "localabstract:%s";
18 18
19 const int kBufferSize = 16 * 1024; 19 const int kBufferSize = 16 * 1024;
20 20
21 void OnOpenSocket(const UsbDeviceProvider::SocketCallback& callback, 21 void OnOpenSocket(const UsbDeviceProvider::SocketCallback& callback,
22 net::StreamSocket* socket_raw, 22 net::StreamSocket* socket,
23 int result) { 23 int result) {
24 scoped_ptr<net::StreamSocket> socket(socket_raw); 24 callback.Run(result, result == net::OK ? socket : NULL);
25 if (result != net::OK)
26 socket.reset();
27 callback.Run(result, socket.Pass());
28 } 25 }
29 26
30 void OnRead(net::StreamSocket* socket, 27 void OnRead(net::StreamSocket* socket,
31 scoped_refptr<net::IOBuffer> buffer, 28 scoped_refptr<net::IOBuffer> buffer,
32 const std::string& data, 29 const std::string& data,
33 const UsbDeviceProvider::CommandCallback& callback, 30 const UsbDeviceProvider::CommandCallback& callback,
34 int result) { 31 int result) {
35 if (result <= 0) { 32 if (result <= 0) {
36 callback.Run(result, result == 0 ? data : std::string()); 33 callback.Run(result, result == 0 ? data : std::string());
37 delete socket; 34 delete socket;
(...skipping 26 matching lines...) Expand all
64 } 61 }
65 62
66 void RunCommand(scoped_refptr<AndroidUsbDevice> device, 63 void RunCommand(scoped_refptr<AndroidUsbDevice> device,
67 const std::string& command, 64 const std::string& command,
68 const UsbDeviceProvider::CommandCallback& callback) { 65 const UsbDeviceProvider::CommandCallback& callback) {
69 net::StreamSocket* socket = device->CreateSocket(command); 66 net::StreamSocket* socket = device->CreateSocket(command);
70 if (!socket) { 67 if (!socket) {
71 callback.Run(net::ERR_CONNECTION_FAILED, std::string()); 68 callback.Run(net::ERR_CONNECTION_FAILED, std::string());
72 return; 69 return;
73 } 70 }
74 int result = socket->Connect( 71 int result = socket->Connect(base::Bind(&OpenedForCommand, callback, socket));
75 base::Bind(&OpenedForCommand, callback, socket));
76 if (result != net::ERR_IO_PENDING) 72 if (result != net::ERR_IO_PENDING)
77 callback.Run(result, std::string()); 73 callback.Run(result, std::string());
78 } 74 }
79 75
80 } // namespace 76 } // namespace
81 77
82 // static 78 // static
83 void UsbDeviceProvider::CountDevices( 79 void UsbDeviceProvider::CountDevices(
84 const base::Callback<void(int)>& callback) { 80 const base::Callback<void(int)>& callback) {
85 AndroidUsbDevice::CountDevices(callback); 81 AndroidUsbDevice::CountDevices(callback);
(...skipping 18 matching lines...) Expand all
104 return; 100 return;
105 } 101 }
106 AdbDeviceInfoQuery::Start(base::Bind(&RunCommand, it->second), callback); 102 AdbDeviceInfoQuery::Start(base::Bind(&RunCommand, it->second), callback);
107 } 103 }
108 104
109 void UsbDeviceProvider::OpenSocket(const std::string& serial, 105 void UsbDeviceProvider::OpenSocket(const std::string& serial,
110 const std::string& name, 106 const std::string& name,
111 const SocketCallback& callback) { 107 const SocketCallback& callback) {
112 UsbDeviceMap::iterator it = device_map_.find(serial); 108 UsbDeviceMap::iterator it = device_map_.find(serial);
113 if (it == device_map_.end()) { 109 if (it == device_map_.end()) {
114 callback.Run(net::ERR_CONNECTION_FAILED, 110 callback.Run(net::ERR_CONNECTION_FAILED, NULL);
115 make_scoped_ptr<net::StreamSocket>(NULL));
116 return; 111 return;
117 } 112 }
118 std::string socket_name = 113 std::string socket_name =
119 base::StringPrintf(kLocalAbstractCommand, name.c_str()); 114 base::StringPrintf(kLocalAbstractCommand, name.c_str());
120 net::StreamSocket* socket = it->second->CreateSocket(socket_name); 115 net::StreamSocket* socket = it->second->CreateSocket(socket_name);
121 if (!socket) { 116 if (!socket) {
122 callback.Run(net::ERR_CONNECTION_FAILED, 117 callback.Run(net::ERR_CONNECTION_FAILED, NULL);
123 make_scoped_ptr<net::StreamSocket>(NULL));
124 return; 118 return;
125 } 119 }
126 int result = socket->Connect(base::Bind(&OnOpenSocket, callback, socket)); 120 int result = socket->Connect(base::Bind(&OnOpenSocket, callback, socket));
127 if (result != net::ERR_IO_PENDING) 121 if (result != net::ERR_IO_PENDING)
128 callback.Run(result, make_scoped_ptr<net::StreamSocket>(NULL)); 122 callback.Run(result, NULL);
129 } 123 }
130 124
131 void UsbDeviceProvider::ReleaseDevice(const std::string& serial) { 125 void UsbDeviceProvider::ReleaseDevice(const std::string& serial) {
132 device_map_.erase(serial); 126 device_map_.erase(serial);
133 } 127 }
134 128
135 UsbDeviceProvider::~UsbDeviceProvider() { 129 UsbDeviceProvider::~UsbDeviceProvider() {
136 } 130 }
137 131
138 void UsbDeviceProvider::EnumeratedDevices(const SerialsCallback& callback, 132 void UsbDeviceProvider::EnumeratedDevices(const SerialsCallback& callback,
139 const AndroidUsbDevices& devices) { 133 const AndroidUsbDevices& devices) {
140 std::vector<std::string> result; 134 std::vector<std::string> result;
141 device_map_.clear(); 135 device_map_.clear();
142 for (AndroidUsbDevices::const_iterator it = devices.begin(); 136 for (AndroidUsbDevices::const_iterator it = devices.begin();
143 it != devices.end(); ++it) { 137 it != devices.end(); ++it) {
144 result.push_back((*it)->serial()); 138 result.push_back((*it)->serial());
145 device_map_[(*it)->serial()] = *it; 139 device_map_[(*it)->serial()] = *it;
146 (*it)->InitOnCallerThread(); 140 (*it)->InitOnCallerThread();
147 } 141 }
148 callback.Run(result); 142 callback.Run(result);
149 } 143 }
150 144
OLDNEW
« no previous file with comments | « chrome/browser/devtools/device/self_device_provider.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698