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

Side by Side Diff: Source/modules/webusb/USBAlternateInterface.cpp

Issue 1270983002: WebUSB bindings part 4 (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: update expected interface list Created 5 years, 4 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "modules/webusb/USBAlternateInterface.h"
7
8 #include "bindings/core/v8/ExceptionState.h"
9 #include "modules/webusb/USBEndpoint.h"
10 #include "modules/webusb/USBInterface.h"
11
12 namespace blink {
13
14 USBAlternateInterface* USBAlternateInterface::create(const USBInterface* interfa ce, size_t alternateIndex)
15 {
16 return new USBAlternateInterface(interface, alternateIndex);
17 }
18
19 USBAlternateInterface* USBAlternateInterface::create(const USBInterface* interfa ce, size_t alternateSetting, ExceptionState& exceptionState)
20 {
21 for (size_t i = 0; i < interface->info().alternates.size(); ++i) {
22 if (interface->info().alternates[i].alternateSetting == alternateSetting )
23 return USBAlternateInterface::create(interface, i);
24 }
25 exceptionState.throwRangeError("Invalid alternate index.");
Reilly Grant (use Gerrit) 2015/08/04 19:18:09 "Invalid alternate setting."
Ken Rockot(use gerrit already) 2015/08/04 19:29:14 Done.
26 return nullptr;
27 }
28
29 USBAlternateInterface::USBAlternateInterface(const USBInterface* interface, size _t alternateIndex)
30 : m_interface(interface)
31 , m_alternateIndex(alternateIndex)
32 {
33 ASSERT(m_interface);
34 ASSERT(m_alternateIndex < m_interface->info().alternates.size());
35 }
36
37 const WebUSBDeviceInfo::AlternateInterface& USBAlternateInterface::info() const
38 {
39 const WebUSBDeviceInfo::Interface& interfaceInfo = m_interface->info();
40 ASSERT(m_alternateIndex < interfaceInfo.alternates.size());
41 return interfaceInfo.alternates[m_alternateIndex];
42 }
43
44 uint8_t USBAlternateInterface::alternateSetting() const
45 {
46 return info().alternateSetting;
47 }
48
49 uint8_t USBAlternateInterface::interfaceClass() const
50 {
51 return info().classCode;
52 }
53
54 uint8_t USBAlternateInterface::interfaceSubclass() const
55 {
56 return info().subclassCode;
57 }
58
59 uint8_t USBAlternateInterface::interfaceProtocol() const
60 {
61 return info().protocolCode;
62 }
63
64 String USBAlternateInterface::interfaceName() const
65 {
66 return info().interfaceName;
67 }
68
69 HeapVector<Member<USBEndpoint>> USBAlternateInterface::endpoints() const
70 {
71 HeapVector<Member<USBEndpoint>> endpoints;
72 for (size_t i = 0; i < info().endpoints.size(); ++i)
73 endpoints.append(USBEndpoint::create(this, i));
74 return endpoints;
75 }
76
77 DEFINE_TRACE(USBAlternateInterface)
78 {
79 visitor->trace(m_interface);
80 }
81
82 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698