| Index: third_party/WebKit/Source/modules/webusb/USBInterface.cpp
|
| diff --git a/third_party/WebKit/Source/modules/webusb/USBInterface.cpp b/third_party/WebKit/Source/modules/webusb/USBInterface.cpp
|
| index 201b73676559918d89821052a2e2a219ede6c074..17b14c50249c896a6b9f09d8ea0f24d920bf8d2d 100644
|
| --- a/third_party/WebKit/Source/modules/webusb/USBInterface.cpp
|
| +++ b/third_party/WebKit/Source/modules/webusb/USBInterface.cpp
|
| @@ -7,35 +7,38 @@
|
| #include "bindings/core/v8/ExceptionState.h"
|
| #include "modules/webusb/USBAlternateInterface.h"
|
| #include "modules/webusb/USBConfiguration.h"
|
| +#include "modules/webusb/USBDevice.h"
|
|
|
| namespace blink {
|
|
|
| USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t interfaceIndex)
|
| {
|
| - return new USBInterface(configuration, interfaceIndex);
|
| + return new USBInterface(configuration->device(), configuration->index(), interfaceIndex);
|
| }
|
|
|
| USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t interfaceNumber, ExceptionState& exceptionState)
|
| {
|
| - for (size_t i = 0; i < configuration->info().interfaces.size(); ++i) {
|
| - if (configuration->info().interfaces[i].interfaceNumber == interfaceNumber)
|
| - return new USBInterface(configuration, i);
|
| + const auto& interfaces = configuration->info().interfaces;
|
| + for (size_t i = 0; i < interfaces.size(); ++i) {
|
| + if (interfaces[i].interfaceNumber == interfaceNumber)
|
| + return new USBInterface(configuration->device(), configuration->index(), i);
|
| }
|
| exceptionState.throwRangeError("Invalid interface index.");
|
| return nullptr;
|
| }
|
|
|
| -USBInterface::USBInterface(const USBConfiguration* configuration, size_t interfaceIndex)
|
| - : m_configuration(configuration)
|
| +USBInterface::USBInterface(const USBDevice* device, size_t configurationIndex, size_t interfaceIndex)
|
| + : m_device(device)
|
| + , m_configurationIndex(configurationIndex)
|
| , m_interfaceIndex(interfaceIndex)
|
| {
|
| - ASSERT(m_configuration);
|
| - ASSERT(m_interfaceIndex < m_configuration->info().interfaces.size());
|
| + ASSERT(m_configurationIndex < m_device->info().configurations.size());
|
| + ASSERT(m_interfaceIndex < m_device->info().configurations[m_configurationIndex].interfaces.size());
|
| }
|
|
|
| const WebUSBDeviceInfo::Interface& USBInterface::info() const
|
| {
|
| - return m_configuration->info().interfaces[m_interfaceIndex];
|
| + return m_device->info().configurations[m_configurationIndex].interfaces[m_interfaceIndex];
|
| }
|
|
|
| HeapVector<Member<USBAlternateInterface>> USBInterface::alternates() const
|
| @@ -51,9 +54,14 @@ uint8_t USBInterface::interfaceNumber() const
|
| return info().interfaceNumber;
|
| }
|
|
|
| +bool USBInterface::claimed() const
|
| +{
|
| + return m_device->isInterfaceClaimed(m_configurationIndex, m_interfaceIndex);
|
| +}
|
| +
|
| DEFINE_TRACE(USBInterface)
|
| {
|
| - visitor->trace(m_configuration);
|
| + visitor->trace(m_device);
|
| }
|
|
|
| } // namespace blink
|
|
|