| OLD | NEW |
| 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/location.h" | 8 #include "base/location.h" |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 #elif defined(USE_UDEV) | 44 #elif defined(USE_UDEV) |
| 45 return base::WrapUnique(new UsbServiceLinux(blocking_task_runner)); | 45 return base::WrapUnique(new UsbServiceLinux(blocking_task_runner)); |
| 46 #elif defined(OS_WIN) || defined(OS_MACOSX) | 46 #elif defined(OS_WIN) || defined(OS_MACOSX) |
| 47 return base::WrapUnique(new UsbServiceImpl(blocking_task_runner)); | 47 return base::WrapUnique(new UsbServiceImpl(blocking_task_runner)); |
| 48 #else | 48 #else |
| 49 return nullptr; | 49 return nullptr; |
| 50 #endif | 50 #endif |
| 51 } | 51 } |
| 52 | 52 |
| 53 UsbService::~UsbService() { | 53 UsbService::~UsbService() { |
| 54 #if DCHECK_IS_ON() |
| 55 DCHECK(did_shutdown_); |
| 56 #endif |
| 54 for (const auto& map_entry : devices_) | 57 for (const auto& map_entry : devices_) |
| 55 map_entry.second->OnDisconnect(); | 58 map_entry.second->OnDisconnect(); |
| 56 for (auto& observer : observer_list_) | 59 for (auto& observer : observer_list_) |
| 57 observer.WillDestroyUsbService(); | 60 observer.WillDestroyUsbService(); |
| 58 } | 61 } |
| 59 | 62 |
| 60 UsbService::UsbService( | 63 UsbService::UsbService( |
| 61 scoped_refptr<base::SingleThreadTaskRunner> task_runner, | 64 scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
| 62 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) | 65 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) |
| 63 : task_runner_(task_runner), blocking_task_runner_(blocking_task_runner) {} | 66 : task_runner_(task_runner), blocking_task_runner_(blocking_task_runner) {} |
| 64 | 67 |
| 65 scoped_refptr<UsbDevice> UsbService::GetDevice(const std::string& guid) { | 68 scoped_refptr<UsbDevice> UsbService::GetDevice(const std::string& guid) { |
| 66 DCHECK(CalledOnValidThread()); | 69 DCHECK(CalledOnValidThread()); |
| 67 auto it = devices_.find(guid); | 70 auto it = devices_.find(guid); |
| 68 if (it == devices_.end()) | 71 if (it == devices_.end()) |
| 69 return nullptr; | 72 return nullptr; |
| 70 return it->second; | 73 return it->second; |
| 71 } | 74 } |
| 72 | 75 |
| 76 void UsbService::Shutdown() { |
| 77 #if DCHECK_IS_ON() |
| 78 DCHECK(!did_shutdown_); |
| 79 did_shutdown_ = true; |
| 80 #endif |
| 81 } |
| 82 |
| 73 void UsbService::GetDevices(const GetDevicesCallback& callback) { | 83 void UsbService::GetDevices(const GetDevicesCallback& callback) { |
| 74 std::vector<scoped_refptr<UsbDevice>> devices; | 84 std::vector<scoped_refptr<UsbDevice>> devices; |
| 75 devices.reserve(devices_.size()); | 85 devices.reserve(devices_.size()); |
| 76 for (const auto& map_entry : devices_) | 86 for (const auto& map_entry : devices_) |
| 77 devices.push_back(map_entry.second); | 87 devices.push_back(map_entry.second); |
| 78 if (task_runner_) | 88 if (task_runner_) |
| 79 task_runner_->PostTask(FROM_HERE, base::Bind(callback, devices)); | 89 task_runner_->PostTask(FROM_HERE, base::Bind(callback, devices)); |
| 80 else | 90 else |
| 81 callback.Run(devices); | 91 callback.Run(devices); |
| 82 } | 92 } |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 DCHECK(CalledOnValidThread()); | 146 DCHECK(CalledOnValidThread()); |
| 137 | 147 |
| 138 for (auto& observer : observer_list_) | 148 for (auto& observer : observer_list_) |
| 139 observer.OnDeviceRemoved(device); | 149 observer.OnDeviceRemoved(device); |
| 140 device->NotifyDeviceRemoved(); | 150 device->NotifyDeviceRemoved(); |
| 141 for (auto& observer : observer_list_) | 151 for (auto& observer : observer_list_) |
| 142 observer.OnDeviceRemovedCleanup(device); | 152 observer.OnDeviceRemovedCleanup(device); |
| 143 } | 153 } |
| 144 | 154 |
| 145 } // namespace device | 155 } // namespace device |
| OLD | NEW |