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 "extensions/browser/api/hid/hid_device_manager.h" | 5 #include "extensions/browser/api/hid/hid_device_manager.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
11 #include "device/core/device_client.h" | 11 #include "device/core/device_client.h" |
12 #include "device/hid/hid_device_filter.h" | 12 #include "device/hid/hid_device_filter.h" |
13 #include "device/hid/hid_service.h" | 13 #include "device/hid/hid_service.h" |
14 #include "extensions/browser/api/device_permissions_manager.h" | 14 #include "extensions/browser/api/device_permissions_manager.h" |
15 #include "extensions/common/permissions/permissions_data.h" | 15 #include "extensions/common/permissions/permissions_data.h" |
16 #include "extensions/common/permissions/usb_device_permission.h" | 16 #include "extensions/common/permissions/usb_device_permission.h" |
17 | 17 |
18 namespace hid = extensions::core_api::hid; | 18 namespace hid = extensions::api::hid; |
19 | 19 |
20 using device::HidDeviceFilter; | 20 using device::HidDeviceFilter; |
21 using device::HidDeviceId; | 21 using device::HidDeviceId; |
22 using device::HidDeviceInfo; | 22 using device::HidDeviceInfo; |
23 using device::HidService; | 23 using device::HidService; |
24 | 24 |
25 namespace extensions { | 25 namespace extensions { |
26 | 26 |
27 namespace { | 27 namespace { |
28 | 28 |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 void HidDeviceManager::OnDeviceAdded(scoped_refptr<HidDeviceInfo> device_info) { | 206 void HidDeviceManager::OnDeviceAdded(scoped_refptr<HidDeviceInfo> device_info) { |
207 DCHECK(thread_checker_.CalledOnValidThread()); | 207 DCHECK(thread_checker_.CalledOnValidThread()); |
208 DCHECK_LT(next_resource_id_, std::numeric_limits<int>::max()); | 208 DCHECK_LT(next_resource_id_, std::numeric_limits<int>::max()); |
209 int new_id = next_resource_id_++; | 209 int new_id = next_resource_id_++; |
210 DCHECK(!ContainsKey(resource_ids_, device_info->device_id())); | 210 DCHECK(!ContainsKey(resource_ids_, device_info->device_id())); |
211 resource_ids_[device_info->device_id()] = new_id; | 211 resource_ids_[device_info->device_id()] = new_id; |
212 device_ids_[new_id] = device_info->device_id(); | 212 device_ids_[new_id] = device_info->device_id(); |
213 | 213 |
214 // Don't generate events during the initial enumeration. | 214 // Don't generate events during the initial enumeration. |
215 if (enumeration_ready_ && event_router_) { | 215 if (enumeration_ready_ && event_router_) { |
216 core_api::hid::HidDeviceInfo api_device_info; | 216 api::hid::HidDeviceInfo api_device_info; |
217 api_device_info.device_id = new_id; | 217 api_device_info.device_id = new_id; |
218 PopulateHidDeviceInfo(&api_device_info, device_info); | 218 PopulateHidDeviceInfo(&api_device_info, device_info); |
219 | 219 |
220 if (api_device_info.collections.size() > 0) { | 220 if (api_device_info.collections.size() > 0) { |
221 scoped_ptr<base::ListValue> args( | 221 scoped_ptr<base::ListValue> args( |
222 hid::OnDeviceAdded::Create(api_device_info)); | 222 hid::OnDeviceAdded::Create(api_device_info)); |
223 DispatchEvent(events::HID_ON_DEVICE_ADDED, hid::OnDeviceAdded::kEventName, | 223 DispatchEvent(events::HID_ON_DEVICE_ADDED, hid::OnDeviceAdded::kEventName, |
224 args.Pass(), device_info); | 224 args.Pass(), device_info); |
225 } | 225 } |
226 } | 226 } |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 scoped_ptr<base::ListValue> event_args, | 322 scoped_ptr<base::ListValue> event_args, |
323 scoped_refptr<HidDeviceInfo> device_info) { | 323 scoped_refptr<HidDeviceInfo> device_info) { |
324 scoped_ptr<Event> event( | 324 scoped_ptr<Event> event( |
325 new Event(histogram_value, event_name, event_args.Pass())); | 325 new Event(histogram_value, event_name, event_args.Pass())); |
326 event->will_dispatch_callback = base::Bind( | 326 event->will_dispatch_callback = base::Bind( |
327 &WillDispatchDeviceEvent, weak_factory_.GetWeakPtr(), device_info); | 327 &WillDispatchDeviceEvent, weak_factory_.GetWeakPtr(), device_info); |
328 event_router_->BroadcastEvent(event.Pass()); | 328 event_router_->BroadcastEvent(event.Pass()); |
329 } | 329 } |
330 | 330 |
331 } // namespace extensions | 331 } // namespace extensions |
OLD | NEW |