From 645947ef62a7322feb69334e5db0afd68e809328 Mon Sep 17 00:00:00 2001 From: "reillyg@chromium.org" <reillyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> Date: Fri, 20 Jun 2014 12:54:24 +0000 Subject: 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 --- device/hid/hid_connection_linux.cc | 17 +++++++++-------- 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; } -- cgit v1.1