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

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

Issue 2688303002: Add a feature flag for the new Windows USB backend. (Closed)
Patch Set: Update histograms. Created 3 years, 10 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_service.h ('k') | device/usb/usb_service_android.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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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_service.h" 5 #include "device/usb/usb_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/feature_list.h"
8 #include "base/location.h" 9 #include "base/location.h"
9 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
10 #include "base/threading/thread_task_runner_handle.h" 11 #include "base/threading/thread_task_runner_handle.h"
11 #include "build/build_config.h" 12 #include "build/build_config.h"
12 #include "components/device_event_log/device_event_log.h" 13 #include "components/device_event_log/device_event_log.h"
14 #include "device/base/features.h"
13 #include "device/usb/usb_device.h" 15 #include "device/usb/usb_device.h"
14 16
15 #if defined(OS_ANDROID) 17 #if defined(OS_ANDROID)
16 #include "device/usb/usb_service_android.h" 18 #include "device/usb/usb_service_android.h"
17 #elif defined(USE_UDEV) 19 #elif defined(USE_UDEV)
18 #include "device/usb/usb_service_linux.h" 20 #include "device/usb/usb_service_linux.h"
19 #else 21 #else
22 #if defined(OS_WIN)
23 #include "device/usb/usb_service_win.h"
24 #endif
20 #include "device/usb/usb_service_impl.h" 25 #include "device/usb/usb_service_impl.h"
21 #endif 26 #endif
22 27
23 namespace device { 28 namespace device {
24 29
25 UsbService::Observer::~Observer() {} 30 UsbService::Observer::~Observer() {}
26 31
27 void UsbService::Observer::OnDeviceAdded(scoped_refptr<UsbDevice> device) { 32 void UsbService::Observer::OnDeviceAdded(scoped_refptr<UsbDevice> device) {
28 } 33 }
29 34
30 void UsbService::Observer::OnDeviceRemoved(scoped_refptr<UsbDevice> device) { 35 void UsbService::Observer::OnDeviceRemoved(scoped_refptr<UsbDevice> device) {
31 } 36 }
32 37
33 void UsbService::Observer::OnDeviceRemovedCleanup( 38 void UsbService::Observer::OnDeviceRemovedCleanup(
34 scoped_refptr<UsbDevice> device) { 39 scoped_refptr<UsbDevice> device) {
35 } 40 }
36 41
37 void UsbService::Observer::WillDestroyUsbService() {} 42 void UsbService::Observer::WillDestroyUsbService() {}
38 43
39 // static 44 // static
40 std::unique_ptr<UsbService> UsbService::Create( 45 std::unique_ptr<UsbService> UsbService::Create(
41 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) { 46 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) {
42 #if defined(OS_ANDROID) 47 #if defined(OS_ANDROID)
43 return base::WrapUnique(new UsbServiceAndroid(blocking_task_runner)); 48 return base::WrapUnique(new UsbServiceAndroid(blocking_task_runner));
44 #elif defined(USE_UDEV) 49 #elif defined(USE_UDEV)
45 return base::WrapUnique(new UsbServiceLinux(blocking_task_runner)); 50 return base::WrapUnique(new UsbServiceLinux(blocking_task_runner));
46 #elif defined(OS_WIN) || defined(OS_MACOSX) 51 #elif defined(OS_WIN)
52 if (base::FeatureList::IsEnabled(kNewUsbBackend))
53 return base::WrapUnique(new UsbServiceWin(blocking_task_runner));
54 else
55 return base::WrapUnique(new UsbServiceImpl(blocking_task_runner));
56 #elif defined(OS_MACOSX)
47 return base::WrapUnique(new UsbServiceImpl(blocking_task_runner)); 57 return base::WrapUnique(new UsbServiceImpl(blocking_task_runner));
48 #else 58 #else
49 return nullptr; 59 return nullptr;
50 #endif 60 #endif
51 } 61 }
52 62
53 UsbService::~UsbService() { 63 UsbService::~UsbService() {
54 #if DCHECK_IS_ON() 64 #if DCHECK_IS_ON()
55 DCHECK(did_shutdown_); 65 DCHECK(did_shutdown_);
56 #endif 66 #endif
57 for (const auto& map_entry : devices_) 67 for (const auto& map_entry : devices_)
58 map_entry.second->OnDisconnect(); 68 map_entry.second->OnDisconnect();
59 for (auto& observer : observer_list_) 69 for (auto& observer : observer_list_)
60 observer.WillDestroyUsbService(); 70 observer.WillDestroyUsbService();
61 } 71 }
62 72
63 UsbService::UsbService( 73 UsbService::UsbService(
64 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
65 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) 74 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
66 : task_runner_(task_runner), blocking_task_runner_(blocking_task_runner) {} 75 : blocking_task_runner_(std::move(blocking_task_runner)) {
76 if (base::ThreadTaskRunnerHandle::IsSet())
77 task_runner_ = base::ThreadTaskRunnerHandle::Get();
78 }
67 79
68 scoped_refptr<UsbDevice> UsbService::GetDevice(const std::string& guid) { 80 scoped_refptr<UsbDevice> UsbService::GetDevice(const std::string& guid) {
69 DCHECK(CalledOnValidThread()); 81 DCHECK(CalledOnValidThread());
70 auto it = devices_.find(guid); 82 auto it = devices_.find(guid);
71 if (it == devices_.end()) 83 if (it == devices_.end())
72 return nullptr; 84 return nullptr;
73 return it->second; 85 return it->second;
74 } 86 }
75 87
76 void UsbService::Shutdown() { 88 void UsbService::Shutdown() {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 DCHECK(CalledOnValidThread()); 158 DCHECK(CalledOnValidThread());
147 159
148 for (auto& observer : observer_list_) 160 for (auto& observer : observer_list_)
149 observer.OnDeviceRemoved(device); 161 observer.OnDeviceRemoved(device);
150 device->NotifyDeviceRemoved(); 162 device->NotifyDeviceRemoved();
151 for (auto& observer : observer_list_) 163 for (auto& observer : observer_list_)
152 observer.OnDeviceRemovedCleanup(device); 164 observer.OnDeviceRemovedCleanup(device);
153 } 165 }
154 166
155 } // namespace device 167 } // namespace device
OLDNEW
« no previous file with comments | « device/usb/usb_service.h ('k') | device/usb/usb_service_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698