| Index: extensions/browser/api/hid/hid_device_manager.cc
|
| diff --git a/extensions/browser/api/hid/hid_device_manager.cc b/extensions/browser/api/hid/hid_device_manager.cc
|
| index 5c84f8a904bd4eeb11128b997a2e24c791037cb9..c95d20fcf124ee7480f7a1fb40e4072d6c779a8b 100644
|
| --- a/extensions/browser/api/hid/hid_device_manager.cc
|
| +++ b/extensions/browser/api/hid/hid_device_manager.cc
|
| @@ -26,14 +26,14 @@ namespace extensions {
|
| namespace {
|
|
|
| void PopulateHidDeviceInfo(hid::HidDeviceInfo* output,
|
| - const HidDeviceInfo& input) {
|
| - output->vendor_id = input.vendor_id;
|
| - output->product_id = input.product_id;
|
| - output->max_input_report_size = input.max_input_report_size;
|
| - output->max_output_report_size = input.max_output_report_size;
|
| - output->max_feature_report_size = input.max_feature_report_size;
|
| -
|
| - for (const device::HidCollectionInfo& collection : input.collections) {
|
| + scoped_refptr<HidDeviceInfo> input) {
|
| + output->vendor_id = input->vendor_id();
|
| + output->product_id = input->product_id();
|
| + output->max_input_report_size = input->max_input_report_size();
|
| + output->max_output_report_size = input->max_output_report_size();
|
| + output->max_feature_report_size = input->max_feature_report_size();
|
| +
|
| + for (const device::HidCollectionInfo& collection : input->collections()) {
|
| // Don't expose sensitive data.
|
| if (collection.usage.IsProtected()) {
|
| continue;
|
| @@ -51,7 +51,7 @@ void PopulateHidDeviceInfo(hid::HidDeviceInfo* output,
|
| }
|
| }
|
|
|
| -bool WillDispatchDeviceEvent(const HidDeviceInfo& device_info,
|
| +bool WillDispatchDeviceEvent(scoped_refptr<HidDeviceInfo> device_info,
|
| content::BrowserContext* context,
|
| const Extension* extension,
|
| base::ListValue* event_args) {
|
| @@ -119,8 +119,7 @@ void HidDeviceManager::GetApiDevices(
|
| }
|
| }
|
|
|
| -bool HidDeviceManager::GetDeviceInfo(int resource_id,
|
| - HidDeviceInfo* device_info) {
|
| +scoped_refptr<HidDeviceInfo> HidDeviceManager::GetDeviceInfo(int resource_id) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| HidService* hid_service = device::DeviceClient::Get()->GetHidService();
|
| DCHECK(hid_service);
|
| @@ -128,18 +127,17 @@ bool HidDeviceManager::GetDeviceInfo(int resource_id,
|
| ResourceIdToDeviceIdMap::const_iterator device_iter =
|
| device_ids_.find(resource_id);
|
| if (device_iter == device_ids_.end()) {
|
| - return false;
|
| + return nullptr;
|
| }
|
|
|
| - return hid_service->GetDeviceInfo(device_iter->second, device_info);
|
| + return hid_service->GetDeviceInfo(device_iter->second);
|
| }
|
|
|
| // static
|
| bool HidDeviceManager::HasPermission(const Extension* extension,
|
| - const HidDeviceInfo& device_info) {
|
| + scoped_refptr<HidDeviceInfo> device_info) {
|
| UsbDevicePermission::CheckParam usbParam(
|
| - device_info.vendor_id,
|
| - device_info.product_id,
|
| + device_info->vendor_id(), device_info->product_id(),
|
| UsbDevicePermissionData::UNSPECIFIED_INTERFACE);
|
| if (extension->permissions_data()->CheckAPIPermissionWithParam(
|
| APIPermission::kUsbDevice, &usbParam)) {
|
| @@ -168,13 +166,13 @@ void HidDeviceManager::OnListenerAdded(const EventListenerInfo& details) {
|
| LazyInitialize();
|
| }
|
|
|
| -void HidDeviceManager::OnDeviceAdded(const HidDeviceInfo& device_info) {
|
| +void HidDeviceManager::OnDeviceAdded(scoped_refptr<HidDeviceInfo> device_info) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| DCHECK_LT(next_resource_id_, std::numeric_limits<int>::max());
|
| int new_id = next_resource_id_++;
|
| - DCHECK(!ContainsKey(resource_ids_, device_info.device_id));
|
| - resource_ids_[device_info.device_id] = new_id;
|
| - device_ids_[new_id] = device_info.device_id;
|
| + DCHECK(!ContainsKey(resource_ids_, device_info->device_id()));
|
| + resource_ids_[device_info->device_id()] = new_id;
|
| + device_ids_[new_id] = device_info->device_id();
|
|
|
| // Don't generate events during the initial enumeration.
|
| if (enumeration_ready_ && event_router_) {
|
| @@ -190,9 +188,10 @@ void HidDeviceManager::OnDeviceAdded(const HidDeviceInfo& device_info) {
|
| }
|
| }
|
|
|
| -void HidDeviceManager::OnDeviceRemoved(const HidDeviceInfo& device_info) {
|
| +void HidDeviceManager::OnDeviceRemoved(
|
| + scoped_refptr<HidDeviceInfo> device_info) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - const auto& resource_entry = resource_ids_.find(device_info.device_id);
|
| + const auto& resource_entry = resource_ids_.find(device_info->device_id());
|
| DCHECK(resource_entry != resource_ids_.end());
|
| int resource_id = resource_entry->second;
|
| const auto& device_entry = device_ids_.find(resource_id);
|
| @@ -234,8 +233,9 @@ scoped_ptr<base::ListValue> HidDeviceManager::CreateApiDeviceList(
|
| int resource_id = map_entry.first;
|
| const HidDeviceId& device_id = map_entry.second;
|
|
|
| - HidDeviceInfo device_info;
|
| - if (!hid_service->GetDeviceInfo(device_id, &device_info)) {
|
| + scoped_refptr<HidDeviceInfo> device_info =
|
| + hid_service->GetDeviceInfo(device_id);
|
| + if (!device_info) {
|
| continue;
|
| }
|
|
|
| @@ -262,10 +262,10 @@ scoped_ptr<base::ListValue> HidDeviceManager::CreateApiDeviceList(
|
| }
|
|
|
| void HidDeviceManager::OnEnumerationComplete(
|
| - const std::vector<HidDeviceInfo>& devices) {
|
| + const std::vector<scoped_refptr<HidDeviceInfo>>& devices) {
|
| DCHECK(resource_ids_.empty());
|
| DCHECK(device_ids_.empty());
|
| - for (const device::HidDeviceInfo& device_info : devices) {
|
| + for (const scoped_refptr<HidDeviceInfo>& device_info : devices) {
|
| OnDeviceAdded(device_info);
|
| }
|
| enumeration_ready_ = true;
|
| @@ -280,7 +280,7 @@ void HidDeviceManager::OnEnumerationComplete(
|
|
|
| void HidDeviceManager::DispatchEvent(const std::string& event_name,
|
| scoped_ptr<base::ListValue> event_args,
|
| - const HidDeviceInfo& device_info) {
|
| + scoped_refptr<HidDeviceInfo> device_info) {
|
| scoped_ptr<Event> event(new Event(event_name, event_args.Pass()));
|
| event->will_dispatch_callback =
|
| base::Bind(&WillDispatchDeviceEvent, device_info);
|
|
|