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

Side by Side Diff: third_party/WebKit/LayoutTests/usb/resources/webusb-test.js

Issue 2816663002: Ensure tests don't depend on fake devices being added synchronously (Closed)
Patch Set: Created 3 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 'use strict'; 1 'use strict';
2 2
3 // This polyfil library implements the following WebIDL: 3 // This polyfil library implements the following WebIDL:
4 // 4 //
5 // partial interface USB { 5 // partial interface USB {
6 // [SameObject] readonly attribute USBTest test; 6 // [SameObject] readonly attribute USBTest test;
7 // } 7 // }
8 // 8 //
9 // interface USBTest { 9 // interface USBTest {
10 // attribute EventHandler ondeviceclose; 10 // attribute EventHandler ondeviceclose;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 // The global mojo object contains the Mojo JS binding modules loaded during 69 // The global mojo object contains the Mojo JS binding modules loaded during
70 // initialization. 70 // initialization.
71 let mojo = null; 71 let mojo = null;
72 72
73 // These variables are logically members of the USBTest class but are defined 73 // These variables are logically members of the USBTest class but are defined
74 // here to hide them from being visible as fields of navigator.usb.test. 74 // here to hide them from being visible as fields of navigator.usb.test.
75 let g_initializePromise = null; 75 let g_initializePromise = null;
76 let g_chooserService = null; 76 let g_chooserService = null;
77 let g_deviceManager = null; 77 let g_deviceManager = null;
78 let g_closeListener = null; 78 let g_closeListener = null;
79 let g_nextGuid = 0;
79 80
80 function fakeDeviceInitToDeviceInfo(guid, init) { 81 function fakeDeviceInitToDeviceInfo(guid, init) {
81 let deviceInfo = { 82 let deviceInfo = {
82 guid: guid + "", 83 guid: guid + "",
83 usb_version_major: init.usbVersionMajor, 84 usb_version_major: init.usbVersionMajor,
84 usb_version_minor: init.usbVersionMinor, 85 usb_version_minor: init.usbVersionMinor,
85 usb_version_subminor: init.usbVersionSubminor, 86 usb_version_subminor: init.usbVersionSubminor,
86 class_code: init.deviceClass, 87 class_code: init.deviceClass,
87 subclass_code: init.deviceSubclass, 88 subclass_code: init.deviceSubclass,
88 protocol_code: init.deviceProtocol, 89 protocol_code: init.deviceProtocol,
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 this.bindingSet_ = 352 this.bindingSet_ =
352 new mojo.bindings.BindingSet(mojo.deviceManager.DeviceManager); 353 new mojo.bindings.BindingSet(mojo.deviceManager.DeviceManager);
353 this.devices_ = new Map(); 354 this.devices_ = new Map();
354 this.client_ = null; 355 this.client_ = null;
355 } 356 }
356 357
357 addBinding(handle) { 358 addBinding(handle) {
358 this.bindingSet_.addBinding(this, handle); 359 this.bindingSet_.addBinding(this, handle);
359 } 360 }
360 361
361 addDevice(info) { 362 addDevice(guid, info) {
362 let device = { 363 let device = {
363 guid: this.nextGuid_++ + "", 364 guid: guid,
364 info: info, 365 info: info,
365 bindingArray: [] 366 bindingArray: []
366 }; 367 };
367 this.devices_.set(device.guid, device); 368 this.devices_.set(device.guid, device);
368 if (this.client_) 369 if (this.client_)
369 this.client_.onDeviceAdded(fakeDeviceInitToDeviceInfo(device.guid, info)); 370 this.client_.onDeviceAdded(fakeDeviceInitToDeviceInfo(device.guid, info));
370 return device.guid;
371 } 371 }
372 372
373 removeDevice(guid) { 373 removeDevice(guid) {
374 let device = this.devices_.get(guid); 374 let device = this.devices_.get(guid);
375 if (!device)
376 throw new Error('Cannot remove unknown device "' + guid + '"');
377
375 for (var binding of device.bindingArray) 378 for (var binding of device.bindingArray)
376 binding.close(); 379 binding.close();
377 this.devices_.delete(guid); 380 this.devices_.delete(guid);
378 if (this.client_) { 381 if (this.client_) {
379 this.client_.onDeviceRemoved( 382 this.client_.onDeviceRemoved(
380 fakeDeviceInitToDeviceInfo(guid, device.info)); 383 fakeDeviceInitToDeviceInfo(guid, device.info));
381 } 384 }
382 } 385 }
383 386
384 removeAllDevices() { 387 removeAllDevices() {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 handle => g_chooserService.addBinding(handle)); 522 handle => g_chooserService.addBinding(handle));
520 resolve(); 523 resolve();
521 }); 524 });
522 }); 525 });
523 } 526 }
524 527
525 addFakeDevice(deviceInit) { 528 addFakeDevice(deviceInit) {
526 if (!g_deviceManager) 529 if (!g_deviceManager)
527 throw new Error('Call initialize() before addFakeDevice().'); 530 throw new Error('Call initialize() before addFakeDevice().');
528 531
529 return g_deviceManager.addDevice(deviceInit); 532 // |addDevice| and |removeDevice| are called in a setTimeout callback so
533 // that tests do not rely on the device being immediately available which
534 // may not be true for all implementations of this test API.
535 let guid = g_nextGuid++ + "";
ortuno 2017/04/12 03:31:07 nit: let guid = (g_nextGuid++).toString();
Reilly Grant (use Gerrit) 2017/04/12 22:47:07 Done.
536 setTimeout(() => {
537 g_deviceManager.addDevice(guid, deviceInit);
538 }, 0);
539 return guid;
530 } 540 }
531 541
532 removeFakeDevice(guid) { 542 removeFakeDevice(guid) {
533 if (!g_deviceManager) 543 if (!g_deviceManager)
534 throw new Error('Call initialize() before removeFakeDevice().'); 544 throw new Error('Call initialize() before removeFakeDevice().');
535 545
536 return g_deviceManager.removeDevice(guid); 546 setTimeout(() => {
547 g_deviceManager.removeDevice(guid);
548 }, 0);
537 } 549 }
538 550
539 set ondeviceclose(func) { 551 set ondeviceclose(func) {
540 g_closeListener = func; 552 g_closeListener = func;
541 } 553 }
542 554
543 set chosenDevice(guid) { 555 set chosenDevice(guid) {
544 if (!g_chooserService) 556 if (!g_chooserService)
545 throw new Error('Call initialize() before setting chosenDevice.'); 557 throw new Error('Call initialize() before setting chosenDevice.');
546 558
(...skipping 13 matching lines...) Expand all
560 572
561 g_deviceManager.removeAllDevices(); 573 g_deviceManager.removeAllDevices();
562 g_chooserService.setChosenDevice(null); 574 g_chooserService.setChosenDevice(null);
563 g_closeListener = null; 575 g_closeListener = null;
564 } 576 }
565 } 577 }
566 578
567 navigator.usb.test = new USBTest(); 579 navigator.usb.test = new USBTest();
568 580
569 })(); 581 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698