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

Side by Side Diff: chrome/browser/extensions/api/usb/usb_api.cc

Issue 236203019: Move UsbService to its own component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move usb_service component symbols into usb_service namespace Created 6 years, 8 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/extensions/api/usb/usb_api.h" 5 #include "chrome/browser/extensions/api/usb/usb_api.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/message_loop/message_loop_proxy.h" 11 #include "base/message_loop/message_loop_proxy.h"
12 #include "chrome/browser/extensions/api/usb/usb_device_resource.h" 12 #include "chrome/browser/extensions/api/usb/usb_device_resource.h"
13 #include "chrome/browser/usb/usb_device_handle.h"
14 #include "chrome/browser/usb/usb_service.h"
15 #include "chrome/common/extensions/api/usb.h" 13 #include "chrome/common/extensions/api/usb.h"
14 #include "components/usb_service/usb_device_handle.h"
15 #include "components/usb_service/usb_service.h"
16 #include "extensions/browser/extension_system.h" 16 #include "extensions/browser/extension_system.h"
17 #include "extensions/common/permissions/permissions_data.h" 17 #include "extensions/common/permissions/permissions_data.h"
18 #include "extensions/common/permissions/usb_device_permission.h" 18 #include "extensions/common/permissions/usb_device_permission.h"
19 19
20 namespace usb = extensions::api::usb; 20 namespace usb = extensions::api::usb;
21 namespace BulkTransfer = usb::BulkTransfer; 21 namespace BulkTransfer = usb::BulkTransfer;
22 namespace ClaimInterface = usb::ClaimInterface; 22 namespace ClaimInterface = usb::ClaimInterface;
23 namespace CloseDevice = usb::CloseDevice; 23 namespace CloseDevice = usb::CloseDevice;
24 namespace ControlTransfer = usb::ControlTransfer; 24 namespace ControlTransfer = usb::ControlTransfer;
25 namespace FindDevices = usb::FindDevices; 25 namespace FindDevices = usb::FindDevices;
(...skipping 16 matching lines...) Expand all
42 using usb::Direction; 42 using usb::Direction;
43 using usb::EndpointDescriptor; 43 using usb::EndpointDescriptor;
44 using usb::GenericTransferInfo; 44 using usb::GenericTransferInfo;
45 using usb::InterfaceDescriptor; 45 using usb::InterfaceDescriptor;
46 using usb::IsochronousTransferInfo; 46 using usb::IsochronousTransferInfo;
47 using usb::Recipient; 47 using usb::Recipient;
48 using usb::RequestType; 48 using usb::RequestType;
49 using usb::SynchronizationType; 49 using usb::SynchronizationType;
50 using usb::TransferType; 50 using usb::TransferType;
51 using usb::UsageType; 51 using usb::UsageType;
52 using usb_service::UsbConfigDescriptor;
53 using usb_service::UsbDevice;
54 using usb_service::UsbDeviceHandle;
55 using usb_service::UsbEndpointDescriptor;
56 using usb_service::UsbEndpointDirection;
57 using usb_service::UsbInterfaceAltSettingDescriptor;
58 using usb_service::UsbInterfaceDescriptor;
59 using usb_service::UsbService;
60 using usb_service::UsbSynchronizationType;
61 using usb_service::UsbTransferStatus;
62 using usb_service::UsbTransferType;
63 using usb_service::UsbUsageType;
52 64
53 typedef std::vector<scoped_refptr<UsbDevice> > DeviceVector; 65 typedef std::vector<scoped_refptr<UsbDevice> > DeviceVector;
54 typedef scoped_ptr<DeviceVector> ScopedDeviceVector; 66 typedef scoped_ptr<DeviceVector> ScopedDeviceVector;
55 67
56 namespace { 68 namespace {
57 69
58 const char kDataKey[] = "data"; 70 const char kDataKey[] = "data";
59 const char kResultCodeKey[] = "resultCode"; 71 const char kResultCodeKey[] = "resultCode";
60 72
61 const char kErrorInitService[] = "Failed to initialize USB service."; 73 const char kErrorInitService[] = "Failed to initialize USB service.";
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 110
99 const size_t kMaxTransferLength = 100 * 1024 * 1024; 111 const size_t kMaxTransferLength = 100 * 1024 * 1024;
100 const int kMaxPackets = 4 * 1024 * 1024; 112 const int kMaxPackets = 4 * 1024 * 1024;
101 const int kMaxPacketLength = 64 * 1024; 113 const int kMaxPacketLength = 64 * 1024;
102 114
103 UsbDevice* g_device_for_test = NULL; 115 UsbDevice* g_device_for_test = NULL;
104 116
105 bool ConvertDirectionToApi(const UsbEndpointDirection& input, 117 bool ConvertDirectionToApi(const UsbEndpointDirection& input,
106 Direction* output) { 118 Direction* output) {
107 switch (input) { 119 switch (input) {
108 case USB_DIRECTION_INBOUND: 120 case usb_service::USB_DIRECTION_INBOUND:
109 *output = usb::DIRECTION_IN; 121 *output = usb::DIRECTION_IN;
110 return true; 122 return true;
111 case USB_DIRECTION_OUTBOUND: 123 case usb_service::USB_DIRECTION_OUTBOUND:
112 *output = usb::DIRECTION_OUT; 124 *output = usb::DIRECTION_OUT;
113 return true; 125 return true;
114 default: 126 default:
115 NOTREACHED(); 127 NOTREACHED();
116 return false; 128 return false;
117 } 129 }
118 } 130 }
119 131
120 bool ConvertSynchronizationTypeToApi(const UsbSynchronizationType& input, 132 bool ConvertSynchronizationTypeToApi(const UsbSynchronizationType& input,
121 usb::SynchronizationType* output) { 133 usb::SynchronizationType* output) {
122 switch (input) { 134 switch (input) {
123 case USB_SYNCHRONIZATION_NONE: 135 case usb_service::USB_SYNCHRONIZATION_NONE:
124 *output = usb::SYNCHRONIZATION_TYPE_NONE; 136 *output = usb::SYNCHRONIZATION_TYPE_NONE;
125 return true; 137 return true;
126 case USB_SYNCHRONIZATION_ASYNCHRONOUS: 138 case usb_service::USB_SYNCHRONIZATION_ASYNCHRONOUS:
127 *output = usb::SYNCHRONIZATION_TYPE_ASYNCHRONOUS; 139 *output = usb::SYNCHRONIZATION_TYPE_ASYNCHRONOUS;
128 return true; 140 return true;
129 case USB_SYNCHRONIZATION_ADAPTIVE: 141 case usb_service::USB_SYNCHRONIZATION_ADAPTIVE:
130 *output = usb::SYNCHRONIZATION_TYPE_ADAPTIVE; 142 *output = usb::SYNCHRONIZATION_TYPE_ADAPTIVE;
131 return true; 143 return true;
132 case USB_SYNCHRONIZATION_SYNCHRONOUS: 144 case usb_service::USB_SYNCHRONIZATION_SYNCHRONOUS:
133 *output = usb::SYNCHRONIZATION_TYPE_SYNCHRONOUS; 145 *output = usb::SYNCHRONIZATION_TYPE_SYNCHRONOUS;
134 return true; 146 return true;
135 default: 147 default:
136 NOTREACHED(); 148 NOTREACHED();
137 return false; 149 return false;
138 } 150 }
139 } 151 }
140 152
141 bool ConvertTransferTypeToApi( 153 bool ConvertTransferTypeToApi(
142 const UsbTransferType& input, 154 const UsbTransferType& input,
143 usb::TransferType* output) { 155 usb::TransferType* output) {
144 switch (input) { 156 switch (input) {
145 case USB_TRANSFER_CONTROL: 157 case usb_service::USB_TRANSFER_CONTROL:
146 *output = usb::TRANSFER_TYPE_CONTROL; 158 *output = usb::TRANSFER_TYPE_CONTROL;
147 return true; 159 return true;
148 case USB_TRANSFER_INTERRUPT: 160 case usb_service::USB_TRANSFER_INTERRUPT:
149 *output = usb::TRANSFER_TYPE_INTERRUPT; 161 *output = usb::TRANSFER_TYPE_INTERRUPT;
150 return true; 162 return true;
151 case USB_TRANSFER_ISOCHRONOUS: 163 case usb_service::USB_TRANSFER_ISOCHRONOUS:
152 *output = usb::TRANSFER_TYPE_ISOCHRONOUS; 164 *output = usb::TRANSFER_TYPE_ISOCHRONOUS;
153 return true; 165 return true;
154 case USB_TRANSFER_BULK: 166 case usb_service::USB_TRANSFER_BULK:
155 *output = usb::TRANSFER_TYPE_BULK; 167 *output = usb::TRANSFER_TYPE_BULK;
156 return true; 168 return true;
157 default: 169 default:
158 NOTREACHED(); 170 NOTREACHED();
159 return false; 171 return false;
160 } 172 }
161 } 173 }
162 174
163 bool ConvertUsageTypeToApi(const UsbUsageType& input, usb::UsageType* output) { 175 bool ConvertUsageTypeToApi(const UsbUsageType& input, usb::UsageType* output) {
164 switch (input) { 176 switch (input) {
165 case USB_USAGE_DATA: 177 case usb_service::USB_USAGE_DATA:
166 *output = usb::USAGE_TYPE_DATA; 178 *output = usb::USAGE_TYPE_DATA;
167 return true; 179 return true;
168 case USB_USAGE_FEEDBACK: 180 case usb_service::USB_USAGE_FEEDBACK:
169 *output = usb::USAGE_TYPE_FEEDBACK; 181 *output = usb::USAGE_TYPE_FEEDBACK;
170 return true; 182 return true;
171 case USB_USAGE_EXPLICIT_FEEDBACK: 183 case usb_service::USB_USAGE_EXPLICIT_FEEDBACK:
172 *output = usb::USAGE_TYPE_EXPLICITFEEDBACK; 184 *output = usb::USAGE_TYPE_EXPLICITFEEDBACK;
173 return true; 185 return true;
174 default: 186 default:
175 NOTREACHED(); 187 NOTREACHED();
176 return false; 188 return false;
177 } 189 }
178 } 190 }
179 191
180 bool ConvertDirection(const Direction& input, 192 bool ConvertDirection(const Direction& input,
181 UsbEndpointDirection* output) { 193 UsbEndpointDirection* output) {
182 switch (input) { 194 switch (input) {
183 case usb::DIRECTION_IN: 195 case usb::DIRECTION_IN:
184 *output = USB_DIRECTION_INBOUND; 196 *output = usb_service::USB_DIRECTION_INBOUND;
185 return true; 197 return true;
186 case usb::DIRECTION_OUT: 198 case usb::DIRECTION_OUT:
187 *output = USB_DIRECTION_OUTBOUND; 199 *output = usb_service::USB_DIRECTION_OUTBOUND;
188 return true; 200 return true;
189 default: 201 default:
190 NOTREACHED(); 202 NOTREACHED();
191 return false; 203 return false;
192 } 204 }
193 } 205 }
194 206
195 bool ConvertRequestType(const RequestType& input, 207 bool ConvertRequestType(const RequestType& input,
196 UsbDeviceHandle::TransferRequestType* output) { 208 UsbDeviceHandle::TransferRequestType* output) {
197 switch (input) { 209 switch (input) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 270
259 if (size >= kMaxTransferLength) 271 if (size >= kMaxTransferLength)
260 return NULL; 272 return NULL;
261 273
262 // Allocate a |size|-bytes buffer, or a one-byte buffer if |size| is 0. This 274 // Allocate a |size|-bytes buffer, or a one-byte buffer if |size| is 0. This
263 // is due to an impedance mismatch between IOBuffer and URBs. An IOBuffer 275 // is due to an impedance mismatch between IOBuffer and URBs. An IOBuffer
264 // cannot represent a zero-length buffer, while an URB can. 276 // cannot represent a zero-length buffer, while an URB can.
265 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(std::max( 277 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(std::max(
266 static_cast<size_t>(1), size)); 278 static_cast<size_t>(1), size));
267 279
268 if (direction == USB_DIRECTION_INBOUND) { 280 if (direction == usb_service::USB_DIRECTION_INBOUND) {
269 return buffer; 281 return buffer;
270 } else if (direction == USB_DIRECTION_OUTBOUND) { 282 } else if (direction == usb_service::USB_DIRECTION_OUTBOUND) {
271 if (input.data.get() && size <= input.data->size()) { 283 if (input.data.get() && size <= input.data->size()) {
272 memcpy(buffer->data(), input.data->data(), size); 284 memcpy(buffer->data(), input.data->data(), size);
273 return buffer; 285 return buffer;
274 } 286 }
275 } 287 }
276 NOTREACHED(); 288 NOTREACHED();
277 return NULL; 289 return NULL;
278 } 290 }
279 291
280 const char* ConvertTransferStatusToErrorString(const UsbTransferStatus status) { 292 const char* ConvertTransferStatusToErrorString(const UsbTransferStatus status) {
281 switch (status) { 293 switch (status) {
282 case USB_TRANSFER_COMPLETED: 294 case usb_service::USB_TRANSFER_COMPLETED:
283 return ""; 295 return "";
284 case USB_TRANSFER_ERROR: 296 case usb_service::USB_TRANSFER_ERROR:
285 return kErrorGeneric; 297 return kErrorGeneric;
286 case USB_TRANSFER_TIMEOUT: 298 case usb_service::USB_TRANSFER_TIMEOUT:
287 return kErrorTimeout; 299 return kErrorTimeout;
288 case USB_TRANSFER_CANCELLED: 300 case usb_service::USB_TRANSFER_CANCELLED:
289 return kErrorCancelled; 301 return kErrorCancelled;
290 case USB_TRANSFER_STALLED: 302 case usb_service::USB_TRANSFER_STALLED:
291 return kErrorStalled; 303 return kErrorStalled;
292 case USB_TRANSFER_DISCONNECT: 304 case usb_service::USB_TRANSFER_DISCONNECT:
293 return kErrorDisconnect; 305 return kErrorDisconnect;
294 case USB_TRANSFER_OVERFLOW: 306 case usb_service::USB_TRANSFER_OVERFLOW:
295 return kErrorOverflow; 307 return kErrorOverflow;
296 case USB_TRANSFER_LENGTH_SHORT: 308 case usb_service::USB_TRANSFER_LENGTH_SHORT:
297 return kErrorTransferLength; 309 return kErrorTransferLength;
298 default: 310 default:
299 NOTREACHED(); 311 NOTREACHED();
300 return ""; 312 return "";
301 } 313 }
302 } 314 }
303 315
304 #if defined(OS_CHROMEOS) 316 #if defined(OS_CHROMEOS)
305 void RequestUsbDevicesAccessHelper( 317 void RequestUsbDevicesAccessHelper(
306 ScopedDeviceVector devices, 318 ScopedDeviceVector devices,
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 AsyncWorkCompleted(); 494 AsyncWorkCompleted();
483 } 495 }
484 496
485 UsbAsyncApiTransferFunction::UsbAsyncApiTransferFunction() {} 497 UsbAsyncApiTransferFunction::UsbAsyncApiTransferFunction() {}
486 498
487 UsbAsyncApiTransferFunction::~UsbAsyncApiTransferFunction() {} 499 UsbAsyncApiTransferFunction::~UsbAsyncApiTransferFunction() {}
488 500
489 void UsbAsyncApiTransferFunction::OnCompleted(UsbTransferStatus status, 501 void UsbAsyncApiTransferFunction::OnCompleted(UsbTransferStatus status,
490 scoped_refptr<net::IOBuffer> data, 502 scoped_refptr<net::IOBuffer> data,
491 size_t length) { 503 size_t length) {
492 if (status != USB_TRANSFER_COMPLETED) 504 if (status != usb_service::USB_TRANSFER_COMPLETED)
493 SetError(ConvertTransferStatusToErrorString(status)); 505 SetError(ConvertTransferStatusToErrorString(status));
494 506
495 SetResult(CreateTransferInfo(status, data, length)); 507 SetResult(CreateTransferInfo(status, data, length));
496 AsyncWorkCompleted(); 508 AsyncWorkCompleted();
497 } 509 }
498 510
499 bool UsbAsyncApiTransferFunction::ConvertDirectionSafely( 511 bool UsbAsyncApiTransferFunction::ConvertDirectionSafely(
500 const Direction& input, UsbEndpointDirection* output) { 512 const Direction& input, UsbEndpointDirection* output) {
501 const bool converted = ConvertDirection(input, output); 513 const bool converted = ConvertDirection(input, output);
502 if (!converted) 514 if (!converted)
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 SetResult(new base::FundamentalValue(false)); 1182 SetResult(new base::FundamentalValue(false));
1171 CompleteWithError(kErrorResetDevice); 1183 CompleteWithError(kErrorResetDevice);
1172 return; 1184 return;
1173 } 1185 }
1174 1186
1175 SetResult(new base::FundamentalValue(true)); 1187 SetResult(new base::FundamentalValue(true));
1176 AsyncWorkCompleted(); 1188 AsyncWorkCompleted();
1177 } 1189 }
1178 1190
1179 } // namespace extensions 1191 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/usb/usb_api.h ('k') | chrome/browser/extensions/api/usb/usb_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698