OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> |
3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
4 <script src="resources/fake-devices.js"></script> | 4 <script src="../external/wpt/webusb/resources/fake-devices.js"></script> |
5 <script src="resources/usb-helpers.js"></script> | 5 <script src="../external/wpt/resources/chromium/mojo_bindings.js"></script> |
6 <script src="resources/webusb-test.js"></script> | 6 <script src="../external/wpt/resources/chromium/device.mojom.js"></script> |
| 7 <script src="../external/wpt/resources/chromium/device_manager.mojom.js"></scrip
t> |
| 8 <script src="../external/wpt/resources/chromium/chooser_service.mojom.js"></scri
pt> |
| 9 <script src="../external/wpt/resources/chromium/webusb-test.js"></script> |
7 <body> | 10 <body> |
8 <script> | 11 <script> |
9 'use strict'; | 12 'use strict'; |
10 | 13 |
11 function runIframeDisconnectTest(onDeviceConnected) { | |
12 return navigator.usb.test.initialize().then(() => { | |
13 return new Promise((resolve, reject) => { | |
14 let opened = false; | |
15 | |
16 let iframe = document.createElement('iframe'); | |
17 iframe.src = 'resources/open-in-iframe.html'; | |
18 iframe.onload = () => { | |
19 navigator.usb.test.attachToWindow(iframe.contentWindow).then(() => { | |
20 iframe.contentWindow.postMessage('Ready', '*'); | |
21 }); | |
22 }; | |
23 | |
24 window.onmessage = messageEvent => { | |
25 if (messageEvent.data == 'Ready') { | |
26 let fakeDevice = navigator.usb.test.addFakeDevice(fakeDeviceInit); | |
27 fakeDevice.onclose = () => { | |
28 assert_true(opened); | |
29 resolve(); | |
30 }; | |
31 } else if (messageEvent.data == 'Success') { | |
32 opened = true; | |
33 onDeviceConnected(iframe); | |
34 } else { | |
35 reject(messageEvent.data); | |
36 } | |
37 }; | |
38 | |
39 document.body.appendChild(iframe); | |
40 }); | |
41 }); | |
42 } | |
43 | |
44 promise_test(() => { | |
45 return runIframeDisconnectTest(iframe => { | |
46 document.body.removeChild(iframe); | |
47 }); | |
48 }, 'detaching iframe disconnects device.'); | |
49 | |
50 promise_test(() => { | |
51 return runIframeDisconnectTest(iframe => { | |
52 iframe.src = 'about:blank'; | |
53 }); | |
54 }, 'navigating iframe disconnects device.'); | |
55 | |
56 promise_test(() => { | 14 promise_test(() => { |
57 return navigator.usb.test.initialize().then(() => { | 15 return navigator.usb.test.initialize().then(() => { |
58 return new Promise((resolve, reject) => { | 16 return new Promise((resolve, reject) => { |
59 let opened = false; | 17 let opened = false; |
60 let fakeDeviceGuid = null; | 18 let fakeDeviceGuid = null; |
61 | 19 |
62 let iframe = document.createElement('iframe'); | 20 let iframe = document.createElement('iframe'); |
63 iframe.src = 'resources/open-in-iframe.html'; | 21 iframe.src = '../external/wpt/webusb/resources/open-in-iframe.html'; |
64 iframe.onload = () => { | 22 iframe.onload = () => { |
65 navigator.usb.test.attachToWindow(iframe.contentWindow).then(() => { | 23 navigator.usb.test.attachToWindow(iframe.contentWindow).then(() => { |
66 iframe.contentWindow.postMessage('Ready', '*'); | 24 iframe.contentWindow.postMessage('Ready', '*'); |
67 }); | 25 }); |
68 }; | 26 }; |
69 | 27 |
70 window.onmessage = messageEvent => { | 28 window.onmessage = messageEvent => { |
71 if (messageEvent.data == 'Ready') { | 29 if (messageEvent.data == 'Ready') { |
72 document.body.removeChild(iframe); | 30 document.body.removeChild(iframe); |
73 runGarbageCollection().then(() => { | 31 GCController.collect(); |
74 navigator.usb.test.addFakeDevice(fakeDeviceInit); | 32 navigator.usb.test.addFakeDevice(fakeDeviceInit); |
75 resolve(); | 33 resolve(); |
76 }); | |
77 } else { | 34 } else { |
78 reject(messageEvent.data); | 35 reject(messageEvent.data); |
79 } | 36 } |
80 }; | 37 }; |
81 | 38 |
82 document.body.appendChild(iframe); | 39 document.body.appendChild(iframe); |
83 }); | 40 }); |
84 }); | 41 }); |
85 }, 'events are not delivered to detached frames'); | 42 }, 'events are not delivered to detached frames'); |
86 </script> | 43 </script> |
87 </body> | 44 </body> |
OLD | NEW |