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

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

Issue 449883002: 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
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, 22 net::StreamSocket* socket_raw,
23 int result) { 23 int result) {
24 callback.Run(result, result == net::OK ? socket : NULL); 24 scoped_ptr<net::StreamSocket> socket(socket_raw);
25 if (result != net::OK)
26 socket.reset();
27 callback.Run(result, socket.Pass());
25 } 28 }
26 29
27 void OnRead(net::StreamSocket* socket, 30 void OnRead(net::StreamSocket* socket,
28 scoped_refptr<net::IOBuffer> buffer, 31 scoped_refptr<net::IOBuffer> buffer,
29 const std::string& data, 32 const std::string& data,
30 const UsbDeviceProvider::CommandCallback& callback, 33 const UsbDeviceProvider::CommandCallback& callback,
31 int result) { 34 int result) {
32 if (result <= 0) { 35 if (result <= 0) {
33 callback.Run(result, result == 0 ? data : std::string()); 36 callback.Run(result, result == 0 ? data : std::string());
34 delete socket; 37 delete socket;
(...skipping 26 matching lines...) Expand all
61 } 64 }
62 65
63 void RunCommand(scoped_refptr<AndroidUsbDevice> device, 66 void RunCommand(scoped_refptr<AndroidUsbDevice> device,
64 const std::string& command, 67 const std::string& command,
65 const UsbDeviceProvider::CommandCallback& callback) { 68 const UsbDeviceProvider::CommandCallback& callback) {
66 net::StreamSocket* socket = device->CreateSocket(command); 69 net::StreamSocket* socket = device->CreateSocket(command);
67 if (!socket) { 70 if (!socket) {
68 callback.Run(net::ERR_CONNECTION_FAILED, std::string()); 71 callback.Run(net::ERR_CONNECTION_FAILED, std::string());
69 return; 72 return;
70 } 73 }
71 int result = socket->Connect(base::Bind(&OpenedForCommand, callback, socket)); 74 int result = socket->Connect(
75 base::Bind(&OpenedForCommand, callback, socket));
72 if (result != net::ERR_IO_PENDING) 76 if (result != net::ERR_IO_PENDING)
73 callback.Run(result, std::string()); 77 callback.Run(result, std::string());
74 } 78 }
75 79
76 } // namespace 80 } // namespace
77 81
78 // static 82 // static
79 void UsbDeviceProvider::CountDevices( 83 void UsbDeviceProvider::CountDevices(
80 const base::Callback<void(int)>& callback) { 84 const base::Callback<void(int)>& callback) {
81 AndroidUsbDevice::CountDevices(callback); 85 AndroidUsbDevice::CountDevices(callback);
(...skipping 18 matching lines...) Expand all
100 return; 104 return;
101 } 105 }
102 AdbDeviceInfoQuery::Start(base::Bind(&RunCommand, it->second), callback); 106 AdbDeviceInfoQuery::Start(base::Bind(&RunCommand, it->second), callback);
103 } 107 }
104 108
105 void UsbDeviceProvider::OpenSocket(const std::string& serial, 109 void UsbDeviceProvider::OpenSocket(const std::string& serial,
106 const std::string& name, 110 const std::string& name,
107 const SocketCallback& callback) { 111 const SocketCallback& callback) {
108 UsbDeviceMap::iterator it = device_map_.find(serial); 112 UsbDeviceMap::iterator it = device_map_.find(serial);
109 if (it == device_map_.end()) { 113 if (it == device_map_.end()) {
110 callback.Run(net::ERR_CONNECTION_FAILED, NULL); 114 callback.Run(net::ERR_CONNECTION_FAILED,
115 make_scoped_ptr<net::StreamSocket>(NULL));
111 return; 116 return;
112 } 117 }
113 std::string socket_name = 118 std::string socket_name =
114 base::StringPrintf(kLocalAbstractCommand, name.c_str()); 119 base::StringPrintf(kLocalAbstractCommand, name.c_str());
115 net::StreamSocket* socket = it->second->CreateSocket(socket_name); 120 net::StreamSocket* socket = it->second->CreateSocket(socket_name);
116 if (!socket) { 121 if (!socket) {
117 callback.Run(net::ERR_CONNECTION_FAILED, NULL); 122 callback.Run(net::ERR_CONNECTION_FAILED,
123 make_scoped_ptr<net::StreamSocket>(NULL));
118 return; 124 return;
119 } 125 }
120 int result = socket->Connect(base::Bind(&OnOpenSocket, callback, socket)); 126 int result = socket->Connect(base::Bind(&OnOpenSocket, callback, socket));
121 if (result != net::ERR_IO_PENDING) 127 if (result != net::ERR_IO_PENDING)
122 callback.Run(result, NULL); 128 callback.Run(result, make_scoped_ptr<net::StreamSocket>(NULL));
123 } 129 }
124 130
125 void UsbDeviceProvider::ReleaseDevice(const std::string& serial) { 131 void UsbDeviceProvider::ReleaseDevice(const std::string& serial) {
126 device_map_.erase(serial); 132 device_map_.erase(serial);
127 } 133 }
128 134
129 UsbDeviceProvider::~UsbDeviceProvider() { 135 UsbDeviceProvider::~UsbDeviceProvider() {
130 } 136 }
131 137
132 void UsbDeviceProvider::EnumeratedDevices(const SerialsCallback& callback, 138 void UsbDeviceProvider::EnumeratedDevices(const SerialsCallback& callback,
133 const AndroidUsbDevices& devices) { 139 const AndroidUsbDevices& devices) {
134 std::vector<std::string> result; 140 std::vector<std::string> result;
135 device_map_.clear(); 141 device_map_.clear();
136 for (AndroidUsbDevices::const_iterator it = devices.begin(); 142 for (AndroidUsbDevices::const_iterator it = devices.begin();
137 it != devices.end(); ++it) { 143 it != devices.end(); ++it) {
138 result.push_back((*it)->serial()); 144 result.push_back((*it)->serial());
139 device_map_[(*it)->serial()] = *it; 145 device_map_[(*it)->serial()] = *it;
140 (*it)->InitOnCallerThread(); 146 (*it)->InitOnCallerThread();
141 } 147 }
142 callback.Run(result); 148 callback.Run(result);
143 } 149 }
144 150
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698