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

Side by Side Diff: third_party/WebKit/Source/modules/webusb/USBDevice.h

Issue 1814603002: Track USB device interface claim state in Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix webexposed test. 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 #ifndef USBDevice_h 5 #ifndef USBDevice_h
6 #define USBDevice_h 6 #define USBDevice_h
7 7
8 #include "bindings/core/v8/ScriptPromise.h" 8 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptWrappable.h" 9 #include "bindings/core/v8/ScriptWrappable.h"
10 #include "bindings/modules/v8/UnionTypesModules.h" 10 #include "bindings/modules/v8/UnionTypesModules.h"
11 #include "core/dom/ContextLifecycleObserver.h" 11 #include "core/dom/ContextLifecycleObserver.h"
12 #include "platform/heap/Handle.h" 12 #include "platform/heap/Handle.h"
13 #include "public/platform/modules/webusb/WebUSBDevice.h" 13 #include "public/platform/modules/webusb/WebUSBDevice.h"
14 #include "public/platform/modules/webusb/WebUSBDeviceInfo.h" 14 #include "public/platform/modules/webusb/WebUSBDeviceInfo.h"
15 #include "wtf/BitVector.h"
15 #include "wtf/Vector.h" 16 #include "wtf/Vector.h"
16 17
17 namespace blink { 18 namespace blink {
18 19
19 class ScriptPromiseResolver; 20 class ScriptPromiseResolver;
20 class ScriptState; 21 class ScriptState;
21 class USBConfiguration; 22 class USBConfiguration;
22 class USBControlTransferParameters; 23 class USBControlTransferParameters;
23 24
24 class USBDevice 25 class USBDevice
(...skipping 11 matching lines...) Expand all
36 } 37 }
37 38
38 static USBDevice* take(ScriptPromiseResolver*, PassOwnPtr<WebUSBDevice>); 39 static USBDevice* take(ScriptPromiseResolver*, PassOwnPtr<WebUSBDevice>);
39 40
40 explicit USBDevice(PassOwnPtr<WebUSBDevice>, ExecutionContext*); 41 explicit USBDevice(PassOwnPtr<WebUSBDevice>, ExecutionContext*);
41 virtual ~USBDevice() { } 42 virtual ~USBDevice() { }
42 43
43 const WebUSBDeviceInfo& info() const { return m_device->info(); } 44 const WebUSBDeviceInfo& info() const { return m_device->info(); }
44 void onDeviceOpenedOrClosed(bool); 45 void onDeviceOpenedOrClosed(bool);
45 void onConfigurationSelected(bool success, int configurationIndex); 46 void onConfigurationSelected(bool success, int configurationIndex);
47 void onInterfaceClaimedOrUnclaimed(bool claimed, int interfaceIndex);
juncai 2016/03/17 01:21:12 interfaceIndex is int type in this function, but i
Reilly Grant (use Gerrit) 2016/03/17 17:07:01 Fixed.
48 bool isInterfaceClaimed(size_t configurationIndex, size_t interfaceIndex) co nst;
46 49
47 // IDL exposed interface: 50 // IDL exposed interface:
48 String guid() const { return info().guid; } 51 String guid() const { return info().guid; }
49 uint8_t usbVersionMajor() { return info().usbVersionMajor; } 52 uint8_t usbVersionMajor() { return info().usbVersionMajor; }
50 uint8_t usbVersionMinor() { return info().usbVersionMinor; } 53 uint8_t usbVersionMinor() { return info().usbVersionMinor; }
51 uint8_t usbVersionSubminor() { return info().usbVersionSubminor; } 54 uint8_t usbVersionSubminor() { return info().usbVersionSubminor; }
52 uint8_t deviceClass() { return info().deviceClass; } 55 uint8_t deviceClass() { return info().deviceClass; }
53 uint8_t deviceSubclass() const { return info().deviceSubclass; } 56 uint8_t deviceSubclass() const { return info().deviceSubclass; }
54 uint8_t deviceProtocol() const { return info().deviceProtocol; } 57 uint8_t deviceProtocol() const { return info().deviceProtocol; }
55 uint16_t vendorId() const { return info().vendorID; } 58 uint16_t vendorId() const { return info().vendorID; }
(...skipping 10 matching lines...) Expand all
66 69
67 ScriptPromise open(ScriptState*); 70 ScriptPromise open(ScriptState*);
68 ScriptPromise close(ScriptState*); 71 ScriptPromise close(ScriptState*);
69 ScriptPromise selectConfiguration(ScriptState*, uint8_t configurationValue); 72 ScriptPromise selectConfiguration(ScriptState*, uint8_t configurationValue);
70 ScriptPromise claimInterface(ScriptState*, uint8_t interfaceNumber); 73 ScriptPromise claimInterface(ScriptState*, uint8_t interfaceNumber);
71 ScriptPromise releaseInterface(ScriptState*, uint8_t interfaceNumber); 74 ScriptPromise releaseInterface(ScriptState*, uint8_t interfaceNumber);
72 ScriptPromise setInterface(ScriptState*, uint8_t interfaceNumber, uint8_t al ternateSetting); 75 ScriptPromise setInterface(ScriptState*, uint8_t interfaceNumber, uint8_t al ternateSetting);
73 ScriptPromise controlTransferIn(ScriptState*, const USBControlTransferParame ters& setup, unsigned length); 76 ScriptPromise controlTransferIn(ScriptState*, const USBControlTransferParame ters& setup, unsigned length);
74 ScriptPromise controlTransferOut(ScriptState*, const USBControlTransferParam eters& setup); 77 ScriptPromise controlTransferOut(ScriptState*, const USBControlTransferParam eters& setup);
75 ScriptPromise controlTransferOut(ScriptState*, const USBControlTransferParam eters& setup, const ArrayBufferOrArrayBufferView& data); 78 ScriptPromise controlTransferOut(ScriptState*, const USBControlTransferParam eters& setup, const ArrayBufferOrArrayBufferView& data);
76 ScriptPromise clearHalt(ScriptState*, uint8_t endpointNumber); 79 ScriptPromise clearHalt(ScriptState*, String direction, uint8_t endpointNumb er);
77 ScriptPromise transferIn(ScriptState*, uint8_t endpointNumber, unsigned leng th); 80 ScriptPromise transferIn(ScriptState*, uint8_t endpointNumber, unsigned leng th);
78 ScriptPromise transferOut(ScriptState*, uint8_t endpointNumber, const ArrayB ufferOrArrayBufferView& data); 81 ScriptPromise transferOut(ScriptState*, uint8_t endpointNumber, const ArrayB ufferOrArrayBufferView& data);
79 ScriptPromise isochronousTransferIn(ScriptState*, uint8_t endpointNumber, Ve ctor<unsigned> packetLengths); 82 ScriptPromise isochronousTransferIn(ScriptState*, uint8_t endpointNumber, Ve ctor<unsigned> packetLengths);
80 ScriptPromise isochronousTransferOut(ScriptState*, uint8_t endpointNumber, c onst ArrayBufferOrArrayBufferView& data, Vector<unsigned> packetLengths); 83 ScriptPromise isochronousTransferOut(ScriptState*, uint8_t endpointNumber, c onst ArrayBufferOrArrayBufferView& data, Vector<unsigned> packetLengths);
81 ScriptPromise reset(ScriptState*); 84 ScriptPromise reset(ScriptState*);
82 85
83 void contextDestroyed() override; 86 void contextDestroyed() override;
84 87
85 DECLARE_TRACE(); 88 DECLARE_TRACE();
86 89
87 private: 90 private:
88 int findConfigurationIndex(uint8_t configurationValue) const; 91 int findConfigurationIndex(uint8_t configurationValue) const;
92 int findInterfaceIndex(uint8_t interfaceNumber) const;
89 bool ensureDeviceConfigured(ScriptPromiseResolver*) const; 93 bool ensureDeviceConfigured(ScriptPromiseResolver*) const;
94 bool ensureInterfaceClaimed(uint8_t interfaceNumber, ScriptPromiseResolver*) const;
95 bool ensureEndpointAvailable(bool inTransfer, uint8_t endpointNumber, Script PromiseResolver*) const;
96 bool anyInterfaceChangeInProgress() const;
90 97
91 OwnPtr<WebUSBDevice> m_device; 98 OwnPtr<WebUSBDevice> m_device;
92 bool m_opened; 99 bool m_opened;
93 bool m_deviceStateChangeInProgress; 100 bool m_deviceStateChangeInProgress;
94 int m_configurationIndex; 101 int m_configurationIndex;
102 WTF::BitVector m_claimedInterfaces;
103 WTF::BitVector m_interfaceStateChangeInProgress;
95 }; 104 };
96 105
97 } // namespace blink 106 } // namespace blink
98 107
99 #endif // USBDevice_h 108 #endif // USBDevice_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698