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