diff options
author | reillyg@chromium.org <reillyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-20 12:54:24 +0000 |
---|---|---|
committer | reillyg@chromium.org <reillyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-20 12:54:24 +0000 |
commit | 645947ef62a7322feb69334e5db0afd68e809328 (patch) | |
tree | 6e56c719523c5510d2eeb5c2da8eb6644547177d | |
parent | 578562213f5b17a6da6c3fac8d062ff86424e560 (diff) | |
download | chromium_src-645947ef62a7322feb69334e5db0afd68e809328.zip chromium_src-645947ef62a7322feb69334e5db0afd68e809328.tar.gz chromium_src-645947ef62a7322feb69334e5db0afd68e809328.tar.bz2 |
Descriptive log for HID device open failure on Linux.
Log a human readable message describing the reason why Chromium failed
to open a HID device node on Linux instead of the base::File error code.
BUG=
Review URL: https://codereview.chromium.org/339503007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278684 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | device/hid/hid_connection_linux.cc | 17 | ||||
-rw-r--r-- | device/hid/hid_service_linux.cc | 5 |
2 files changed, 12 insertions, 10 deletions
diff --git a/device/hid/hid_connection_linux.cc b/device/hid/hid_connection_linux.cc index b6f90a9..425d88f 100644 --- a/device/hid/hid_connection_linux.cc +++ b/device/hid/hid_connection_linux.cc @@ -57,18 +57,19 @@ HidConnectionLinux::HidConnectionLinux(HidDeviceInfo device_info, base::File::Error file_error = device_file.error_details(); if (file_error == base::File::FILE_ERROR_ACCESS_DENIED) { + VLOG(1) << "Access denied opening device read-write, trying read-only."; + 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; + device_file = base::File(base::FilePath(dev_node), flags); } } + if (!device_file.IsValid()) { + LOG(ERROR) << "Failed to open '" << dev_node << "': " + << base::File::ErrorToString(device_file.error_details()); + return; + } + if (fcntl(device_file.GetPlatformFile(), F_SETFL, fcntl(device_file.GetPlatformFile(), F_GETFL) | O_NONBLOCK)) { PLOG(ERROR) << "Failed to set non-blocking flag to device file."; diff --git a/device/hid/hid_service_linux.cc b/device/hid/hid_service_linux.cc index 5f9f0dc..5257dcd 100644 --- a/device/hid/hid_service_linux.cc +++ b/device/hid/hid_service_linux.cc @@ -114,7 +114,7 @@ void HidServiceLinux::OnDeviceAdded(udev_device* device) { std::string dev_node; if (!FindHidrawDevNode(device, &dev_node)) { - LOG(ERROR) << "Cannot open HID device as hidraw device."; + LOG(ERROR) << "Cannot find device node for HID device."; return; } @@ -122,7 +122,8 @@ void HidServiceLinux::OnDeviceAdded(udev_device* device) { base::File device_file(base::FilePath(dev_node), flags); if (!device_file.IsValid()) { - LOG(ERROR) << device_file.error_details(); + LOG(ERROR) << "Cannot open '" << dev_node << "': " + << base::File::ErrorToString(device_file.error_details()); return; } |