diff options
author | reillyg <reillyg@chromium.org> | 2016-03-15 12:47:06 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-15 19:48:11 +0000 |
commit | cc9b0c5fa36368bb012b4b4d572ada52ceb1146b (patch) | |
tree | 5cd24491c7188fb4702d69a9e08053ad3c53eb16 /device | |
parent | 8b58c0d445772371cba4da0000f78917a12c79bc (diff) | |
download | chromium_src-cc9b0c5fa36368bb012b4b4d572ada52ceb1146b.zip chromium_src-cc9b0c5fa36368bb012b4b4d572ada52ceb1146b.tar.gz chromium_src-cc9b0c5fa36368bb012b4b4d572ada52ceb1146b.tar.bz2 |
Track USB device configuration state in Blink.
Blink now tracks the currently selected device configuration and can
thus provide it as an IDL attribute without a getConfiguration() method
which has been removed.
This continues the trend of being able to handle errors in Blink before
calling methods on the Mojo interface.
BUG=593164
R=juncai@chromium.org
TBR=dgozman@chromium.org
Review URL: https://codereview.chromium.org/1784733002
Cr-Commit-Position: refs/heads/master@{#381288}
Diffstat (limited to 'device')
-rw-r--r-- | device/usb/mock_usb_device.h | 3 | ||||
-rw-r--r-- | device/usb/mojo/device_impl.cc | 7 | ||||
-rw-r--r-- | device/usb/mojo/device_impl.h | 1 | ||||
-rw-r--r-- | device/usb/mojo/type_converters.cc | 2 | ||||
-rw-r--r-- | device/usb/public/interfaces/device.mojom | 5 | ||||
-rw-r--r-- | device/usb/usb_device.h | 2 | ||||
-rw-r--r-- | device/usb/usb_device_android.cc | 2 | ||||
-rw-r--r-- | device/usb/usb_device_android.h | 2 | ||||
-rw-r--r-- | device/usb/usb_device_impl.cc | 2 | ||||
-rw-r--r-- | device/usb/usb_device_impl.h | 2 |
10 files changed, 12 insertions, 16 deletions
diff --git a/device/usb/mock_usb_device.h b/device/usb/mock_usb_device.h index 569a471..b5cf2bd 100644 --- a/device/usb/mock_usb_device.h +++ b/device/usb/mock_usb_device.h @@ -41,7 +41,8 @@ class MockUsbDevice : public UsbDevice { const std::vector<UsbConfigDescriptor>& configurations); MOCK_METHOD1(Open, void(const OpenCallback&)); - MOCK_METHOD0(GetActiveConfiguration, const device::UsbConfigDescriptor*()); + MOCK_CONST_METHOD0(GetActiveConfiguration, + const device::UsbConfigDescriptor*()); // Public wrapper around UsbDevice::NotifyDeviceRemoved(). void NotifyDeviceRemoved(); diff --git a/device/usb/mojo/device_impl.cc b/device/usb/mojo/device_impl.cc index 9472571..a2dd316 100644 --- a/device/usb/mojo/device_impl.cc +++ b/device/usb/mojo/device_impl.cc @@ -190,12 +190,9 @@ void DeviceImpl::OnOpen(const OpenCallback& callback, } void DeviceImpl::GetDeviceInfo(const GetDeviceInfoCallback& callback) { - callback.Run(device_info_->Clone()); -} - -void DeviceImpl::GetConfiguration(const GetConfigurationCallback& callback) { const UsbConfigDescriptor* config = device_->GetActiveConfiguration(); - callback.Run(config ? config->configuration_value : 0); + device_info_->active_configuration = config ? config->configuration_value : 0; + callback.Run(device_info_->Clone()); } void DeviceImpl::Open(const OpenCallback& callback) { diff --git a/device/usb/mojo/device_impl.h b/device/usb/mojo/device_impl.h index 6c77d38..a0a4cfc 100644 --- a/device/usb/mojo/device_impl.h +++ b/device/usb/mojo/device_impl.h @@ -55,7 +55,6 @@ class DeviceImpl : public Device, public device::UsbDevice::Observer { // Device implementation: void GetDeviceInfo(const GetDeviceInfoCallback& callback) override; - void GetConfiguration(const GetConfigurationCallback& callback) override; void Open(const OpenCallback& callback) override; void Close(const CloseCallback& callback) override; void SetConfiguration(uint8_t value, diff --git a/device/usb/mojo/type_converters.cc b/device/usb/mojo/type_converters.cc index 0145abd..e22b58f 100644 --- a/device/usb/mojo/type_converters.cc +++ b/device/usb/mojo/type_converters.cc @@ -260,6 +260,8 @@ TypeConverter<device::usb::DeviceInfoPtr, device::UsbDevice>::Convert( info->manufacturer_name = base::UTF16ToUTF8(device.manufacturer_string()); info->product_name = base::UTF16ToUTF8(device.product_string()); info->serial_number = base::UTF16ToUTF8(device.serial_number()); + const device::UsbConfigDescriptor* config = device.GetActiveConfiguration(); + info->active_configuration = config ? config->configuration_value : 0; info->configurations = mojo::Array<device::usb::ConfigurationInfoPtr>::From( device.configurations()); if (device.webusb_allowed_origins()) { diff --git a/device/usb/public/interfaces/device.mojom b/device/usb/public/interfaces/device.mojom index de7bd5f..4b65a11 100644 --- a/device/usb/public/interfaces/device.mojom +++ b/device/usb/public/interfaces/device.mojom @@ -99,6 +99,7 @@ struct DeviceInfo { string? manufacturer_name; string? product_name; string? serial_number; + uint8 active_configuration; array<ConfigurationInfo> configurations; WebUsbDescriptorSet? webusb_allowed_origins; }; @@ -153,10 +154,6 @@ interface Device { // including the set of all available device configurations. GetDeviceInfo() => (DeviceInfo? info); - // Retrieves the |configuration_value| of the device's currently active - // configuration. Will return 0 if the device is unconfigured. - GetConfiguration() => (uint8 value); - // Opens the device. Methods below require the device be opened first. Open() => (OpenDeviceError error); diff --git a/device/usb/usb_device.h b/device/usb/usb_device.h index b1406d9..599c230 100644 --- a/device/usb/usb_device.h +++ b/device/usb/usb_device.h @@ -75,7 +75,7 @@ class UsbDevice : public base::RefCountedThreadSafe<UsbDevice> { // Gets the UsbConfigDescriptor for the active device configuration or nullptr // if the device is unconfigured. - virtual const UsbConfigDescriptor* GetActiveConfiguration() = 0; + virtual const UsbConfigDescriptor* GetActiveConfiguration() const = 0; void AddObserver(Observer* observer); void RemoveObserver(Observer* observer); diff --git a/device/usb/usb_device_android.cc b/device/usb/usb_device_android.cc index 6d246ba..b1a2baa 100644 --- a/device/usb/usb_device_android.cc +++ b/device/usb/usb_device_android.cc @@ -52,7 +52,7 @@ void UsbDeviceAndroid::Open(const OpenCallback& callback) { base::Bind(callback, nullptr)); } -const UsbConfigDescriptor* UsbDeviceAndroid::GetActiveConfiguration() { +const UsbConfigDescriptor* UsbDeviceAndroid::GetActiveConfiguration() const { return nullptr; } diff --git a/device/usb/usb_device_android.h b/device/usb/usb_device_android.h index ad468913..adbb20f 100644 --- a/device/usb/usb_device_android.h +++ b/device/usb/usb_device_android.h @@ -21,7 +21,7 @@ class UsbDeviceAndroid : public UsbDevice { // UsbDevice: void Open(const OpenCallback& callback) override; - const UsbConfigDescriptor* GetActiveConfiguration() override; + const UsbConfigDescriptor* GetActiveConfiguration() const override; private: UsbDeviceAndroid(JNIEnv* env, diff --git a/device/usb/usb_device_impl.cc b/device/usb/usb_device_impl.cc index 1a8bedf..19b52c9 100644 --- a/device/usb/usb_device_impl.cc +++ b/device/usb/usb_device_impl.cc @@ -208,7 +208,7 @@ void UsbDeviceImpl::Close(scoped_refptr<UsbDeviceHandle> handle) { } } -const UsbConfigDescriptor* UsbDeviceImpl::GetActiveConfiguration() { +const UsbConfigDescriptor* UsbDeviceImpl::GetActiveConfiguration() const { DCHECK(thread_checker_.CalledOnValidThread()); return active_configuration_; } diff --git a/device/usb/usb_device_impl.h b/device/usb/usb_device_impl.h index 40bfd1e..9a4f8c3 100644 --- a/device/usb/usb_device_impl.h +++ b/device/usb/usb_device_impl.h @@ -47,7 +47,7 @@ class UsbDeviceImpl : public UsbDevice { void CheckUsbAccess(const ResultCallback& callback) override; #endif // OS_CHROMEOS void Open(const OpenCallback& callback) override; - const UsbConfigDescriptor* GetActiveConfiguration() override; + const UsbConfigDescriptor* GetActiveConfiguration() const override; // These functions are used during enumeration only. The values must not // change during the object's lifetime. |