Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 })(); |
| OLD | NEW |