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

Side by Side Diff: device/usb/usb_device_handle_impl.cc

Issue 1544323002: Convert Pass()→std::move() in //device (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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 | « device/usb/usb_device_filter.cc ('k') | device/usb/usb_device_impl.h » ('j') | 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 "device/usb/usb_device_handle_impl.h" 5 #include "device/usb/usb_device_handle_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility>
8 #include <vector> 9 #include <vector>
9 10
10 #include "base/bind.h" 11 #include "base/bind.h"
11 #include "base/location.h" 12 #include "base/location.h"
12 #include "base/macros.h" 13 #include "base/macros.h"
13 #include "base/single_thread_task_runner.h" 14 #include "base/single_thread_task_runner.h"
14 #include "base/stl_util.h" 15 #include "base/stl_util.h"
15 #include "base/strings/string16.h" 16 #include "base/strings/string16.h"
16 #include "base/synchronization/lock.h" 17 #include "base/synchronization/lock.h"
17 #include "base/thread_task_runner_handle.h" 18 #include "base/thread_task_runner_handle.h"
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 } 258 }
258 259
259 libusb_fill_control_setup(reinterpret_cast<uint8_t*>(buffer->data()), type, 260 libusb_fill_control_setup(reinterpret_cast<uint8_t*>(buffer->data()), type,
260 request, value, index, length); 261 request, value, index, length);
261 libusb_fill_control_transfer(transfer->platform_transfer_, 262 libusb_fill_control_transfer(transfer->platform_transfer_,
262 device_handle->handle_, 263 device_handle->handle_,
263 reinterpret_cast<uint8_t*>(buffer->data()), 264 reinterpret_cast<uint8_t*>(buffer->data()),
264 &UsbDeviceHandleImpl::Transfer::PlatformCallback, 265 &UsbDeviceHandleImpl::Transfer::PlatformCallback,
265 transfer.get(), timeout); 266 transfer.get(), timeout);
266 267
267 return transfer.Pass(); 268 return transfer;
268 } 269 }
269 270
270 // static 271 // static
271 scoped_ptr<UsbDeviceHandleImpl::Transfer> 272 scoped_ptr<UsbDeviceHandleImpl::Transfer>
272 UsbDeviceHandleImpl::Transfer::CreateBulkTransfer( 273 UsbDeviceHandleImpl::Transfer::CreateBulkTransfer(
273 scoped_refptr<UsbDeviceHandleImpl> device_handle, 274 scoped_refptr<UsbDeviceHandleImpl> device_handle,
274 uint8_t endpoint, 275 uint8_t endpoint,
275 scoped_refptr<net::IOBuffer> buffer, 276 scoped_refptr<net::IOBuffer> buffer,
276 int length, 277 int length,
277 unsigned int timeout, 278 unsigned int timeout,
278 scoped_refptr<base::TaskRunner> callback_task_runner, 279 scoped_refptr<base::TaskRunner> callback_task_runner,
279 const TransferCallback& callback) { 280 const TransferCallback& callback) {
280 scoped_ptr<Transfer> transfer(new Transfer( 281 scoped_ptr<Transfer> transfer(new Transfer(
281 device_handle, device_handle->GetClaimedInterfaceForEndpoint(endpoint), 282 device_handle, device_handle->GetClaimedInterfaceForEndpoint(endpoint),
282 USB_TRANSFER_BULK, buffer, length, callback_task_runner, callback)); 283 USB_TRANSFER_BULK, buffer, length, callback_task_runner, callback));
283 284
284 transfer->platform_transfer_ = libusb_alloc_transfer(0); 285 transfer->platform_transfer_ = libusb_alloc_transfer(0);
285 if (!transfer->platform_transfer_) { 286 if (!transfer->platform_transfer_) {
286 USB_LOG(ERROR) << "Failed to allocate bulk transfer."; 287 USB_LOG(ERROR) << "Failed to allocate bulk transfer.";
287 return nullptr; 288 return nullptr;
288 } 289 }
289 290
290 libusb_fill_bulk_transfer( 291 libusb_fill_bulk_transfer(
291 transfer->platform_transfer_, device_handle->handle_, endpoint, 292 transfer->platform_transfer_, device_handle->handle_, endpoint,
292 reinterpret_cast<uint8_t*>(buffer->data()), static_cast<int>(length), 293 reinterpret_cast<uint8_t*>(buffer->data()), static_cast<int>(length),
293 &UsbDeviceHandleImpl::Transfer::PlatformCallback, transfer.get(), 294 &UsbDeviceHandleImpl::Transfer::PlatformCallback, transfer.get(),
294 timeout); 295 timeout);
295 296
296 return transfer.Pass(); 297 return transfer;
297 } 298 }
298 299
299 // static 300 // static
300 scoped_ptr<UsbDeviceHandleImpl::Transfer> 301 scoped_ptr<UsbDeviceHandleImpl::Transfer>
301 UsbDeviceHandleImpl::Transfer::CreateInterruptTransfer( 302 UsbDeviceHandleImpl::Transfer::CreateInterruptTransfer(
302 scoped_refptr<UsbDeviceHandleImpl> device_handle, 303 scoped_refptr<UsbDeviceHandleImpl> device_handle,
303 uint8_t endpoint, 304 uint8_t endpoint,
304 scoped_refptr<net::IOBuffer> buffer, 305 scoped_refptr<net::IOBuffer> buffer,
305 int length, 306 int length,
306 unsigned int timeout, 307 unsigned int timeout,
307 scoped_refptr<base::TaskRunner> callback_task_runner, 308 scoped_refptr<base::TaskRunner> callback_task_runner,
308 const TransferCallback& callback) { 309 const TransferCallback& callback) {
309 scoped_ptr<Transfer> transfer(new Transfer( 310 scoped_ptr<Transfer> transfer(new Transfer(
310 device_handle, device_handle->GetClaimedInterfaceForEndpoint(endpoint), 311 device_handle, device_handle->GetClaimedInterfaceForEndpoint(endpoint),
311 USB_TRANSFER_INTERRUPT, buffer, length, callback_task_runner, callback)); 312 USB_TRANSFER_INTERRUPT, buffer, length, callback_task_runner, callback));
312 313
313 transfer->platform_transfer_ = libusb_alloc_transfer(0); 314 transfer->platform_transfer_ = libusb_alloc_transfer(0);
314 if (!transfer->platform_transfer_) { 315 if (!transfer->platform_transfer_) {
315 USB_LOG(ERROR) << "Failed to allocate interrupt transfer."; 316 USB_LOG(ERROR) << "Failed to allocate interrupt transfer.";
316 return nullptr; 317 return nullptr;
317 } 318 }
318 319
319 libusb_fill_interrupt_transfer( 320 libusb_fill_interrupt_transfer(
320 transfer->platform_transfer_, device_handle->handle_, endpoint, 321 transfer->platform_transfer_, device_handle->handle_, endpoint,
321 reinterpret_cast<uint8_t*>(buffer->data()), static_cast<int>(length), 322 reinterpret_cast<uint8_t*>(buffer->data()), static_cast<int>(length),
322 &UsbDeviceHandleImpl::Transfer::PlatformCallback, transfer.get(), 323 &UsbDeviceHandleImpl::Transfer::PlatformCallback, transfer.get(),
323 timeout); 324 timeout);
324 325
325 return transfer.Pass(); 326 return transfer;
326 } 327 }
327 328
328 // static 329 // static
329 scoped_ptr<UsbDeviceHandleImpl::Transfer> 330 scoped_ptr<UsbDeviceHandleImpl::Transfer>
330 UsbDeviceHandleImpl::Transfer::CreateIsochronousTransfer( 331 UsbDeviceHandleImpl::Transfer::CreateIsochronousTransfer(
331 scoped_refptr<UsbDeviceHandleImpl> device_handle, 332 scoped_refptr<UsbDeviceHandleImpl> device_handle,
332 uint8_t endpoint, 333 uint8_t endpoint,
333 scoped_refptr<net::IOBuffer> buffer, 334 scoped_refptr<net::IOBuffer> buffer,
334 size_t length, 335 size_t length,
335 unsigned int packets, 336 unsigned int packets,
(...skipping 14 matching lines...) Expand all
350 USB_LOG(ERROR) << "Failed to allocate isochronous transfer."; 351 USB_LOG(ERROR) << "Failed to allocate isochronous transfer.";
351 return nullptr; 352 return nullptr;
352 } 353 }
353 354
354 libusb_fill_iso_transfer( 355 libusb_fill_iso_transfer(
355 transfer->platform_transfer_, device_handle->handle_, endpoint, 356 transfer->platform_transfer_, device_handle->handle_, endpoint,
356 reinterpret_cast<uint8_t*>(buffer->data()), static_cast<int>(length), 357 reinterpret_cast<uint8_t*>(buffer->data()), static_cast<int>(length),
357 packets, &Transfer::PlatformCallback, transfer.get(), timeout); 358 packets, &Transfer::PlatformCallback, transfer.get(), timeout);
358 libusb_set_iso_packet_lengths(transfer->platform_transfer_, packet_length); 359 libusb_set_iso_packet_lengths(transfer->platform_transfer_, packet_length);
359 360
360 return transfer.Pass(); 361 return transfer;
361 } 362 }
362 363
363 UsbDeviceHandleImpl::Transfer::Transfer( 364 UsbDeviceHandleImpl::Transfer::Transfer(
364 scoped_refptr<UsbDeviceHandleImpl> device_handle, 365 scoped_refptr<UsbDeviceHandleImpl> device_handle,
365 scoped_refptr<InterfaceClaimer> claimed_interface, 366 scoped_refptr<InterfaceClaimer> claimed_interface,
366 UsbTransferType transfer_type, 367 UsbTransferType transfer_type,
367 scoped_refptr<net::IOBuffer> buffer, 368 scoped_refptr<net::IOBuffer> buffer,
368 size_t length, 369 size_t length,
369 scoped_refptr<base::TaskRunner> callback_task_runner, 370 scoped_refptr<base::TaskRunner> callback_task_runner,
370 const TransferCallback& callback) 371 const TransferCallback& callback)
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 scoped_ptr<Transfer> transfer = Transfer::CreateControlTransfer( 875 scoped_ptr<Transfer> transfer = Transfer::CreateControlTransfer(
875 this, CreateRequestType(direction, request_type, recipient), request, 876 this, CreateRequestType(direction, request_type, recipient), request,
876 value, index, static_cast<uint16_t>(length), resized_buffer, timeout, 877 value, index, static_cast<uint16_t>(length), resized_buffer, timeout,
877 callback_task_runner, callback); 878 callback_task_runner, callback);
878 if (!transfer) { 879 if (!transfer) {
879 RunTransferCallback(callback_task_runner, callback, USB_TRANSFER_ERROR, 880 RunTransferCallback(callback_task_runner, callback, USB_TRANSFER_ERROR,
880 buffer, 0); 881 buffer, 0);
881 return; 882 return;
882 } 883 }
883 884
884 SubmitTransfer(transfer.Pass()); 885 SubmitTransfer(std::move(transfer));
885 } 886 }
886 887
887 void UsbDeviceHandleImpl::IsochronousTransferInternal( 888 void UsbDeviceHandleImpl::IsochronousTransferInternal(
888 uint8_t endpoint_address, 889 uint8_t endpoint_address,
889 scoped_refptr<net::IOBuffer> buffer, 890 scoped_refptr<net::IOBuffer> buffer,
890 size_t length, 891 size_t length,
891 unsigned int packets, 892 unsigned int packets,
892 unsigned int packet_length, 893 unsigned int packet_length,
893 unsigned int timeout, 894 unsigned int timeout,
894 scoped_refptr<base::TaskRunner> callback_task_runner, 895 scoped_refptr<base::TaskRunner> callback_task_runner,
(...skipping 10 matching lines...) Expand all
905 USB_LOG(USER) << "Transfer too long."; 906 USB_LOG(USER) << "Transfer too long.";
906 RunTransferCallback(callback_task_runner, callback, USB_TRANSFER_ERROR, 907 RunTransferCallback(callback_task_runner, callback, USB_TRANSFER_ERROR,
907 buffer, 0); 908 buffer, 0);
908 return; 909 return;
909 } 910 }
910 911
911 scoped_ptr<Transfer> transfer = Transfer::CreateIsochronousTransfer( 912 scoped_ptr<Transfer> transfer = Transfer::CreateIsochronousTransfer(
912 this, endpoint_address, buffer, static_cast<int>(length), packets, 913 this, endpoint_address, buffer, static_cast<int>(length), packets,
913 packet_length, timeout, callback_task_runner, callback); 914 packet_length, timeout, callback_task_runner, callback);
914 915
915 SubmitTransfer(transfer.Pass()); 916 SubmitTransfer(std::move(transfer));
916 } 917 }
917 918
918 void UsbDeviceHandleImpl::GenericTransferInternal( 919 void UsbDeviceHandleImpl::GenericTransferInternal(
919 uint8_t endpoint_address, 920 uint8_t endpoint_address,
920 scoped_refptr<net::IOBuffer> buffer, 921 scoped_refptr<net::IOBuffer> buffer,
921 size_t length, 922 size_t length,
922 unsigned int timeout, 923 unsigned int timeout,
923 scoped_refptr<base::TaskRunner> callback_task_runner, 924 scoped_refptr<base::TaskRunner> callback_task_runner,
924 const TransferCallback& callback) { 925 const TransferCallback& callback) {
925 DCHECK(thread_checker_.CalledOnValidThread()); 926 DCHECK(thread_checker_.CalledOnValidThread());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
958 this, endpoint_address, buffer, static_cast<int>(length), timeout, 959 this, endpoint_address, buffer, static_cast<int>(length), timeout,
959 callback_task_runner, callback); 960 callback_task_runner, callback);
960 } else { 961 } else {
961 USB_LOG(DEBUG) << "Endpoint " << static_cast<int>(endpoint_address) 962 USB_LOG(DEBUG) << "Endpoint " << static_cast<int>(endpoint_address)
962 << " is not a bulk or interrupt endpoint."; 963 << " is not a bulk or interrupt endpoint.";
963 RunTransferCallback(callback_task_runner, callback, USB_TRANSFER_ERROR, 964 RunTransferCallback(callback_task_runner, callback, USB_TRANSFER_ERROR,
964 buffer, 0); 965 buffer, 0);
965 return; 966 return;
966 } 967 }
967 968
968 SubmitTransfer(transfer.Pass()); 969 SubmitTransfer(std::move(transfer));
969 } 970 }
970 971
971 void UsbDeviceHandleImpl::SubmitTransfer(scoped_ptr<Transfer> transfer) { 972 void UsbDeviceHandleImpl::SubmitTransfer(scoped_ptr<Transfer> transfer) {
972 DCHECK(thread_checker_.CalledOnValidThread()); 973 DCHECK(thread_checker_.CalledOnValidThread());
973 974
974 // Transfer is owned by libusb until its completion callback is run. This 975 // Transfer is owned by libusb until its completion callback is run. This
975 // object holds a weak reference. 976 // object holds a weak reference.
976 transfers_.insert(transfer.get()); 977 transfers_.insert(transfer.get());
977 blocking_task_runner_->PostTask( 978 blocking_task_runner_->PostTask(
978 FROM_HERE, 979 FROM_HERE,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 // Attempt-release all the interfaces. 1011 // Attempt-release all the interfaces.
1011 // It will be retained until the transfer cancellation is finished. 1012 // It will be retained until the transfer cancellation is finished.
1012 claimed_interfaces_.clear(); 1013 claimed_interfaces_.clear();
1013 1014
1014 // Cannot close device handle here. Need to wait for libusb_cancel_transfer to 1015 // Cannot close device handle here. Need to wait for libusb_cancel_transfer to
1015 // finish. 1016 // finish.
1016 device_ = NULL; 1017 device_ = NULL;
1017 } 1018 }
1018 1019
1019 } // namespace device 1020 } // namespace device
OLDNEW
« no previous file with comments | « device/usb/usb_device_filter.cc ('k') | device/usb/usb_device_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698