| 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); | 
| } | 
|  |