| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "modules/webusb/USBInterface.h" | 5 #include "modules/webusb/USBInterface.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ExceptionState.h" | 7 #include "bindings/core/v8/ExceptionState.h" |
| 8 #include "device/usb/public/interfaces/device.mojom-wtf.h" |
| 8 #include "modules/webusb/USBAlternateInterface.h" | 9 #include "modules/webusb/USBAlternateInterface.h" |
| 9 #include "modules/webusb/USBConfiguration.h" | 10 #include "modules/webusb/USBConfiguration.h" |
| 10 #include "modules/webusb/USBDevice.h" | 11 #include "modules/webusb/USBDevice.h" |
| 11 | 12 |
| 12 namespace blink { | 13 namespace blink { |
| 13 | 14 |
| 14 USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t
interfaceIndex) | 15 USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t
interfaceIndex) |
| 15 { | 16 { |
| 16 return new USBInterface(configuration->device(), configuration->index(), int
erfaceIndex); | 17 return new USBInterface(configuration->device(), configuration->index(), int
erfaceIndex); |
| 17 } | 18 } |
| 18 | 19 |
| 19 USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t
interfaceNumber, ExceptionState& exceptionState) | 20 USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t
interfaceNumber, ExceptionState& exceptionState) |
| 20 { | 21 { |
| 21 const auto& interfaces = configuration->info().interfaces; | 22 const auto& interfaces = configuration->info().interfaces; |
| 22 for (size_t i = 0; i < interfaces.size(); ++i) { | 23 for (size_t i = 0; i < interfaces.size(); ++i) { |
| 23 if (interfaces[i].interfaceNumber == interfaceNumber) | 24 if (interfaces[i]->interface_number == interfaceNumber) |
| 24 return new USBInterface(configuration->device(), configuration->inde
x(), i); | 25 return new USBInterface(configuration->device(), configuration->inde
x(), i); |
| 25 } | 26 } |
| 26 exceptionState.throwRangeError("Invalid interface index."); | 27 exceptionState.throwRangeError("Invalid interface index."); |
| 27 return nullptr; | 28 return nullptr; |
| 28 } | 29 } |
| 29 | 30 |
| 30 USBInterface::USBInterface(const USBDevice* device, size_t configurationIndex, s
ize_t interfaceIndex) | 31 USBInterface::USBInterface(const USBDevice* device, size_t configurationIndex, s
ize_t interfaceIndex) |
| 31 : m_device(device) | 32 : m_device(device) |
| 32 , m_configurationIndex(configurationIndex) | 33 , m_configurationIndex(configurationIndex) |
| 33 , m_interfaceIndex(interfaceIndex) | 34 , m_interfaceIndex(interfaceIndex) |
| 34 { | 35 { |
| 35 ASSERT(m_configurationIndex < m_device->info().configurations.size()); | 36 ASSERT(m_configurationIndex < m_device->info().configurations.size()); |
| 36 ASSERT(m_interfaceIndex < m_device->info().configurations[m_configurationInd
ex].interfaces.size()); | 37 ASSERT(m_interfaceIndex < m_device->info().configurations[m_configurationInd
ex]->interfaces.size()); |
| 37 } | 38 } |
| 38 | 39 |
| 39 const WebUSBDeviceInfo::Interface& USBInterface::info() const | 40 const device::usb::wtf::InterfaceInfo& USBInterface::info() const |
| 40 { | 41 { |
| 41 return m_device->info().configurations[m_configurationIndex].interfaces[m_in
terfaceIndex]; | 42 return *m_device->info().configurations[m_configurationIndex]->interfaces[m_
interfaceIndex]; |
| 42 } | 43 } |
| 43 | 44 |
| 44 USBAlternateInterface* USBInterface::alternate() const | 45 USBAlternateInterface* USBInterface::alternate() const |
| 45 { | 46 { |
| 46 if (m_device->isInterfaceClaimed(m_configurationIndex, m_interfaceIndex)) | 47 if (m_device->isInterfaceClaimed(m_configurationIndex, m_interfaceIndex)) |
| 47 return USBAlternateInterface::create(this, m_device->selectedAlternateIn
terface(m_interfaceIndex)); | 48 return USBAlternateInterface::create(this, m_device->selectedAlternateIn
terface(m_interfaceIndex)); |
| 48 return nullptr; | 49 return nullptr; |
| 49 } | 50 } |
| 50 | 51 |
| 51 HeapVector<Member<USBAlternateInterface>> USBInterface::alternates() const | 52 HeapVector<Member<USBAlternateInterface>> USBInterface::alternates() const |
| 52 { | 53 { |
| 53 HeapVector<Member<USBAlternateInterface>> alternates; | 54 HeapVector<Member<USBAlternateInterface>> alternates; |
| 54 for (size_t i = 0; i < info().alternates.size(); ++i) | 55 for (size_t i = 0; i < info().alternates.size(); ++i) |
| 55 alternates.append(USBAlternateInterface::create(this, i)); | 56 alternates.append(USBAlternateInterface::create(this, i)); |
| 56 return alternates; | 57 return alternates; |
| 57 } | 58 } |
| 58 | 59 |
| 59 uint8_t USBInterface::interfaceNumber() const | |
| 60 { | |
| 61 return info().interfaceNumber; | |
| 62 } | |
| 63 | |
| 64 bool USBInterface::claimed() const | 60 bool USBInterface::claimed() const |
| 65 { | 61 { |
| 66 return m_device->isInterfaceClaimed(m_configurationIndex, m_interfaceIndex); | 62 return m_device->isInterfaceClaimed(m_configurationIndex, m_interfaceIndex); |
| 67 } | 63 } |
| 68 | 64 |
| 69 DEFINE_TRACE(USBInterface) | 65 DEFINE_TRACE(USBInterface) |
| 70 { | 66 { |
| 71 visitor->trace(m_device); | 67 visitor->trace(m_device); |
| 72 } | 68 } |
| 73 | 69 |
| 74 } // namespace blink | 70 } // namespace blink |
| OLD | NEW |