summaryrefslogtreecommitdiffstats
path: root/device
diff options
context:
space:
mode:
authorreillyg <reillyg@chromium.org>2016-03-15 12:47:06 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-15 19:48:11 +0000
commitcc9b0c5fa36368bb012b4b4d572ada52ceb1146b (patch)
tree5cd24491c7188fb4702d69a9e08053ad3c53eb16 /device
parent8b58c0d445772371cba4da0000f78917a12c79bc (diff)
downloadchromium_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.h3
-rw-r--r--device/usb/mojo/device_impl.cc7
-rw-r--r--device/usb/mojo/device_impl.h1
-rw-r--r--device/usb/mojo/type_converters.cc2
-rw-r--r--device/usb/public/interfaces/device.mojom5
-rw-r--r--device/usb/usb_device.h2
-rw-r--r--device/usb/usb_device_android.cc2
-rw-r--r--device/usb/usb_device_android.h2
-rw-r--r--device/usb/usb_device_impl.cc2
-rw-r--r--device/usb/usb_device_impl.h2
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.