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

Unified Diff: extensions/browser/api/hid/hid_device_manager.cc

Issue 825523003: Convert HidDeviceInfo from a struct to a refcounted class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added TODO to remove friend class definitions. Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/browser/api/hid/hid_device_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « extensions/browser/api/hid/hid_device_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698