| Index: device/hid/hid_connection_linux.cc
|
| diff --git a/device/hid/hid_connection_linux.cc b/device/hid/hid_connection_linux.cc
|
| index 936c7b1bd23fe95a13c2fd29453fe2119ab59089..204d41d47554ee0ea9cadc1eefe470aa334a5d4f 100644
|
| --- a/device/hid/hid_connection_linux.cc
|
| +++ b/device/hid/hid_connection_linux.cc
|
| @@ -64,8 +64,20 @@ HidConnectionLinux::HidConnectionLinux(HidDeviceInfo device_info,
|
|
|
| base::File device_file(base::FilePath(dev_node), flags);
|
| if (!device_file.IsValid()) {
|
| - LOG(ERROR) << device_file.error_details();
|
| - return;
|
| + base::File::Error file_error = device_file.error_details();
|
| +
|
| + if (file_error == base::File::FILE_ERROR_ACCESS_DENIED) {
|
| + flags = base::File::FLAG_OPEN | base::File::FLAG_READ;
|
| +
|
| + base::File device_file(base::FilePath(dev_node), flags);
|
| + if (!device_file.IsValid()) {
|
| + LOG(ERROR) << device_file.error_details();
|
| + return;
|
| + }
|
| + } else {
|
| + LOG(ERROR) << file_error;
|
| + return;
|
| + }
|
| }
|
| if (fcntl(device_file.GetPlatformFile(), F_SETFL,
|
| fcntl(device_file.GetPlatformFile(), F_GETFL) | O_NONBLOCK)) {
|
|
|