| OLD | NEW |
| 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/hid/hid_service.h" | 5 #include "device/hid/hid_service.h" |
| 6 | 6 |
| 7 #include "base/at_exit.h" | 7 #include "base/at_exit.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 return base::WrapUnique(new HidServiceLinux(file_task_runner)); | 42 return base::WrapUnique(new HidServiceLinux(file_task_runner)); |
| 43 #elif defined(OS_MACOSX) | 43 #elif defined(OS_MACOSX) |
| 44 return base::WrapUnique(new HidServiceMac(file_task_runner)); | 44 return base::WrapUnique(new HidServiceMac(file_task_runner)); |
| 45 #elif defined(OS_WIN) | 45 #elif defined(OS_WIN) |
| 46 return base::WrapUnique(new HidServiceWin(file_task_runner)); | 46 return base::WrapUnique(new HidServiceWin(file_task_runner)); |
| 47 #else | 47 #else |
| 48 return nullptr; | 48 return nullptr; |
| 49 #endif | 49 #endif |
| 50 } | 50 } |
| 51 | 51 |
| 52 void HidService::Shutdown() { |
| 53 #if DCHECK_IS_ON() |
| 54 DCHECK(!did_shutdown_); |
| 55 did_shutdown_ = true; |
| 56 #endif |
| 57 } |
| 58 |
| 52 void HidService::GetDevices(const GetDevicesCallback& callback) { | 59 void HidService::GetDevices(const GetDevicesCallback& callback) { |
| 53 DCHECK(thread_checker_.CalledOnValidThread()); | 60 DCHECK(thread_checker_.CalledOnValidThread()); |
| 54 if (enumeration_ready_) { | 61 if (enumeration_ready_) { |
| 55 std::vector<scoped_refptr<HidDeviceInfo>> devices; | 62 std::vector<scoped_refptr<HidDeviceInfo>> devices; |
| 56 for (const auto& map_entry : devices_) { | 63 for (const auto& map_entry : devices_) { |
| 57 devices.push_back(map_entry.second); | 64 devices.push_back(map_entry.second); |
| 58 } | 65 } |
| 59 base::ThreadTaskRunnerHandle::Get()->PostTask( | 66 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 60 FROM_HERE, base::Bind(callback, devices)); | 67 FROM_HERE, base::Bind(callback, devices)); |
| 61 } else { | 68 } else { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 75 scoped_refptr<HidDeviceInfo> HidService::GetDeviceInfo( | 82 scoped_refptr<HidDeviceInfo> HidService::GetDeviceInfo( |
| 76 const HidDeviceId& device_id) const { | 83 const HidDeviceId& device_id) const { |
| 77 DCHECK(thread_checker_.CalledOnValidThread()); | 84 DCHECK(thread_checker_.CalledOnValidThread()); |
| 78 DeviceMap::const_iterator it = devices_.find(device_id); | 85 DeviceMap::const_iterator it = devices_.find(device_id); |
| 79 if (it == devices_.end()) { | 86 if (it == devices_.end()) { |
| 80 return nullptr; | 87 return nullptr; |
| 81 } | 88 } |
| 82 return it->second; | 89 return it->second; |
| 83 } | 90 } |
| 84 | 91 |
| 85 HidService::HidService() : enumeration_ready_(false) { | 92 HidService::HidService() = default; |
| 86 } | |
| 87 | 93 |
| 88 HidService::~HidService() { | 94 HidService::~HidService() { |
| 89 DCHECK(thread_checker_.CalledOnValidThread()); | 95 DCHECK(thread_checker_.CalledOnValidThread()); |
| 96 #if DCHECK_IS_ON() |
| 97 DCHECK(did_shutdown_); |
| 98 #endif |
| 90 } | 99 } |
| 91 | 100 |
| 92 void HidService::AddDevice(scoped_refptr<HidDeviceInfo> device_info) { | 101 void HidService::AddDevice(scoped_refptr<HidDeviceInfo> device_info) { |
| 93 DCHECK(thread_checker_.CalledOnValidThread()); | 102 DCHECK(thread_checker_.CalledOnValidThread()); |
| 94 if (!base::ContainsKey(devices_, device_info->device_id())) { | 103 if (!base::ContainsKey(devices_, device_info->device_id())) { |
| 95 devices_[device_info->device_id()] = device_info; | 104 devices_[device_info->device_id()] = device_info; |
| 96 | 105 |
| 97 HID_LOG(USER) << "HID device " | 106 HID_LOG(USER) << "HID device " |
| 98 << (enumeration_ready_ ? "added" : "detected") | 107 << (enumeration_ready_ ? "added" : "detected") |
| 99 << ": vendorId=" << device_info->vendor_id() | 108 << ": vendorId=" << device_info->vendor_id() |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 } | 147 } |
| 139 | 148 |
| 140 for (const GetDevicesCallback& callback : pending_enumerations_) { | 149 for (const GetDevicesCallback& callback : pending_enumerations_) { |
| 141 callback.Run(devices); | 150 callback.Run(devices); |
| 142 } | 151 } |
| 143 pending_enumerations_.clear(); | 152 pending_enumerations_.clear(); |
| 144 } | 153 } |
| 145 } | 154 } |
| 146 | 155 |
| 147 } // namespace device | 156 } // namespace device |
| OLD | NEW |