OLD | NEW |
| (Empty) |
1 'use strict'; | |
2 | |
3 function usb_test(func, name, properties) { | |
4 promise_test(async () => { | |
5 await navigator.usb.test.initialize() | |
6 try { | |
7 await func(); | |
8 } finally { | |
9 await navigator.usb.test.reset(); | |
10 } | |
11 }, name, properties); | |
12 } | |
13 | |
14 // Returns a promise that is resolved when the next USBConnectionEvent of the | |
15 // given type is received. | |
16 function connectionEventPromise(eventType) { | |
17 return new Promise(resolve => { | |
18 let eventHandler = e => { | |
19 assert_true(e instanceof USBConnectionEvent); | |
20 navigator.usb.removeEventListener(eventType, eventHandler); | |
21 resolve(e.device); | |
22 }; | |
23 navigator.usb.addEventListener(eventType, eventHandler); | |
24 }); | |
25 } | |
26 | |
27 // Creates a fake device and returns a promise that resolves once the | |
28 // 'connect' event is fired for the fake device. The promise is resolved with | |
29 // an object containing the fake USB device and the corresponding USBDevice. | |
30 function getFakeDevice() { | |
31 let promise = connectionEventPromise('connect'); | |
32 let fakeDevice = navigator.usb.test.addFakeDevice(fakeDeviceInit); | |
33 return promise.then(device => { | |
34 return { device: device, fakeDevice: fakeDevice }; | |
35 }); | |
36 } | |
37 | |
38 // Disconnects the given device and returns a promise that is resolved when it | |
39 // is done. | |
40 function waitForDisconnect(fakeDevice) { | |
41 let promise = connectionEventPromise('disconnect'); | |
42 fakeDevice.disconnect(); | |
43 return promise; | |
44 } | |
45 | |
46 function assertRejectsWithError(promise, name, message) { | |
47 return promise.then(() => { | |
48 assert_unreached('expected promise to reject with ' + name); | |
49 }, error => { | |
50 assert_equals(error.name, name); | |
51 if (message !== undefined) | |
52 assert_equals(error.message, message); | |
53 }); | |
54 } | |
55 | |
56 function assertDeviceInfoEquals(usbDevice, deviceInit) { | |
57 for (var property in deviceInit) { | |
58 if (property == 'activeConfigurationValue') { | |
59 if (deviceInit.activeConfigurationValue == 0) { | |
60 assert_equals(usbDevice.configuration, null); | |
61 } else { | |
62 assert_equals(usbDevice.configuration.configurationValue, | |
63 deviceInit.activeConfigurationValue); | |
64 } | |
65 } else if (Array.isArray(deviceInit[property])) { | |
66 assert_equals(usbDevice[property].length, deviceInit[property].length); | |
67 for (var i = 0; i < usbDevice[property].length; ++i) | |
68 assertDeviceInfoEquals(usbDevice[property][i], deviceInit[property][i]); | |
69 } else { | |
70 assert_equals(usbDevice[property], deviceInit[property], property); | |
71 } | |
72 } | |
73 } | |
74 | |
75 // TODO(reillyg): Remove when jyasskin upstreams this to testharness.js: | |
76 // https://crbug.com/509058. | |
77 function callWithKeyDown(functionCalledOnKeyPress) { | |
78 return new Promise(resolve => { | |
79 function onKeyPress() { | |
80 document.removeEventListener('keypress', onKeyPress, false); | |
81 resolve(functionCalledOnKeyPress()); | |
82 } | |
83 document.addEventListener('keypress', onKeyPress, false); | |
84 | |
85 eventSender.keyDown(' ', []); | |
86 }); | |
87 } | |
88 | |
89 function runGarbageCollection() { | |
90 // Run gc() as a promise. | |
91 return new Promise((resolve, reject) => { | |
92 GCController.collect(); | |
93 setTimeout(resolve, 0); | |
94 }); | |
95 } | |
OLD | NEW |