Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(303)

Side by Side Diff: third_party/WebKit/Source/modules/webusb/USBInterface.cpp

Issue 1814603002: Track USB device interface claim state in Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "modules/webusb/USBAlternateInterface.h" 8 #include "modules/webusb/USBAlternateInterface.h"
9 #include "modules/webusb/USBConfiguration.h" 9 #include "modules/webusb/USBConfiguration.h"
10 #include "modules/webusb/USBDevice.h"
10 11
11 namespace blink { 12 namespace blink {
12 13
13 USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t interfaceIndex) 14 USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t interfaceIndex)
14 { 15 {
15 return new USBInterface(configuration, interfaceIndex); 16 return new USBInterface(configuration->device(), configuration->index(), int erfaceIndex);
16 } 17 }
17 18
18 USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t interfaceNumber, ExceptionState& exceptionState) 19 USBInterface* USBInterface::create(const USBConfiguration* configuration, size_t interfaceNumber, ExceptionState& exceptionState)
19 { 20 {
20 for (size_t i = 0; i < configuration->info().interfaces.size(); ++i) { 21 const auto& interfaces = configuration->info().interfaces;
21 if (configuration->info().interfaces[i].interfaceNumber == interfaceNumb er) 22 for (size_t i = 0; i < interfaces.size(); ++i) {
22 return new USBInterface(configuration, i); 23 if (interfaces[i].interfaceNumber == interfaceNumber)
24 return new USBInterface(configuration->device(), configuration->inde x(), i);
23 } 25 }
24 exceptionState.throwRangeError("Invalid interface index."); 26 exceptionState.throwRangeError("Invalid interface index.");
25 return nullptr; 27 return nullptr;
26 } 28 }
27 29
28 USBInterface::USBInterface(const USBConfiguration* configuration, size_t interfa ceIndex) 30 USBInterface::USBInterface(const USBDevice* device, size_t configurationIndex, s ize_t interfaceIndex)
29 : m_configuration(configuration) 31 : m_device(device)
32 , m_configurationIndex(configurationIndex)
30 , m_interfaceIndex(interfaceIndex) 33 , m_interfaceIndex(interfaceIndex)
31 { 34 {
32 ASSERT(m_configuration); 35 ASSERT(m_configurationIndex < m_device->info().configurations.size());
33 ASSERT(m_interfaceIndex < m_configuration->info().interfaces.size()); 36 ASSERT(m_interfaceIndex < m_device->info().configurations[m_configurationInd ex].interfaces.size());
34 } 37 }
35 38
36 const WebUSBDeviceInfo::Interface& USBInterface::info() const 39 const WebUSBDeviceInfo::Interface& USBInterface::info() const
37 { 40 {
38 return m_configuration->info().interfaces[m_interfaceIndex]; 41 return m_device->info().configurations[m_configurationIndex].interfaces[m_in terfaceIndex];
39 } 42 }
40 43
41 HeapVector<Member<USBAlternateInterface>> USBInterface::alternates() const 44 HeapVector<Member<USBAlternateInterface>> USBInterface::alternates() const
42 { 45 {
43 HeapVector<Member<USBAlternateInterface>> alternates; 46 HeapVector<Member<USBAlternateInterface>> alternates;
44 for (size_t i = 0; i < info().alternates.size(); ++i) 47 for (size_t i = 0; i < info().alternates.size(); ++i)
45 alternates.append(USBAlternateInterface::create(this, i)); 48 alternates.append(USBAlternateInterface::create(this, i));
46 return alternates; 49 return alternates;
47 } 50 }
48 51
49 uint8_t USBInterface::interfaceNumber() const 52 uint8_t USBInterface::interfaceNumber() const
50 { 53 {
51 return info().interfaceNumber; 54 return info().interfaceNumber;
52 } 55 }
53 56
57 bool USBInterface::claimed() const
58 {
59 return m_device->isInterfaceClaimed(m_configurationIndex, m_interfaceIndex);
60 }
61
54 DEFINE_TRACE(USBInterface) 62 DEFINE_TRACE(USBInterface)
55 { 63 {
56 visitor->trace(m_configuration); 64 visitor->trace(m_device);
57 } 65 }
58 66
59 } // namespace blink 67 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/webusb/USBInterface.h ('k') | third_party/WebKit/Source/modules/webusb/USBInterface.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698