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

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

Issue 2230083003: device: Use stl utilities from the base namespace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 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 | « device/usb/mojo/device_impl_unittest.cc ('k') | device/usb/usb_device_handle_usbfs.cc » ('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 <memory> 8 #include <memory>
9 #include <numeric> 9 #include <numeric>
10 #include <utility> 10 #include <utility>
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 configuration_value, callback)); 605 configuration_value, callback));
606 } 606 }
607 607
608 void UsbDeviceHandleImpl::ClaimInterface(int interface_number, 608 void UsbDeviceHandleImpl::ClaimInterface(int interface_number,
609 const ResultCallback& callback) { 609 const ResultCallback& callback) {
610 DCHECK(thread_checker_.CalledOnValidThread()); 610 DCHECK(thread_checker_.CalledOnValidThread());
611 if (!device_) { 611 if (!device_) {
612 callback.Run(false); 612 callback.Run(false);
613 return; 613 return;
614 } 614 }
615 if (ContainsKey(claimed_interfaces_, interface_number)) { 615 if (base::ContainsKey(claimed_interfaces_, interface_number)) {
616 callback.Run(true); 616 callback.Run(true);
617 return; 617 return;
618 } 618 }
619 619
620 blocking_task_runner_->PostTask( 620 blocking_task_runner_->PostTask(
621 FROM_HERE, 621 FROM_HERE,
622 base::Bind(&UsbDeviceHandleImpl::ClaimInterfaceOnBlockingThread, this, 622 base::Bind(&UsbDeviceHandleImpl::ClaimInterfaceOnBlockingThread, this,
623 interface_number, callback)); 623 interface_number, callback));
624 } 624 }
625 625
626 void UsbDeviceHandleImpl::ReleaseInterface(int interface_number, 626 void UsbDeviceHandleImpl::ReleaseInterface(int interface_number,
627 const ResultCallback& callback) { 627 const ResultCallback& callback) {
628 DCHECK(thread_checker_.CalledOnValidThread()); 628 DCHECK(thread_checker_.CalledOnValidThread());
629 if (!device_ || !ContainsKey(claimed_interfaces_, interface_number)) { 629 if (!device_ || !base::ContainsKey(claimed_interfaces_, interface_number)) {
630 task_runner_->PostTask(FROM_HERE, base::Bind(callback, false)); 630 task_runner_->PostTask(FROM_HERE, base::Bind(callback, false));
631 return; 631 return;
632 } 632 }
633 633
634 // Cancel all the transfers on that interface. 634 // Cancel all the transfers on that interface.
635 InterfaceClaimer* interface_claimer = 635 InterfaceClaimer* interface_claimer =
636 claimed_interfaces_[interface_number].get(); 636 claimed_interfaces_[interface_number].get();
637 for (Transfer* transfer : transfers_) { 637 for (Transfer* transfer : transfers_) {
638 if (transfer->claimed_interface() == interface_claimer) { 638 if (transfer->claimed_interface() == interface_claimer) {
639 transfer->Cancel(); 639 transfer->Cancel();
640 } 640 }
641 } 641 }
642 interface_claimer->AddRef(); 642 interface_claimer->AddRef();
643 interface_claimer->set_release_callback(callback); 643 interface_claimer->set_release_callback(callback);
644 blocking_task_runner_->ReleaseSoon(FROM_HERE, interface_claimer); 644 blocking_task_runner_->ReleaseSoon(FROM_HERE, interface_claimer);
645 claimed_interfaces_.erase(interface_number); 645 claimed_interfaces_.erase(interface_number);
646 646
647 RefreshEndpointMap(); 647 RefreshEndpointMap();
648 } 648 }
649 649
650 void UsbDeviceHandleImpl::SetInterfaceAlternateSetting( 650 void UsbDeviceHandleImpl::SetInterfaceAlternateSetting(
651 int interface_number, 651 int interface_number,
652 int alternate_setting, 652 int alternate_setting,
653 const ResultCallback& callback) { 653 const ResultCallback& callback) {
654 DCHECK(thread_checker_.CalledOnValidThread()); 654 DCHECK(thread_checker_.CalledOnValidThread());
655 if (!device_ || !ContainsKey(claimed_interfaces_, interface_number)) { 655 if (!device_ || !base::ContainsKey(claimed_interfaces_, interface_number)) {
656 callback.Run(false); 656 callback.Run(false);
657 return; 657 return;
658 } 658 }
659 659
660 blocking_task_runner_->PostTask( 660 blocking_task_runner_->PostTask(
661 FROM_HERE, 661 FROM_HERE,
662 base::Bind( 662 base::Bind(
663 &UsbDeviceHandleImpl::SetInterfaceAlternateSettingOnBlockingThread, 663 &UsbDeviceHandleImpl::SetInterfaceAlternateSettingOnBlockingThread,
664 this, interface_number, alternate_setting, callback)); 664 this, interface_number, alternate_setting, callback));
665 } 665 }
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 // object holds a weak reference. 1106 // object holds a weak reference.
1107 transfers_.insert(transfer.get()); 1107 transfers_.insert(transfer.get());
1108 blocking_task_runner_->PostTask( 1108 blocking_task_runner_->PostTask(
1109 FROM_HERE, 1109 FROM_HERE,
1110 base::Bind(&Transfer::Submit, base::Unretained(transfer.release()))); 1110 base::Bind(&Transfer::Submit, base::Unretained(transfer.release())));
1111 } 1111 }
1112 1112
1113 void UsbDeviceHandleImpl::TransferComplete(Transfer* transfer, 1113 void UsbDeviceHandleImpl::TransferComplete(Transfer* transfer,
1114 const base::Closure& callback) { 1114 const base::Closure& callback) {
1115 DCHECK(thread_checker_.CalledOnValidThread()); 1115 DCHECK(thread_checker_.CalledOnValidThread());
1116 DCHECK(ContainsKey(transfers_, transfer)) << "Missing transfer completed"; 1116 DCHECK(base::ContainsKey(transfers_, transfer))
1117 << "Missing transfer completed";
1117 transfers_.erase(transfer); 1118 transfers_.erase(transfer);
1118 1119
1119 if (transfer->callback_task_runner()->RunsTasksOnCurrentThread()) { 1120 if (transfer->callback_task_runner()->RunsTasksOnCurrentThread()) {
1120 callback.Run(); 1121 callback.Run();
1121 } else { 1122 } else {
1122 transfer->callback_task_runner()->PostTask(FROM_HERE, callback); 1123 transfer->callback_task_runner()->PostTask(FROM_HERE, callback);
1123 } 1124 }
1124 1125
1125 // libusb_free_transfer races with libusb_submit_transfer and only work- 1126 // libusb_free_transfer races with libusb_submit_transfer and only work-
1126 // around is to make sure to call them on the same thread. 1127 // around is to make sure to call them on the same thread.
1127 blocking_task_runner_->DeleteSoon(FROM_HERE, transfer); 1128 blocking_task_runner_->DeleteSoon(FROM_HERE, transfer);
1128 } 1129 }
1129 1130
1130 } // namespace device 1131 } // namespace device
OLDNEW
« no previous file with comments | « device/usb/mojo/device_impl_unittest.cc ('k') | device/usb/usb_device_handle_usbfs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698