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

Unified Diff: device/hid/hid_service_win.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 | « device/hid/hid_service_mac.cc ('k') | extensions/browser/api/hid/hid_api.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/hid/hid_service_win.cc
diff --git a/device/hid/hid_service_win.cc b/device/hid/hid_service_win.cc
index e497837a384114f07d3b04245e9c930701a7891c..27f4148d055b641d8b6817b0c2f8a057a3c39f51 100644
--- a/device/hid/hid_service_win.cc
+++ b/device/hid/hid_service_win.cc
@@ -47,9 +47,9 @@ void HidServiceWin::Connect(const HidDeviceId& device_id,
task_runner_->PostTask(FROM_HERE, base::Bind(callback, nullptr));
return;
}
- const HidDeviceInfo& device_info = map_entry->second;
+ scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
- base::win::ScopedHandle file(OpenDevice(device_info.device_id));
+ base::win::ScopedHandle file(OpenDevice(device_info->device_id()));
if (!file.IsValid()) {
PLOG(ERROR) << "Failed to open device";
task_runner_->PostTask(FROM_HERE, base::Bind(callback, nullptr));
@@ -156,9 +156,6 @@ void HidServiceWin::CollectInfoFromValueCaps(
}
void HidServiceWin::OnDeviceAdded(const std::string& device_path) {
- HidDeviceInfo device_info;
- device_info.device_id = device_path;
-
// Try to open the device.
base::win::ScopedHandle device_handle(OpenDevice(device_path));
if (!device_handle.IsValid()) {
@@ -172,8 +169,10 @@ void HidServiceWin::OnDeviceAdded(const std::string& device_path) {
return;
}
- device_info.vendor_id = attrib.VendorID;
- device_info.product_id = attrib.ProductID;
+ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo());
+ device_info->device_id_ = device_path;
+ device_info->vendor_id_ = attrib.VendorID;
+ device_info->product_id_ = attrib.ProductID;
// Get usage and usage page (optional).
PHIDP_PREPARSED_DATA preparsed_data;
@@ -181,9 +180,10 @@ void HidServiceWin::OnDeviceAdded(const std::string& device_path) {
preparsed_data) {
HIDP_CAPS capabilities = {0};
if (HidP_GetCaps(preparsed_data, &capabilities) == HIDP_STATUS_SUCCESS) {
- device_info.max_input_report_size = capabilities.InputReportByteLength;
- device_info.max_output_report_size = capabilities.OutputReportByteLength;
- device_info.max_feature_report_size =
+ device_info->max_input_report_size_ = capabilities.InputReportByteLength;
+ device_info->max_output_report_size_ =
+ capabilities.OutputReportByteLength;
+ device_info->max_feature_report_size_ =
capabilities.FeatureReportByteLength;
HidCollectionInfo collection_info;
collection_info.usage = HidUsageAndPage(
@@ -214,21 +214,21 @@ void HidServiceWin::OnDeviceAdded(const std::string& device_path) {
capabilities.NumberFeatureValueCaps,
&collection_info);
if (!collection_info.report_ids.empty()) {
- device_info.has_report_id = true;
+ device_info->has_report_id_ = true;
}
- device_info.collections.push_back(collection_info);
+ device_info->collections_.push_back(collection_info);
}
// Whether or not the device includes report IDs in its reports the size
// of the report ID is included in the value provided by Windows. This
// appears contrary to the MSDN documentation.
- if (device_info.max_input_report_size > 0) {
- device_info.max_input_report_size--;
+ if (device_info->max_input_report_size() > 0) {
+ device_info->max_input_report_size_--;
}
- if (device_info.max_output_report_size > 0) {
- device_info.max_output_report_size--;
+ if (device_info->max_output_report_size() > 0) {
+ device_info->max_output_report_size_--;
}
- if (device_info.max_feature_report_size > 0) {
- device_info.max_feature_report_size--;
+ if (device_info->max_feature_report_size() > 0) {
+ device_info->max_feature_report_size_--;
}
HidD_FreePreparsedData(preparsed_data);
}
« no previous file with comments | « device/hid/hid_service_mac.cc ('k') | extensions/browser/api/hid/hid_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698