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

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: Remove promise adapters, use WTF::bind instead. 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);
46 void onConfigurationSelected(bool success, size_t configurationIndex);
47 void onInterfaceClaimedOrUnclaimed(bool claimed, size_t interfaceIndex);
48 void onAlternateInterfaceSelected(bool success, size_t interfaceIndex, size_ t alternateIndex);
49 bool isInterfaceClaimed(size_t configurationIndex, size_t interfaceIndex) co nst; 40 bool isInterfaceClaimed(size_t configurationIndex, size_t interfaceIndex) co nst;
50 size_t selectedAlternateInterface(size_t interfaceIndex) const; 41 size_t selectedAlternateInterface(size_t interfaceIndex) const;
51 42
52 // IDL exposed interface: 43 // USBDevice.idl
53 String guid() const { return info().guid; } 44 String guid() const { return info().guid; }
54 uint8_t usbVersionMajor() { return info().usbVersionMajor; } 45 uint8_t usbVersionMajor() const { return info().usb_version_major; }
55 uint8_t usbVersionMinor() { return info().usbVersionMinor; } 46 uint8_t usbVersionMinor() const { return info().usb_version_minor; }
56 uint8_t usbVersionSubminor() { return info().usbVersionSubminor; } 47 uint8_t usbVersionSubminor() const { return info().usb_version_subminor; }
57 uint8_t deviceClass() { return info().deviceClass; } 48 uint8_t deviceClass() const { return info().class_code; }
58 uint8_t deviceSubclass() const { return info().deviceSubclass; } 49 uint8_t deviceSubclass() const { return info().subclass_code; }
59 uint8_t deviceProtocol() const { return info().deviceProtocol; } 50 uint8_t deviceProtocol() const { return info().protocol_code; }
60 uint16_t vendorId() const { return info().vendorID; } 51 uint16_t vendorId() const { return info().vendor_id; }
61 uint16_t productId() const { return info().productID; } 52 uint16_t productId() const { return info().product_id; }
62 uint8_t deviceVersionMajor() const { return info().deviceVersionMajor; } 53 uint8_t deviceVersionMajor() const { return info().device_version_major; }
63 uint8_t deviceVersionMinor() const { return info().deviceVersionMinor; } 54 uint8_t deviceVersionMinor() const { return info().device_version_minor; }
64 uint8_t deviceVersionSubminor() const { return info().deviceVersionSubminor; } 55 uint8_t deviceVersionSubminor() const { return info().device_version_submino r; }
65 String manufacturerName() const { return info().manufacturerName; } 56 String manufacturerName() const { return info().manufacturer_name; }
66 String productName() const { return info().productName; } 57 String productName() const { return info().product_name; }
67 String serialNumber() const { return info().serialNumber; } 58 String serialNumber() const { return info().serial_number; }
68 USBConfiguration* configuration() const; 59 USBConfiguration* configuration() const;
69 HeapVector<Member<USBConfiguration>> configurations() const; 60 HeapVector<Member<USBConfiguration>> configurations() const;
70 bool opened() const { return m_opened; } 61 bool opened() const { return m_opened; }
71 62
72 ScriptPromise open(ScriptState*); 63 ScriptPromise open(ScriptState*);
73 ScriptPromise close(ScriptState*); 64 ScriptPromise close(ScriptState*);
74 ScriptPromise selectConfiguration(ScriptState*, uint8_t configurationValue); 65 ScriptPromise selectConfiguration(ScriptState*, uint8_t configurationValue);
75 ScriptPromise claimInterface(ScriptState*, uint8_t interfaceNumber); 66 ScriptPromise claimInterface(ScriptState*, uint8_t interfaceNumber);
76 ScriptPromise releaseInterface(ScriptState*, uint8_t interfaceNumber); 67 ScriptPromise releaseInterface(ScriptState*, uint8_t interfaceNumber);
77 ScriptPromise selectAlternateInterface(ScriptState*, uint8_t interfaceNumber , uint8_t alternateSetting); 68 ScriptPromise selectAlternateInterface(ScriptState*, uint8_t interfaceNumber , uint8_t alternateSetting);
(...skipping 14 matching lines...) Expand all
92 83
93 private: 84 private:
94 int findConfigurationIndex(uint8_t configurationValue) const; 85 int findConfigurationIndex(uint8_t configurationValue) const;
95 int findInterfaceIndex(uint8_t interfaceNumber) const; 86 int findInterfaceIndex(uint8_t interfaceNumber) const;
96 int findAlternateIndex(size_t interfaceIndex, uint8_t alternateSetting) cons t; 87 int findAlternateIndex(size_t interfaceIndex, uint8_t alternateSetting) cons t;
97 bool ensureNoDeviceOrInterfaceChangeInProgress(ScriptPromiseResolver*) const ; 88 bool ensureNoDeviceOrInterfaceChangeInProgress(ScriptPromiseResolver*) const ;
98 bool ensureDeviceConfigured(ScriptPromiseResolver*) const; 89 bool ensureDeviceConfigured(ScriptPromiseResolver*) const;
99 bool ensureInterfaceClaimed(uint8_t interfaceNumber, ScriptPromiseResolver*) const; 90 bool ensureInterfaceClaimed(uint8_t interfaceNumber, ScriptPromiseResolver*) const;
100 bool ensureEndpointAvailable(bool inTransfer, uint8_t endpointNumber, Script PromiseResolver*) const; 91 bool ensureEndpointAvailable(bool inTransfer, uint8_t endpointNumber, Script PromiseResolver*) const;
101 bool anyInterfaceChangeInProgress() const; 92 bool anyInterfaceChangeInProgress() const;
102 bool convertControlTransferParameters(WebUSBDevice::TransferDirection, const USBControlTransferParameters&, WebUSBDevice::ControlTransferParameters*, Script PromiseResolver*) const; 93 device::usb::blink::ControlTransferParamsPtr convertControlTransferParameter s(const USBControlTransferParameters&, ScriptPromiseResolver*) const;
103 void setEndpointsForInterface(size_t interfaceIndex, bool set); 94 void setEndpointsForInterface(size_t interfaceIndex, bool set);
104 95
105 OwnPtr<WebUSBDevice> m_device; 96 void asyncOpen(ScriptPromiseResolver*, device::usb::blink::OpenDeviceError);
97 void asyncClose(ScriptPromiseResolver*);
98 void onDeviceOpenedOrClosed(bool);
99 void asyncSelectConfiguration(size_t configurationIndex, ScriptPromiseResolv er*, bool success);
100 void onConfigurationSelected(bool success, size_t configurationIndex);
101 void asyncClaimInterface(size_t interfaceIndex, ScriptPromiseResolver*, bool success);
102 void asyncReleaseInterface(size_t interfaceIndex, ScriptPromiseResolver*, bo ol success);
103 void onInterfaceClaimedOrUnclaimed(bool claimed, size_t interfaceIndex);
104 void asyncSelectAlternateInterface(size_t interfaceIndex, size_t alternateIn dex, ScriptPromiseResolver*, bool success);
105 void asyncControlTransferIn(ScriptPromiseResolver*, device::usb::blink::Tran sferStatus, mojo::WTFArray<uint8_t>);
106 void asyncControlTransferOut(unsigned, ScriptPromiseResolver*, device::usb:: blink::TransferStatus);
107 void asyncClearHalt(ScriptPromiseResolver*, bool success);
108 void asyncTransferIn(ScriptPromiseResolver*, device::usb::blink::TransferSta tus, mojo::WTFArray<uint8_t>);
109 void asyncTransferOut(unsigned, ScriptPromiseResolver*, device::usb::blink:: TransferStatus);
110 void asyncIsochronousTransferIn(ScriptPromiseResolver*, mojo::WTFArray<uint8 _t>, mojo::WTFArray<device::usb::blink::IsochronousPacketPtr>);
111 void asyncIsochronousTransferOut(ScriptPromiseResolver*, mojo::WTFArray<devi ce::usb::blink::IsochronousPacketPtr>);
112 void asyncReset(ScriptPromiseResolver*, bool success);
113
114 device::usb::blink::DeviceInfoPtr m_deviceInfo;
115 device::usb::blink::DevicePtr m_device;
116 HeapHashSet<Member<ScriptPromiseResolver>> m_deviceRequests;
106 bool m_opened; 117 bool m_opened;
107 bool m_deviceStateChangeInProgress; 118 bool m_deviceStateChangeInProgress;
108 int m_configurationIndex; 119 int m_configurationIndex;
109 WTF::BitVector m_claimedInterfaces; 120 WTF::BitVector m_claimedInterfaces;
110 WTF::BitVector m_interfaceStateChangeInProgress; 121 WTF::BitVector m_interfaceStateChangeInProgress;
111 WTF::Vector<size_t> m_selectedAlternates; 122 WTF::Vector<size_t> m_selectedAlternates;
112 WTF::BitVector m_inEndpoints; 123 WTF::BitVector m_inEndpoints;
113 WTF::BitVector m_outEndpoints; 124 WTF::BitVector m_outEndpoints;
114 }; 125 };
115 126
116 } // namespace blink 127 } // namespace blink
117 128
118 #endif // USBDevice_h 129 #endif // USBDevice_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698