Chromium Code Reviews

Side by Side Diff: third_party/WebKit/LayoutTests/usb/usbDevice-iframe.html

Issue 2789723003: Migrate WebUSB LayoutTests into external/wpt (Closed)
Patch Set: Rebased Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
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_polyfill/webusb/webusb-test.js"></script>
6 <script src="resources/webusb-test.js"></script>
7 <script> 6 <script>
8 'use strict'; 7 'use strict';
9 8
10 function runIframeDisconnectTest(onDeviceConnected) {
11 return navigator.usb.test.initialize().then(() => {
12 return new Promise((resolve, reject) => {
13 let opened = false;
14 let fakeDevice = null;
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 fakeDevice = navigator.usb.test.addFakeDevice(fakeDeviceInit);
27 } else if (messageEvent.data == 'Success') {
28 opened = true;
29 onDeviceConnected(iframe);
30 } else {
31 reject(messageEvent.data);
32 }
33 };
34
35 navigator.usb.test.ondeviceclose = closedFakeDevice => {
36 assert_equals(closedFakeDevice, fakeDevice);
37 assert_true(opened);
38 resolve();
39 };
40
41 document.body.appendChild(iframe);
42 });
43 });
44 }
45
46 promise_test(() => {
47 return runIframeDisconnectTest(iframe => {
48 document.body.removeChild(iframe);
49 });
50 }, 'detaching iframe disconnects device.');
51
52 promise_test(() => {
53 return runIframeDisconnectTest(iframe => {
54 iframe.src = 'about:blank';
55 });
56 }, 'navigating iframe disconnects device.');
57
58 promise_test(() => { 9 promise_test(() => {
59 return navigator.usb.test.initialize().then(() => { 10 return navigator.usb.test.initialize().then(() => {
60 return new Promise((resolve, reject) => { 11 return new Promise((resolve, reject) => {
61 let opened = false; 12 let opened = false;
62 let fakeDeviceGuid = null; 13 let fakeDeviceGuid = null;
63 14
64 let iframe = document.createElement('iframe'); 15 let iframe = document.createElement('iframe');
65 iframe.src = 'resources/open-in-iframe.html'; 16 iframe.src = '../external/wpt/webusb/resources/open-in-iframe.html';
66 iframe.onload = () => { 17 iframe.onload = () => {
67 navigator.usb.test.attachToWindow(iframe.contentWindow).then(() => { 18 navigator.usb.test.attachToWindow(iframe.contentWindow).then(() => {
68 iframe.contentWindow.postMessage('Ready', '*'); 19 iframe.contentWindow.postMessage('Ready', '*');
69 }); 20 });
70 }; 21 };
71 22
72 window.onmessage = messageEvent => { 23 window.onmessage = messageEvent => {
73 if (messageEvent.data == 'Ready') { 24 if (messageEvent.data == 'Ready') {
74 document.body.removeChild(iframe); 25 document.body.removeChild(iframe);
75 runGarbageCollection().then(() => { 26 GCController.collect();
76 navigator.usb.test.addFakeDevice(fakeDeviceInit); 27 navigator.usb.test.addFakeDevice(fakeDeviceInit);
77 resolve(); 28 resolve();
78 });
79 } else { 29 } else {
80 reject(messageEvent.data); 30 reject(messageEvent.data);
81 } 31 }
82 }; 32 };
83 33
84 document.body.appendChild(iframe); 34 document.body.appendChild(iframe);
85 }); 35 });
86 }); 36 });
87 }, 'events are not delivered to detached frames'); 37 }, 'events are not delivered to detached frames');
88 </script> 38 </script>
OLDNEW

Powered by Google App Engine