Index: device/hid/hid_service_linux.cc |
diff --git a/device/hid/hid_service_linux.cc b/device/hid/hid_service_linux.cc |
index 76ba3afbc0f05f8b101975359f7625a25a683689..556f3bb639cfaefada665a49dd3b0ff2cabf6fde 100644 |
--- a/device/hid/hid_service_linux.cc |
+++ b/device/hid/hid_service_linux.cc |
@@ -43,7 +43,7 @@ const char kSysfsReportDescriptorKey[] = "report_descriptor"; |
} // namespace |
struct HidServiceLinux::ConnectParams { |
- ConnectParams(const HidDeviceInfo& device_info, |
+ ConnectParams(scoped_refptr<HidDeviceInfo> device_info, |
const ConnectCallback& callback, |
scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> file_task_runner) |
@@ -53,7 +53,7 @@ struct HidServiceLinux::ConnectParams { |
file_task_runner(file_task_runner) {} |
~ConnectParams() {} |
- HidDeviceInfo device_info; |
+ scoped_refptr<HidDeviceInfo> device_info; |
ConnectCallback callback; |
scoped_refptr<base::SingleThreadTaskRunner> task_runner; |
scoped_refptr<base::SingleThreadTaskRunner> file_task_runner; |
@@ -90,14 +90,14 @@ class HidServiceLinux::Helper : public DeviceMonitorLinux::Observer, |
return; |
} |
- HidDeviceInfo device_info; |
- device_info.device_id = device_path; |
+ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo()); |
+ device_info->device_id_ = device_path; |
const char* str_property = udev_device_get_devnode(device); |
if (!str_property) { |
return; |
} |
- device_info.device_node = str_property; |
+ device_info->device_node_ = str_property; |
udev_device* parent = udev_device_get_parent(device); |
if (!parent) { |
@@ -117,21 +117,21 @@ class HidServiceLinux::Helper : public DeviceMonitorLinux::Observer, |
uint32_t int_property = 0; |
if (HexStringToUInt(base::StringPiece(parts[1]), &int_property)) { |
- device_info.vendor_id = int_property; |
+ device_info->vendor_id_ = int_property; |
} |
if (HexStringToUInt(base::StringPiece(parts[2]), &int_property)) { |
- device_info.product_id = int_property; |
+ device_info->product_id_ = int_property; |
} |
str_property = udev_device_get_property_value(parent, kHIDUnique); |
if (str_property != NULL) { |
- device_info.serial_number = str_property; |
+ device_info->serial_number_ = str_property; |
} |
str_property = udev_device_get_property_value(parent, kHIDName); |
if (str_property != NULL) { |
- device_info.product_name = str_property; |
+ device_info->product_name_ = str_property; |
} |
const char* parent_sysfs_path = udev_device_get_syspath(parent); |
@@ -149,10 +149,11 @@ class HidServiceLinux::Helper : public DeviceMonitorLinux::Observer, |
HidReportDescriptor report_descriptor( |
reinterpret_cast<uint8_t*>(&report_descriptor_str[0]), |
report_descriptor_str.length()); |
- report_descriptor.GetDetails( |
- &device_info.collections, &device_info.has_report_id, |
- &device_info.max_input_report_size, &device_info.max_output_report_size, |
- &device_info.max_feature_report_size); |
+ report_descriptor.GetDetails(&device_info->collections_, |
+ &device_info->has_report_id_, |
+ &device_info->max_input_report_size_, |
+ &device_info->max_output_report_size_, |
+ &device_info->max_feature_report_size_); |
task_runner_->PostTask(FROM_HERE, base::Bind(&HidServiceLinux::AddDevice, |
service_, device_info)); |
@@ -213,7 +214,7 @@ void HidServiceLinux::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; |
scoped_ptr<ConnectParams> params(new ConnectParams( |
device_info, callback, task_runner_, file_task_runner_)); |
@@ -225,7 +226,7 @@ void HidServiceLinux::Connect(const HidDeviceId& device_id, |
DCHECK(client) << "Could not get permission broker client."; |
if (client) { |
client->RequestPathAccess( |
- device_info.device_node, -1, |
+ device_info->device_node(), -1, |
base::Bind(&HidServiceLinux::OnRequestPathAccessComplete, |
base::Passed(¶ms))); |
} else { |
@@ -265,7 +266,7 @@ void HidServiceLinux::OnRequestPathAccessComplete( |
void HidServiceLinux::OpenDevice(scoped_ptr<ConnectParams> params) { |
base::ThreadRestrictions::AssertIOAllowed(); |
scoped_refptr<base::SingleThreadTaskRunner> task_runner = params->task_runner; |
- base::FilePath device_path(params->device_info.device_node); |
+ base::FilePath device_path(params->device_info->device_node()); |
base::File& device_file = params->device_file; |
int flags = |
base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE; |
@@ -280,7 +281,8 @@ void HidServiceLinux::OpenDevice(scoped_ptr<ConnectParams> params) { |
} |
} |
if (!device_file.IsValid()) { |
- LOG(ERROR) << "Failed to open '" << params->device_info.device_node << "': " |
+ LOG(ERROR) << "Failed to open '" << params->device_info->device_node() |
+ << "': " |
<< base::File::ErrorToString(device_file.error_details()); |
task_runner->PostTask(FROM_HERE, base::Bind(params->callback, nullptr)); |
return; |