Index: device/usb/usb_device_impl.cc |
diff --git a/device/usb/usb_device_impl.cc b/device/usb/usb_device_impl.cc |
index 271b631b272f44cc52652ac86a4541d70c644847..52806996c31f669c923e500b5f542779c41eea5b 100644 |
--- a/device/usb/usb_device_impl.cc |
+++ b/device/usb/usb_device_impl.cc |
@@ -196,7 +196,8 @@ void UsbDeviceImpl::Open(const OpenCallback& callback) { |
DCHECK(client) << "Could not get permission broker client."; |
client->OpenPath( |
device_path_, |
- base::Bind(&UsbDeviceImpl::OnOpenRequestComplete, this, callback)); |
+ base::Bind(&UsbDeviceImpl::OnOpenRequestComplete, this, callback), |
+ base::Bind(&UsbDeviceImpl::OnOpenRequestError, this, callback)); |
#else |
blocking_task_runner_->PostTask( |
FROM_HERE, |
@@ -291,14 +292,18 @@ void UsbDeviceImpl::OnOpenRequestComplete(const OpenCallback& callback, |
base::Passed(&fd), callback)); |
} |
+void UsbDeviceImpl::OnOpenRequestError(const OpenCallback& callback, |
+ const std::string& error_name, |
+ const std::string& error_message) { |
+ USB_LOG(EVENT) << "Permission broker failed to open the device: " |
+ << error_name << ": " << error_message; |
+ callback.Run(nullptr); |
+} |
+ |
void UsbDeviceImpl::OpenOnBlockingThreadWithFd(dbus::FileDescriptor fd, |
const OpenCallback& callback) { |
fd.CheckValidity(); |
- if (!fd.is_valid()) { |
- USB_LOG(EVENT) << "Did not get valid device handle from permission broker."; |
- task_runner_->PostTask(FROM_HERE, base::Bind(callback, nullptr)); |
- return; |
- } |
+ DCHECK(fd.is_valid()); |
PlatformUsbDeviceHandle handle; |
const int rv = libusb_open_fd(platform_device_, fd.TakeValue(), &handle); |