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

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

Issue 1850023002: Consume Mojo services directly in Blink's WebUSB implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move promise adapter pattern into a header that can be shared. Created 4 years, 8 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 "device/usb/public/interfaces/device.mojom-blink.h"
12 #include "platform/heap/Handle.h" 13 #include "platform/heap/Handle.h"
13 #include "public/platform/modules/webusb/WebUSBDevice.h"
14 #include "public/platform/modules/webusb/WebUSBDeviceInfo.h"
15 #include "wtf/BitVector.h" 14 #include "wtf/BitVector.h"
16 #include "wtf/Vector.h" 15 #include "wtf/Vector.h"
17 16
18 namespace blink { 17 namespace blink {
19 18
20 class ScriptPromiseResolver; 19 class ScriptPromiseResolver;
21 class ScriptState; 20 class ScriptState;
22 class USBConfiguration; 21 class USBConfiguration;
23 class USBControlTransferParameters; 22 class USBControlTransferParameters;
24 23
25 class USBDevice 24 class USBDevice
26 : public GarbageCollectedFinalized<USBDevice> 25 : public GarbageCollectedFinalized<USBDevice>
27 , public ContextLifecycleObserver 26 , public ContextLifecycleObserver
28 , public ScriptWrappable { 27 , public ScriptWrappable {
29 USING_GARBAGE_COLLECTED_MIXIN(USBDevice); 28 USING_GARBAGE_COLLECTED_MIXIN(USBDevice);
30 DEFINE_WRAPPERTYPEINFO(); 29 DEFINE_WRAPPERTYPEINFO();
31 public: 30 public:
32 using WebType = OwnPtr<WebUSBDevice>; 31 static USBDevice* create(device::usb::blink::DeviceInfoPtr deviceInfo, devic e::usb::blink::DevicePtr device, ExecutionContext* context)
33
34 static USBDevice* create(PassOwnPtr<WebUSBDevice> device, ExecutionContext* context)
35 { 32 {
36 return new USBDevice(device, context); 33 return new USBDevice(std::move(deviceInfo), std::move(device), context);
37 } 34 }
38 35
39 static USBDevice* take(ScriptPromiseResolver*, PassOwnPtr<WebUSBDevice>); 36 explicit USBDevice(device::usb::blink::DeviceInfoPtr, device::usb::blink::De vicePtr, ExecutionContext*);
37 virtual ~USBDevice();
40 38
41 explicit USBDevice(PassOwnPtr<WebUSBDevice>, ExecutionContext*); 39 const device::usb::blink::DeviceInfo& info() const { return *m_deviceInfo; }
42 virtual ~USBDevice() { }
43
44 const WebUSBDeviceInfo& info() const { return m_device->info(); }
45 void onDeviceOpenedOrClosed(bool); 40 void onDeviceOpenedOrClosed(bool);
46 void onConfigurationSelected(bool success, size_t configurationIndex); 41 void onConfigurationSelected(bool success, size_t configurationIndex);
47 void onInterfaceClaimedOrUnclaimed(bool claimed, size_t interfaceIndex); 42 void onInterfaceClaimedOrUnclaimed(bool claimed, size_t interfaceIndex);
48 void onAlternateInterfaceSelected(bool success, size_t interfaceIndex, size_ t alternateIndex); 43 void onAlternateInterfaceSelected(bool success, size_t interfaceIndex, size_ t alternateIndex);
49 bool isInterfaceClaimed(size_t configurationIndex, size_t interfaceIndex) co nst; 44 bool isInterfaceClaimed(size_t configurationIndex, size_t interfaceIndex) co nst;
50 size_t selectedAlternateInterface(size_t interfaceIndex) const; 45 size_t selectedAlternateInterface(size_t interfaceIndex) const;
51 46
52 // IDL exposed interface: 47 // IDL exposed interface:
53 String guid() const { return info().guid; } 48 String guid() const { return info().guid; }
54 uint8_t usbVersionMajor() { return info().usbVersionMajor; } 49 uint8_t usbVersionMajor() const { return info().usb_version_major; }
55 uint8_t usbVersionMinor() { return info().usbVersionMinor; } 50 uint8_t usbVersionMinor() const { return info().usb_version_minor; }
56 uint8_t usbVersionSubminor() { return info().usbVersionSubminor; } 51 uint8_t usbVersionSubminor() const { return info().usb_version_subminor; }
57 uint8_t deviceClass() { return info().deviceClass; } 52 uint8_t deviceClass() const { return info().class_code; }
58 uint8_t deviceSubclass() const { return info().deviceSubclass; } 53 uint8_t deviceSubclass() const { return info().subclass_code; }
59 uint8_t deviceProtocol() const { return info().deviceProtocol; } 54 uint8_t deviceProtocol() const { return info().protocol_code; }
60 uint16_t vendorId() const { return info().vendorID; } 55 uint16_t vendorId() const { return info().vendor_id; }
61 uint16_t productId() const { return info().productID; } 56 uint16_t productId() const { return info().product_id; }
62 uint8_t deviceVersionMajor() const { return info().deviceVersionMajor; } 57 uint8_t deviceVersionMajor() const { return info().device_version_major; }
63 uint8_t deviceVersionMinor() const { return info().deviceVersionMinor; } 58 uint8_t deviceVersionMinor() const { return info().device_version_minor; }
64 uint8_t deviceVersionSubminor() const { return info().deviceVersionSubminor; } 59 uint8_t deviceVersionSubminor() const { return info().device_version_submino r; }
65 String manufacturerName() const { return info().manufacturerName; } 60 String manufacturerName() const { return info().manufacturer_name; }
66 String productName() const { return info().productName; } 61 String productName() const { return info().product_name; }
67 String serialNumber() const { return info().serialNumber; } 62 String serialNumber() const { return info().serial_number; }
68 USBConfiguration* configuration() const; 63 USBConfiguration* configuration() const;
69 HeapVector<Member<USBConfiguration>> configurations() const; 64 HeapVector<Member<USBConfiguration>> configurations() const;
70 bool opened() const { return m_opened; } 65 bool opened() const { return m_opened; }
71 66
72 ScriptPromise open(ScriptState*); 67 ScriptPromise open(ScriptState*);
73 ScriptPromise close(ScriptState*); 68 ScriptPromise close(ScriptState*);
74 ScriptPromise selectConfiguration(ScriptState*, uint8_t configurationValue); 69 ScriptPromise selectConfiguration(ScriptState*, uint8_t configurationValue);
75 ScriptPromise claimInterface(ScriptState*, uint8_t interfaceNumber); 70 ScriptPromise claimInterface(ScriptState*, uint8_t interfaceNumber);
76 ScriptPromise releaseInterface(ScriptState*, uint8_t interfaceNumber); 71 ScriptPromise releaseInterface(ScriptState*, uint8_t interfaceNumber);
77 ScriptPromise selectAlternateInterface(ScriptState*, uint8_t interfaceNumber , uint8_t alternateSetting); 72 ScriptPromise selectAlternateInterface(ScriptState*, uint8_t interfaceNumber , uint8_t alternateSetting);
(...skipping 14 matching lines...) Expand all
92 87
93 private: 88 private:
94 int findConfigurationIndex(uint8_t configurationValue) const; 89 int findConfigurationIndex(uint8_t configurationValue) const;
95 int findInterfaceIndex(uint8_t interfaceNumber) const; 90 int findInterfaceIndex(uint8_t interfaceNumber) const;
96 int findAlternateIndex(size_t interfaceIndex, uint8_t alternateSetting) cons t; 91 int findAlternateIndex(size_t interfaceIndex, uint8_t alternateSetting) cons t;
97 bool ensureNoDeviceOrInterfaceChangeInProgress(ScriptPromiseResolver*) const ; 92 bool ensureNoDeviceOrInterfaceChangeInProgress(ScriptPromiseResolver*) const ;
98 bool ensureDeviceConfigured(ScriptPromiseResolver*) const; 93 bool ensureDeviceConfigured(ScriptPromiseResolver*) const;
99 bool ensureInterfaceClaimed(uint8_t interfaceNumber, ScriptPromiseResolver*) const; 94 bool ensureInterfaceClaimed(uint8_t interfaceNumber, ScriptPromiseResolver*) const;
100 bool ensureEndpointAvailable(bool inTransfer, uint8_t endpointNumber, Script PromiseResolver*) const; 95 bool ensureEndpointAvailable(bool inTransfer, uint8_t endpointNumber, Script PromiseResolver*) const;
101 bool anyInterfaceChangeInProgress() const; 96 bool anyInterfaceChangeInProgress() const;
102 bool convertControlTransferParameters(WebUSBDevice::TransferDirection, const USBControlTransferParameters&, WebUSBDevice::ControlTransferParameters*, Script PromiseResolver*) const; 97 device::usb::blink::ControlTransferParamsPtr convertControlTransferParameter s(const USBControlTransferParameters&, ScriptPromiseResolver*) const;
103 void setEndpointsForInterface(size_t interfaceIndex, bool set); 98 void setEndpointsForInterface(size_t interfaceIndex, bool set);
104 99
105 OwnPtr<WebUSBDevice> m_device; 100 device::usb::blink::DeviceInfoPtr m_deviceInfo;
101 device::usb::blink::DevicePtr m_device;
106 bool m_opened; 102 bool m_opened;
107 bool m_deviceStateChangeInProgress; 103 bool m_deviceStateChangeInProgress;
108 int m_configurationIndex; 104 int m_configurationIndex;
109 WTF::BitVector m_claimedInterfaces; 105 WTF::BitVector m_claimedInterfaces;
110 WTF::BitVector m_interfaceStateChangeInProgress; 106 WTF::BitVector m_interfaceStateChangeInProgress;
111 WTF::Vector<size_t> m_selectedAlternates; 107 WTF::Vector<size_t> m_selectedAlternates;
112 WTF::BitVector m_inEndpoints; 108 WTF::BitVector m_inEndpoints;
113 WTF::BitVector m_outEndpoints; 109 WTF::BitVector m_outEndpoints;
114 }; 110 };
115 111
116 } // namespace blink 112 } // namespace blink
117 113
118 #endif // USBDevice_h 114 #endif // USBDevice_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698