OLD | NEW |
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 #include "modules/webusb/USB.h" | 5 #include "modules/webusb/USB.h" |
6 | 6 |
7 #include "bindings/core/v8/ScriptPromise.h" | 7 #include "bindings/core/v8/ScriptPromise.h" |
8 #include "bindings/core/v8/ScriptPromiseResolver.h" | 8 #include "bindings/core/v8/ScriptPromiseResolver.h" |
9 #include "core/dom/DOMException.h" | 9 #include "core/dom/DOMException.h" |
10 #include "core/dom/Document.h" | 10 #include "core/dom/Document.h" |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 resolver->reject(DOMException::create(SecurityError, errorMessage)); | 124 resolver->reject(DOMException::create(SecurityError, errorMessage)); |
125 } else if (!UserGestureIndicator::consumeUserGesture()) { | 125 } else if (!UserGestureIndicator::consumeUserGesture()) { |
126 resolver->reject(DOMException::create( | 126 resolver->reject(DOMException::create( |
127 SecurityError, | 127 SecurityError, |
128 "Must be handling a user gesture to show a permission request.")); | 128 "Must be handling a user gesture to show a permission request.")); |
129 } else { | 129 } else { |
130 Vector<usb::DeviceFilterPtr> filters; | 130 Vector<usb::DeviceFilterPtr> filters; |
131 if (options.hasFilters()) { | 131 if (options.hasFilters()) { |
132 filters.reserveCapacity(options.filters().size()); | 132 filters.reserveCapacity(options.filters().size()); |
133 for (const auto& filter : options.filters()) | 133 for (const auto& filter : options.filters()) |
134 filters.append(convertDeviceFilter(filter)); | 134 filters.push_back(convertDeviceFilter(filter)); |
135 } | 135 } |
136 m_chooserServiceRequests.add(resolver); | 136 m_chooserServiceRequests.add(resolver); |
137 m_chooserService->GetPermission( | 137 m_chooserService->GetPermission( |
138 std::move(filters), convertToBaseCallback(WTF::bind( | 138 std::move(filters), convertToBaseCallback(WTF::bind( |
139 &USB::onGetPermission, wrapPersistent(this), | 139 &USB::onGetPermission, wrapPersistent(this), |
140 wrapPersistent(resolver)))); | 140 wrapPersistent(resolver)))); |
141 } | 141 } |
142 return promise; | 142 return promise; |
143 } | 143 } |
144 | 144 |
(...skipping 27 matching lines...) Expand all Loading... |
172 | 172 |
173 void USB::onGetDevices(ScriptPromiseResolver* resolver, | 173 void USB::onGetDevices(ScriptPromiseResolver* resolver, |
174 Vector<usb::DeviceInfoPtr> deviceInfos) { | 174 Vector<usb::DeviceInfoPtr> deviceInfos) { |
175 auto requestEntry = m_deviceManagerRequests.find(resolver); | 175 auto requestEntry = m_deviceManagerRequests.find(resolver); |
176 if (requestEntry == m_deviceManagerRequests.end()) | 176 if (requestEntry == m_deviceManagerRequests.end()) |
177 return; | 177 return; |
178 m_deviceManagerRequests.remove(requestEntry); | 178 m_deviceManagerRequests.remove(requestEntry); |
179 | 179 |
180 HeapVector<Member<USBDevice>> devices; | 180 HeapVector<Member<USBDevice>> devices; |
181 for (auto& deviceInfo : deviceInfos) | 181 for (auto& deviceInfo : deviceInfos) |
182 devices.append(getOrCreateDevice(std::move(deviceInfo))); | 182 devices.push_back(getOrCreateDevice(std::move(deviceInfo))); |
183 resolver->resolve(devices); | 183 resolver->resolve(devices); |
184 m_deviceManagerRequests.remove(resolver); | 184 m_deviceManagerRequests.remove(resolver); |
185 } | 185 } |
186 | 186 |
187 void USB::onGetPermission(ScriptPromiseResolver* resolver, | 187 void USB::onGetPermission(ScriptPromiseResolver* resolver, |
188 usb::DeviceInfoPtr deviceInfo) { | 188 usb::DeviceInfoPtr deviceInfo) { |
189 auto requestEntry = m_chooserServiceRequests.find(resolver); | 189 auto requestEntry = m_chooserServiceRequests.find(resolver); |
190 if (requestEntry == m_chooserServiceRequests.end()) | 190 if (requestEntry == m_chooserServiceRequests.end()) |
191 return; | 191 return; |
192 m_chooserServiceRequests.remove(requestEntry); | 192 m_chooserServiceRequests.remove(requestEntry); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 | 247 |
248 DEFINE_TRACE(USB) { | 248 DEFINE_TRACE(USB) { |
249 EventTargetWithInlineData::trace(visitor); | 249 EventTargetWithInlineData::trace(visitor); |
250 ContextLifecycleObserver::trace(visitor); | 250 ContextLifecycleObserver::trace(visitor); |
251 visitor->trace(m_deviceManagerRequests); | 251 visitor->trace(m_deviceManagerRequests); |
252 visitor->trace(m_chooserServiceRequests); | 252 visitor->trace(m_chooserServiceRequests); |
253 visitor->trace(m_deviceCache); | 253 visitor->trace(m_deviceCache); |
254 } | 254 } |
255 | 255 |
256 } // namespace blink | 256 } // namespace blink |
OLD | NEW |