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

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

Powered by Google App Engine
This is Rietveld 408576698