Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Unified Diff: device/hid/hid_service_linux.cc

Issue 1681383002: Add path open errors from the permission broker to the device log. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_request_access
Patch Set: Addresses stevenjb@'s comments. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/hid/hid_service_linux.h ('k') | device/serial/serial_io_handler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/hid/hid_service_linux.cc
diff --git a/device/hid/hid_service_linux.cc b/device/hid/hid_service_linux.cc
index 0829576f5972ad5b8ac75581e4c6061d1151e1e1..057d18c45f649ac2f550445cb19c5d082c687c63 100644
--- a/device/hid/hid_service_linux.cc
+++ b/device/hid/hid_service_linux.cc
@@ -241,9 +241,13 @@ void HidServiceLinux::Connect(const HidDeviceId& device_id,
chromeos::PermissionBrokerClient* client =
chromeos::DBusThreadManager::Get()->GetPermissionBrokerClient();
DCHECK(client) << "Could not get permission broker client.";
+ chromeos::PermissionBrokerClient::ErrorCallback error_callback =
+ base::Bind(&HidServiceLinux::OnPathOpenError,
+ params->device_info->device_node(), params->callback);
client->OpenPath(
device_info->device_node(),
- base::Bind(&HidServiceLinux::OnPathOpened, base::Passed(&params)));
+ base::Bind(&HidServiceLinux::OnPathOpenComplete, base::Passed(&params)),
+ error_callback);
#else
file_task_runner_->PostTask(FROM_HERE,
base::Bind(&HidServiceLinux::OpenOnBlockingThread,
@@ -254,8 +258,8 @@ void HidServiceLinux::Connect(const HidDeviceId& device_id,
#if defined(OS_CHROMEOS)
// static
-void HidServiceLinux::OnPathOpened(scoped_ptr<ConnectParams> params,
- dbus::FileDescriptor fd) {
+void HidServiceLinux::OnPathOpenComplete(scoped_ptr<ConnectParams> params,
+ dbus::FileDescriptor fd) {
scoped_refptr<base::SingleThreadTaskRunner> file_task_runner =
params->file_task_runner;
file_task_runner->PostTask(
@@ -264,21 +268,24 @@ void HidServiceLinux::OnPathOpened(scoped_ptr<ConnectParams> params,
}
// static
+void HidServiceLinux::OnPathOpenError(const std::string& device_path,
+ const ConnectCallback& callback,
+ const std::string& error_name,
+ const std::string& error_message) {
+ HID_LOG(EVENT) << "Permission broker failed to open '" << device_path
+ << "': " << error_name << ": " << error_message;
+ callback.Run(nullptr);
+}
+
+// static
void HidServiceLinux::ValidateFdOnBlockingThread(
scoped_ptr<ConnectParams> params,
dbus::FileDescriptor fd) {
base::ThreadRestrictions::AssertIOAllowed();
-
fd.CheckValidity();
- if (fd.is_valid()) {
- params->device_file = base::File(fd.TakeValue());
- FinishOpen(std::move(params));
- } else {
- HID_LOG(EVENT) << "Permission broker denied access to '"
- << params->device_info->device_node() << "'.";
- params->task_runner->PostTask(FROM_HERE,
- base::Bind(params->callback, nullptr));
- }
+ DCHECK(fd.is_valid());
+ params->device_file = base::File(fd.TakeValue());
+ FinishOpen(std::move(params));
}
#else
« no previous file with comments | « device/hid/hid_service_linux.h ('k') | device/serial/serial_io_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698