diff options
author | reillyg <reillyg@chromium.org> | 2016-02-11 13:38:49 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-11 21:40:57 +0000 |
commit | 01bda807e1f107f607b767281c62d5f9ddb582b0 (patch) | |
tree | a77a19ee7dab5da6cf6cda19818c0222dbe32c13 /device/usb/mojo/device_impl.cc | |
parent | 22ecae62b23d376aa68675b4de70ad96c62ad44c (diff) | |
download | chromium_src-01bda807e1f107f607b767281c62d5f9ddb582b0.zip chromium_src-01bda807e1f107f607b767281c62d5f9ddb582b0.tar.gz chromium_src-01bda807e1f107f607b767281c62d5f9ddb582b0.tar.bz2 |
webusb: Reject the promise if the device is already open.
This change adds the necessary plumbing for the USB Mojo service
implementation to detect when a device is already open and to report
this error so that the WebUSB API can reject the promise returned by
USBDevice::open() with an InvalidStateError.
BUG=492204
Review URL: https://codereview.chromium.org/1693433003
Cr-Commit-Position: refs/heads/master@{#375003}
Diffstat (limited to 'device/usb/mojo/device_impl.cc')
-rw-r--r-- | device/usb/mojo/device_impl.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/device/usb/mojo/device_impl.cc b/device/usb/mojo/device_impl.cc index 724e911..0d1c64f 100644 --- a/device/usb/mojo/device_impl.cc +++ b/device/usb/mojo/device_impl.cc @@ -251,8 +251,11 @@ void DeviceImpl::GetConfiguration(const GetConfigurationCallback& callback) { } void DeviceImpl::Open(const OpenCallback& callback) { - device_->Open( - base::Bind(&DeviceImpl::OnOpen, weak_factory_.GetWeakPtr(), callback)); + if (device_handle_) + callback.Run(OpenDeviceError::ALREADY_OPEN); + else + device_->Open( + base::Bind(&DeviceImpl::OnOpen, weak_factory_.GetWeakPtr(), callback)); } void DeviceImpl::Close(const CloseCallback& callback) { |