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

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: Addressed juncai@'s comments. 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 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.
21 if (configuration->info().interfaces[i].interfaceNumber == interfaceNumb er) 22 if (configuration->info().interfaces[i].interfaceNumber == interfaceNumb er)
juncai 2016/03/17 18:20:38 ditto.
22 return new USBInterface(configuration, i); 23 return new USBInterface(configuration->device(), configuration->inde x(), i);
23 } 24 }
24 exceptionState.throwRangeError("Invalid interface index."); 25 exceptionState.throwRangeError("Invalid interface index.");
25 return nullptr; 26 return nullptr;
26 } 27 }
27 28
28 USBInterface::USBInterface(const USBConfiguration* configuration, size_t interfa ceIndex) 29 USBInterface::USBInterface(const USBDevice* device, size_t configurationIndex, s ize_t interfaceIndex)
29 : m_configuration(configuration) 30 : m_device(device)
31 , m_configurationIndex(configurationIndex)
30 , m_interfaceIndex(interfaceIndex) 32 , m_interfaceIndex(interfaceIndex)
31 { 33 {
32 ASSERT(m_configuration); 34 ASSERT(m_configurationIndex < m_device->info().configurations.size());
33 ASSERT(m_interfaceIndex < m_configuration->info().interfaces.size()); 35 ASSERT(m_interfaceIndex < m_device->info().configurations[m_configurationInd ex].interfaces.size());
34 } 36 }
35 37
36 const WebUSBDeviceInfo::Interface& USBInterface::info() const 38 const WebUSBDeviceInfo::Interface& USBInterface::info() const
37 { 39 {
38 return m_configuration->info().interfaces[m_interfaceIndex]; 40 return m_device->info().configurations[m_configurationIndex].interfaces[m_in terfaceIndex];
39 } 41 }
40 42
41 HeapVector<Member<USBAlternateInterface>> USBInterface::alternates() const 43 HeapVector<Member<USBAlternateInterface>> USBInterface::alternates() const
42 { 44 {
43 HeapVector<Member<USBAlternateInterface>> alternates; 45 HeapVector<Member<USBAlternateInterface>> alternates;
44 for (size_t i = 0; i < info().alternates.size(); ++i) 46 for (size_t i = 0; i < info().alternates.size(); ++i)
juncai 2016/03/17 18:20:38 ditto.
45 alternates.append(USBAlternateInterface::create(this, i)); 47 alternates.append(USBAlternateInterface::create(this, i));
46 return alternates; 48 return alternates;
47 } 49 }
48 50
49 uint8_t USBInterface::interfaceNumber() const 51 uint8_t USBInterface::interfaceNumber() const
50 { 52 {
51 return info().interfaceNumber; 53 return info().interfaceNumber;
52 } 54 }
53 55
56 bool USBInterface::claimed() const
57 {
58 return m_device->isInterfaceClaimed(m_configurationIndex, m_interfaceIndex);
59 }
60
54 DEFINE_TRACE(USBInterface) 61 DEFINE_TRACE(USBInterface)
55 { 62 {
56 visitor->trace(m_configuration); 63 visitor->trace(m_device);
57 } 64 }
58 65
59 } // namespace blink 66 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698