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

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

Issue 2657443005: Migrate WTF::HashSet::add() to ::insert() [part 1 of N] (Closed)
Patch Set: Created 3 years, 10 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 #include "modules/webusb/USBDevice.h" 5 #include "modules/webusb/USBDevice.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 "bindings/core/v8/ToV8.h" 9 #include "bindings/core/v8/ToV8.h"
10 #include "core/dom/DOMArrayBuffer.h" 10 #include "core/dom/DOMArrayBuffer.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 UseCounter::count(scriptState->getExecutionContext(), 147 UseCounter::count(scriptState->getExecutionContext(),
148 UseCounter::UsbDeviceOpen); 148 UseCounter::UsbDeviceOpen);
149 149
150 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 150 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
151 ScriptPromise promise = resolver->promise(); 151 ScriptPromise promise = resolver->promise();
152 if (ensureNoDeviceOrInterfaceChangeInProgress(resolver)) { 152 if (ensureNoDeviceOrInterfaceChangeInProgress(resolver)) {
153 if (m_opened) { 153 if (m_opened) {
154 resolver->resolve(); 154 resolver->resolve();
155 } else { 155 } else {
156 m_deviceStateChangeInProgress = true; 156 m_deviceStateChangeInProgress = true;
157 m_deviceRequests.add(resolver); 157 m_deviceRequests.insert(resolver);
158 m_device->Open(convertToBaseCallback( 158 m_device->Open(convertToBaseCallback(
159 WTF::bind(&USBDevice::asyncOpen, wrapPersistent(this), 159 WTF::bind(&USBDevice::asyncOpen, wrapPersistent(this),
160 wrapPersistent(resolver)))); 160 wrapPersistent(resolver))));
161 } 161 }
162 } 162 }
163 return promise; 163 return promise;
164 } 164 }
165 165
166 ScriptPromise USBDevice::close(ScriptState* scriptState) { 166 ScriptPromise USBDevice::close(ScriptState* scriptState) {
167 UseCounter::count(scriptState->getExecutionContext(), 167 UseCounter::count(scriptState->getExecutionContext(),
168 UseCounter::UsbDeviceClose); 168 UseCounter::UsbDeviceClose);
169 169
170 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 170 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
171 ScriptPromise promise = resolver->promise(); 171 ScriptPromise promise = resolver->promise();
172 if (ensureNoDeviceOrInterfaceChangeInProgress(resolver)) { 172 if (ensureNoDeviceOrInterfaceChangeInProgress(resolver)) {
173 if (!m_opened) { 173 if (!m_opened) {
174 resolver->resolve(); 174 resolver->resolve();
175 } else { 175 } else {
176 m_deviceStateChangeInProgress = true; 176 m_deviceStateChangeInProgress = true;
177 m_deviceRequests.add(resolver); 177 m_deviceRequests.insert(resolver);
178 m_device->Close(convertToBaseCallback( 178 m_device->Close(convertToBaseCallback(
179 WTF::bind(&USBDevice::asyncClose, wrapPersistent(this), 179 WTF::bind(&USBDevice::asyncClose, wrapPersistent(this),
180 wrapPersistent(resolver)))); 180 wrapPersistent(resolver))));
181 } 181 }
182 } 182 }
183 return promise; 183 return promise;
184 } 184 }
185 185
186 ScriptPromise USBDevice::selectConfiguration(ScriptState* scriptState, 186 ScriptPromise USBDevice::selectConfiguration(ScriptState* scriptState,
187 uint8_t configurationValue) { 187 uint8_t configurationValue) {
188 UseCounter::count(scriptState->getExecutionContext(), 188 UseCounter::count(scriptState->getExecutionContext(),
189 UseCounter::UsbDeviceSelectConfiguration); 189 UseCounter::UsbDeviceSelectConfiguration);
190 190
191 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 191 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
192 ScriptPromise promise = resolver->promise(); 192 ScriptPromise promise = resolver->promise();
193 if (ensureNoDeviceOrInterfaceChangeInProgress(resolver)) { 193 if (ensureNoDeviceOrInterfaceChangeInProgress(resolver)) {
194 if (!m_opened) { 194 if (!m_opened) {
195 resolver->reject(DOMException::create(InvalidStateError, kOpenRequired)); 195 resolver->reject(DOMException::create(InvalidStateError, kOpenRequired));
196 } else { 196 } else {
197 int configurationIndex = findConfigurationIndex(configurationValue); 197 int configurationIndex = findConfigurationIndex(configurationValue);
198 if (configurationIndex == -1) { 198 if (configurationIndex == -1) {
199 resolver->reject(DOMException::create(NotFoundError, 199 resolver->reject(DOMException::create(NotFoundError,
200 "The configuration value " 200 "The configuration value "
201 "provided is not supported by " 201 "provided is not supported by "
202 "the device.")); 202 "the device."));
203 } else if (m_configurationIndex == configurationIndex) { 203 } else if (m_configurationIndex == configurationIndex) {
204 resolver->resolve(); 204 resolver->resolve();
205 } else { 205 } else {
206 m_deviceStateChangeInProgress = true; 206 m_deviceStateChangeInProgress = true;
207 m_deviceRequests.add(resolver); 207 m_deviceRequests.insert(resolver);
208 m_device->SetConfiguration( 208 m_device->SetConfiguration(
209 configurationValue, 209 configurationValue,
210 convertToBaseCallback(WTF::bind( 210 convertToBaseCallback(WTF::bind(
211 &USBDevice::asyncSelectConfiguration, wrapPersistent(this), 211 &USBDevice::asyncSelectConfiguration, wrapPersistent(this),
212 configurationIndex, wrapPersistent(resolver)))); 212 configurationIndex, wrapPersistent(resolver))));
213 } 213 }
214 } 214 }
215 } 215 }
216 return promise; 216 return promise;
217 } 217 }
218 218
219 ScriptPromise USBDevice::claimInterface(ScriptState* scriptState, 219 ScriptPromise USBDevice::claimInterface(ScriptState* scriptState,
220 uint8_t interfaceNumber) { 220 uint8_t interfaceNumber) {
221 UseCounter::count(scriptState->getExecutionContext(), 221 UseCounter::count(scriptState->getExecutionContext(),
222 UseCounter::UsbDeviceClaimInterface); 222 UseCounter::UsbDeviceClaimInterface);
223 223
224 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 224 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
225 ScriptPromise promise = resolver->promise(); 225 ScriptPromise promise = resolver->promise();
226 if (ensureDeviceConfigured(resolver)) { 226 if (ensureDeviceConfigured(resolver)) {
227 int interfaceIndex = findInterfaceIndex(interfaceNumber); 227 int interfaceIndex = findInterfaceIndex(interfaceNumber);
228 if (interfaceIndex == -1) { 228 if (interfaceIndex == -1) {
229 resolver->reject(DOMException::create(NotFoundError, kInterfaceNotFound)); 229 resolver->reject(DOMException::create(NotFoundError, kInterfaceNotFound));
230 } else if (m_interfaceStateChangeInProgress.get(interfaceIndex)) { 230 } else if (m_interfaceStateChangeInProgress.get(interfaceIndex)) {
231 resolver->reject(DOMException::create(InvalidStateError, 231 resolver->reject(DOMException::create(InvalidStateError,
232 kInterfaceStateChangeInProgress)); 232 kInterfaceStateChangeInProgress));
233 } else if (m_claimedInterfaces.get(interfaceIndex)) { 233 } else if (m_claimedInterfaces.get(interfaceIndex)) {
234 resolver->resolve(); 234 resolver->resolve();
235 } else { 235 } else {
236 m_interfaceStateChangeInProgress.set(interfaceIndex); 236 m_interfaceStateChangeInProgress.set(interfaceIndex);
237 m_deviceRequests.add(resolver); 237 m_deviceRequests.insert(resolver);
238 m_device->ClaimInterface( 238 m_device->ClaimInterface(
239 interfaceNumber, 239 interfaceNumber,
240 convertToBaseCallback(WTF::bind(&USBDevice::asyncClaimInterface, 240 convertToBaseCallback(WTF::bind(&USBDevice::asyncClaimInterface,
241 wrapPersistent(this), interfaceIndex, 241 wrapPersistent(this), interfaceIndex,
242 wrapPersistent(resolver)))); 242 wrapPersistent(resolver))));
243 } 243 }
244 } 244 }
245 return promise; 245 return promise;
246 } 246 }
247 247
(...skipping 14 matching lines...) Expand all
262 } else if (m_interfaceStateChangeInProgress.get(interfaceIndex)) { 262 } else if (m_interfaceStateChangeInProgress.get(interfaceIndex)) {
263 resolver->reject(DOMException::create(InvalidStateError, 263 resolver->reject(DOMException::create(InvalidStateError,
264 kInterfaceStateChangeInProgress)); 264 kInterfaceStateChangeInProgress));
265 } else if (!m_claimedInterfaces.get(interfaceIndex)) { 265 } else if (!m_claimedInterfaces.get(interfaceIndex)) {
266 resolver->resolve(); 266 resolver->resolve();
267 } else { 267 } else {
268 // Mark this interface's endpoints unavailable while its state is 268 // Mark this interface's endpoints unavailable while its state is
269 // changing. 269 // changing.
270 setEndpointsForInterface(interfaceIndex, false); 270 setEndpointsForInterface(interfaceIndex, false);
271 m_interfaceStateChangeInProgress.set(interfaceIndex); 271 m_interfaceStateChangeInProgress.set(interfaceIndex);
272 m_deviceRequests.add(resolver); 272 m_deviceRequests.insert(resolver);
273 m_device->ReleaseInterface( 273 m_device->ReleaseInterface(
274 interfaceNumber, 274 interfaceNumber,
275 convertToBaseCallback(WTF::bind(&USBDevice::asyncReleaseInterface, 275 convertToBaseCallback(WTF::bind(&USBDevice::asyncReleaseInterface,
276 wrapPersistent(this), interfaceIndex, 276 wrapPersistent(this), interfaceIndex,
277 wrapPersistent(resolver)))); 277 wrapPersistent(resolver))));
278 } 278 }
279 } 279 }
280 return promise; 280 return promise;
281 } 281 }
282 282
(...skipping 13 matching lines...) Expand all
296 if (alternateIndex == -1) { 296 if (alternateIndex == -1) {
297 resolver->reject(DOMException::create(NotFoundError, 297 resolver->reject(DOMException::create(NotFoundError,
298 "The alternate setting provided is " 298 "The alternate setting provided is "
299 "not supported by the device in " 299 "not supported by the device in "
300 "its current configuration.")); 300 "its current configuration."));
301 } else { 301 } else {
302 // Mark this old alternate interface's endpoints unavailable while 302 // Mark this old alternate interface's endpoints unavailable while
303 // the change is in progress. 303 // the change is in progress.
304 setEndpointsForInterface(interfaceIndex, false); 304 setEndpointsForInterface(interfaceIndex, false);
305 m_interfaceStateChangeInProgress.set(interfaceIndex); 305 m_interfaceStateChangeInProgress.set(interfaceIndex);
306 m_deviceRequests.add(resolver); 306 m_deviceRequests.insert(resolver);
307 m_device->SetInterfaceAlternateSetting( 307 m_device->SetInterfaceAlternateSetting(
308 interfaceNumber, alternateSetting, 308 interfaceNumber, alternateSetting,
309 convertToBaseCallback(WTF::bind( 309 convertToBaseCallback(WTF::bind(
310 &USBDevice::asyncSelectAlternateInterface, wrapPersistent(this), 310 &USBDevice::asyncSelectAlternateInterface, wrapPersistent(this),
311 interfaceNumber, alternateSetting, wrapPersistent(resolver)))); 311 interfaceNumber, alternateSetting, wrapPersistent(resolver))));
312 } 312 }
313 } 313 }
314 return promise; 314 return promise;
315 } 315 }
316 316
317 ScriptPromise USBDevice::controlTransferIn( 317 ScriptPromise USBDevice::controlTransferIn(
318 ScriptState* scriptState, 318 ScriptState* scriptState,
319 const USBControlTransferParameters& setup, 319 const USBControlTransferParameters& setup,
320 unsigned length) { 320 unsigned length) {
321 UseCounter::count(scriptState->getExecutionContext(), 321 UseCounter::count(scriptState->getExecutionContext(),
322 UseCounter::UsbDeviceControlTransferIn); 322 UseCounter::UsbDeviceControlTransferIn);
323 323
324 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 324 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
325 ScriptPromise promise = resolver->promise(); 325 ScriptPromise promise = resolver->promise();
326 if (ensureDeviceConfigured(resolver)) { 326 if (ensureDeviceConfigured(resolver)) {
327 auto parameters = convertControlTransferParameters(setup, resolver); 327 auto parameters = convertControlTransferParameters(setup, resolver);
328 if (parameters) { 328 if (parameters) {
329 m_deviceRequests.add(resolver); 329 m_deviceRequests.insert(resolver);
330 m_device->ControlTransferIn( 330 m_device->ControlTransferIn(
331 std::move(parameters), length, 0, 331 std::move(parameters), length, 0,
332 convertToBaseCallback(WTF::bind(&USBDevice::asyncControlTransferIn, 332 convertToBaseCallback(WTF::bind(&USBDevice::asyncControlTransferIn,
333 wrapPersistent(this), 333 wrapPersistent(this),
334 wrapPersistent(resolver)))); 334 wrapPersistent(resolver))));
335 } 335 }
336 } 336 }
337 return promise; 337 return promise;
338 } 338 }
339 339
340 ScriptPromise USBDevice::controlTransferOut( 340 ScriptPromise USBDevice::controlTransferOut(
341 ScriptState* scriptState, 341 ScriptState* scriptState,
342 const USBControlTransferParameters& setup) { 342 const USBControlTransferParameters& setup) {
343 UseCounter::count(scriptState->getExecutionContext(), 343 UseCounter::count(scriptState->getExecutionContext(),
344 UseCounter::UsbDeviceControlTransferOut); 344 UseCounter::UsbDeviceControlTransferOut);
345 345
346 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 346 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
347 ScriptPromise promise = resolver->promise(); 347 ScriptPromise promise = resolver->promise();
348 if (ensureDeviceConfigured(resolver)) { 348 if (ensureDeviceConfigured(resolver)) {
349 auto parameters = convertControlTransferParameters(setup, resolver); 349 auto parameters = convertControlTransferParameters(setup, resolver);
350 if (parameters) { 350 if (parameters) {
351 m_deviceRequests.add(resolver); 351 m_deviceRequests.insert(resolver);
352 m_device->ControlTransferOut( 352 m_device->ControlTransferOut(
353 std::move(parameters), Vector<uint8_t>(), 0, 353 std::move(parameters), Vector<uint8_t>(), 0,
354 convertToBaseCallback(WTF::bind(&USBDevice::asyncControlTransferOut, 354 convertToBaseCallback(WTF::bind(&USBDevice::asyncControlTransferOut,
355 wrapPersistent(this), 0, 355 wrapPersistent(this), 0,
356 wrapPersistent(resolver)))); 356 wrapPersistent(resolver))));
357 } 357 }
358 } 358 }
359 return promise; 359 return promise;
360 } 360 }
361 361
362 ScriptPromise USBDevice::controlTransferOut( 362 ScriptPromise USBDevice::controlTransferOut(
363 ScriptState* scriptState, 363 ScriptState* scriptState,
364 const USBControlTransferParameters& setup, 364 const USBControlTransferParameters& setup,
365 const ArrayBufferOrArrayBufferView& data) { 365 const ArrayBufferOrArrayBufferView& data) {
366 UseCounter::count(scriptState->getExecutionContext(), 366 UseCounter::count(scriptState->getExecutionContext(),
367 UseCounter::UsbDeviceControlTransferOut); 367 UseCounter::UsbDeviceControlTransferOut);
368 368
369 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 369 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
370 ScriptPromise promise = resolver->promise(); 370 ScriptPromise promise = resolver->promise();
371 if (ensureDeviceConfigured(resolver)) { 371 if (ensureDeviceConfigured(resolver)) {
372 auto parameters = convertControlTransferParameters(setup, resolver); 372 auto parameters = convertControlTransferParameters(setup, resolver);
373 if (parameters) { 373 if (parameters) {
374 Vector<uint8_t> buffer = convertBufferSource(data); 374 Vector<uint8_t> buffer = convertBufferSource(data);
375 unsigned transferLength = buffer.size(); 375 unsigned transferLength = buffer.size();
376 m_deviceRequests.add(resolver); 376 m_deviceRequests.insert(resolver);
377 m_device->ControlTransferOut( 377 m_device->ControlTransferOut(
378 std::move(parameters), buffer, 0, 378 std::move(parameters), buffer, 0,
379 convertToBaseCallback(WTF::bind(&USBDevice::asyncControlTransferOut, 379 convertToBaseCallback(WTF::bind(&USBDevice::asyncControlTransferOut,
380 wrapPersistent(this), transferLength, 380 wrapPersistent(this), transferLength,
381 wrapPersistent(resolver)))); 381 wrapPersistent(resolver))));
382 } 382 }
383 } 383 }
384 return promise; 384 return promise;
385 } 385 }
386 386
387 ScriptPromise USBDevice::clearHalt(ScriptState* scriptState, 387 ScriptPromise USBDevice::clearHalt(ScriptState* scriptState,
388 String direction, 388 String direction,
389 uint8_t endpointNumber) { 389 uint8_t endpointNumber) {
390 UseCounter::count(scriptState->getExecutionContext(), 390 UseCounter::count(scriptState->getExecutionContext(),
391 UseCounter::UsbDeviceClearHalt); 391 UseCounter::UsbDeviceClearHalt);
392 392
393 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 393 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
394 ScriptPromise promise = resolver->promise(); 394 ScriptPromise promise = resolver->promise();
395 if (ensureEndpointAvailable(direction == "in", endpointNumber, resolver)) { 395 if (ensureEndpointAvailable(direction == "in", endpointNumber, resolver)) {
396 m_deviceRequests.add(resolver); 396 m_deviceRequests.insert(resolver);
397 m_device->ClearHalt(endpointNumber, 397 m_device->ClearHalt(endpointNumber,
398 convertToBaseCallback(WTF::bind( 398 convertToBaseCallback(WTF::bind(
399 &USBDevice::asyncClearHalt, wrapPersistent(this), 399 &USBDevice::asyncClearHalt, wrapPersistent(this),
400 wrapPersistent(resolver)))); 400 wrapPersistent(resolver))));
401 } 401 }
402 return promise; 402 return promise;
403 } 403 }
404 404
405 ScriptPromise USBDevice::transferIn(ScriptState* scriptState, 405 ScriptPromise USBDevice::transferIn(ScriptState* scriptState,
406 uint8_t endpointNumber, 406 uint8_t endpointNumber,
407 unsigned length) { 407 unsigned length) {
408 UseCounter::count(scriptState->getExecutionContext(), 408 UseCounter::count(scriptState->getExecutionContext(),
409 UseCounter::UsbDeviceTransferIn); 409 UseCounter::UsbDeviceTransferIn);
410 410
411 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 411 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
412 ScriptPromise promise = resolver->promise(); 412 ScriptPromise promise = resolver->promise();
413 if (ensureEndpointAvailable(true /* in */, endpointNumber, resolver)) { 413 if (ensureEndpointAvailable(true /* in */, endpointNumber, resolver)) {
414 m_deviceRequests.add(resolver); 414 m_deviceRequests.insert(resolver);
415 m_device->GenericTransferIn( 415 m_device->GenericTransferIn(
416 endpointNumber, length, 0, 416 endpointNumber, length, 0,
417 convertToBaseCallback(WTF::bind(&USBDevice::asyncTransferIn, 417 convertToBaseCallback(WTF::bind(&USBDevice::asyncTransferIn,
418 wrapPersistent(this), 418 wrapPersistent(this),
419 wrapPersistent(resolver)))); 419 wrapPersistent(resolver))));
420 } 420 }
421 return promise; 421 return promise;
422 } 422 }
423 423
424 ScriptPromise USBDevice::transferOut(ScriptState* scriptState, 424 ScriptPromise USBDevice::transferOut(ScriptState* scriptState,
425 uint8_t endpointNumber, 425 uint8_t endpointNumber,
426 const ArrayBufferOrArrayBufferView& data) { 426 const ArrayBufferOrArrayBufferView& data) {
427 UseCounter::count(scriptState->getExecutionContext(), 427 UseCounter::count(scriptState->getExecutionContext(),
428 UseCounter::UsbDeviceTransferOut); 428 UseCounter::UsbDeviceTransferOut);
429 429
430 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 430 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
431 ScriptPromise promise = resolver->promise(); 431 ScriptPromise promise = resolver->promise();
432 if (ensureEndpointAvailable(false /* out */, endpointNumber, resolver)) { 432 if (ensureEndpointAvailable(false /* out */, endpointNumber, resolver)) {
433 Vector<uint8_t> buffer = convertBufferSource(data); 433 Vector<uint8_t> buffer = convertBufferSource(data);
434 unsigned transferLength = buffer.size(); 434 unsigned transferLength = buffer.size();
435 m_deviceRequests.add(resolver); 435 m_deviceRequests.insert(resolver);
436 m_device->GenericTransferOut( 436 m_device->GenericTransferOut(
437 endpointNumber, buffer, 0, 437 endpointNumber, buffer, 0,
438 convertToBaseCallback(WTF::bind(&USBDevice::asyncTransferOut, 438 convertToBaseCallback(WTF::bind(&USBDevice::asyncTransferOut,
439 wrapPersistent(this), transferLength, 439 wrapPersistent(this), transferLength,
440 wrapPersistent(resolver)))); 440 wrapPersistent(resolver))));
441 } 441 }
442 return promise; 442 return promise;
443 } 443 }
444 444
445 ScriptPromise USBDevice::isochronousTransferIn(ScriptState* scriptState, 445 ScriptPromise USBDevice::isochronousTransferIn(ScriptState* scriptState,
446 uint8_t endpointNumber, 446 uint8_t endpointNumber,
447 Vector<unsigned> packetLengths) { 447 Vector<unsigned> packetLengths) {
448 UseCounter::count(scriptState->getExecutionContext(), 448 UseCounter::count(scriptState->getExecutionContext(),
449 UseCounter::UsbDeviceIsochronousTransferIn); 449 UseCounter::UsbDeviceIsochronousTransferIn);
450 450
451 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 451 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
452 ScriptPromise promise = resolver->promise(); 452 ScriptPromise promise = resolver->promise();
453 if (ensureEndpointAvailable(true /* in */, endpointNumber, resolver)) { 453 if (ensureEndpointAvailable(true /* in */, endpointNumber, resolver)) {
454 m_deviceRequests.add(resolver); 454 m_deviceRequests.insert(resolver);
455 m_device->IsochronousTransferIn( 455 m_device->IsochronousTransferIn(
456 endpointNumber, packetLengths, 0, 456 endpointNumber, packetLengths, 0,
457 convertToBaseCallback(WTF::bind(&USBDevice::asyncIsochronousTransferIn, 457 convertToBaseCallback(WTF::bind(&USBDevice::asyncIsochronousTransferIn,
458 wrapPersistent(this), 458 wrapPersistent(this),
459 wrapPersistent(resolver)))); 459 wrapPersistent(resolver))));
460 } 460 }
461 return promise; 461 return promise;
462 } 462 }
463 463
464 ScriptPromise USBDevice::isochronousTransferOut( 464 ScriptPromise USBDevice::isochronousTransferOut(
465 ScriptState* scriptState, 465 ScriptState* scriptState,
466 uint8_t endpointNumber, 466 uint8_t endpointNumber,
467 const ArrayBufferOrArrayBufferView& data, 467 const ArrayBufferOrArrayBufferView& data,
468 Vector<unsigned> packetLengths) { 468 Vector<unsigned> packetLengths) {
469 UseCounter::count(scriptState->getExecutionContext(), 469 UseCounter::count(scriptState->getExecutionContext(),
470 UseCounter::UsbDeviceIsochronousTransferOut); 470 UseCounter::UsbDeviceIsochronousTransferOut);
471 471
472 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 472 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
473 ScriptPromise promise = resolver->promise(); 473 ScriptPromise promise = resolver->promise();
474 if (ensureEndpointAvailable(false /* out */, endpointNumber, resolver)) { 474 if (ensureEndpointAvailable(false /* out */, endpointNumber, resolver)) {
475 m_deviceRequests.add(resolver); 475 m_deviceRequests.insert(resolver);
476 m_device->IsochronousTransferOut( 476 m_device->IsochronousTransferOut(
477 endpointNumber, convertBufferSource(data), packetLengths, 0, 477 endpointNumber, convertBufferSource(data), packetLengths, 0,
478 convertToBaseCallback(WTF::bind(&USBDevice::asyncIsochronousTransferOut, 478 convertToBaseCallback(WTF::bind(&USBDevice::asyncIsochronousTransferOut,
479 wrapPersistent(this), 479 wrapPersistent(this),
480 wrapPersistent(resolver)))); 480 wrapPersistent(resolver))));
481 } 481 }
482 return promise; 482 return promise;
483 } 483 }
484 484
485 ScriptPromise USBDevice::reset(ScriptState* scriptState) { 485 ScriptPromise USBDevice::reset(ScriptState* scriptState) {
486 UseCounter::count(scriptState->getExecutionContext(), 486 UseCounter::count(scriptState->getExecutionContext(),
487 UseCounter::UsbDeviceReset); 487 UseCounter::UsbDeviceReset);
488 488
489 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 489 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
490 ScriptPromise promise = resolver->promise(); 490 ScriptPromise promise = resolver->promise();
491 if (ensureNoDeviceOrInterfaceChangeInProgress(resolver)) { 491 if (ensureNoDeviceOrInterfaceChangeInProgress(resolver)) {
492 if (!m_opened) { 492 if (!m_opened) {
493 resolver->reject(DOMException::create(InvalidStateError, kOpenRequired)); 493 resolver->reject(DOMException::create(InvalidStateError, kOpenRequired));
494 } else { 494 } else {
495 m_deviceRequests.add(resolver); 495 m_deviceRequests.insert(resolver);
496 m_device->Reset(convertToBaseCallback( 496 m_device->Reset(convertToBaseCallback(
497 WTF::bind(&USBDevice::asyncReset, wrapPersistent(this), 497 WTF::bind(&USBDevice::asyncReset, wrapPersistent(this),
498 wrapPersistent(resolver)))); 498 wrapPersistent(resolver))));
499 } 499 }
500 } 500 }
501 return promise; 501 return promise;
502 } 502 }
503 503
504 void USBDevice::contextDestroyed(ExecutionContext*) { 504 void USBDevice::contextDestroyed(ExecutionContext*) {
505 m_device.reset(); 505 m_device.reset();
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 959
960 bool USBDevice::markRequestComplete(ScriptPromiseResolver* resolver) { 960 bool USBDevice::markRequestComplete(ScriptPromiseResolver* resolver) {
961 auto requestEntry = m_deviceRequests.find(resolver); 961 auto requestEntry = m_deviceRequests.find(resolver);
962 if (requestEntry == m_deviceRequests.end()) 962 if (requestEntry == m_deviceRequests.end())
963 return false; 963 return false;
964 m_deviceRequests.remove(requestEntry); 964 m_deviceRequests.remove(requestEntry);
965 return true; 965 return true;
966 } 966 }
967 967
968 } // namespace blink 968 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/webusb/USB.cpp ('k') | third_party/WebKit/Source/platform/LifecycleNotifier.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698