Chromium Code Reviews| 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..388507d087fe3f5c9098b9ad1002c661d7fd58b2 100644 |
| --- a/third_party/WebKit/Source/modules/webusb/USBInterface.cpp |
| +++ b/third_party/WebKit/Source/modules/webusb/USBInterface.cpp |
| @@ -7,35 +7,37 @@ |
| #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) { |
|
juncai
2016/03/17 18:20:38
configuration->info() is a function call, to avoid
Reilly Grant (use Gerrit)
2016/03/18 00:10:22
Done.
|
| if (configuration->info().interfaces[i].interfaceNumber == interfaceNumber) |
|
juncai
2016/03/17 18:20:38
ditto.
|
| - return new USBInterface(configuration, i); |
| + 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 +53,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 |