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

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

Issue 2789723003: Migrate WebUSB LayoutTests into external/wpt (Closed)
Patch Set: Addressed comments from ortuno@ and foolip@ 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 <!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/mojo-helpers.js"></script> 4 <script src="../external/wpt/webusb/resources/fake-devices.js"></script>
5 <script src="resources/fake-devices.js"></script> 5 <script src="../external/wpt_polyfill/webusb/webusb-test.js"></script>
6 <script src="resources/usb-helpers.js"></script>
7 <script> 6 <script>
8 'use strict'; 7 'use strict';
9 8
10 function runIframeDisconnectTest(usb, onDeviceConnected) { 9 promise_test(() => {
11 return new Promise((resolve, reject) => { 10 return navigator.usb.test.initialize().then(() => {
12 let mockDeviceManager = new usb.MockDeviceManager; 11 return new Promise((resolve, reject) => {
13 let opened = false; 12 let opened = false;
14 let iframe = document.createElement('iframe'); 13 let fakeDeviceGuid = null;
15 14
16 window.onmessage = messageEvent => { 15 let iframe = document.createElement('iframe');
17 if (messageEvent.data === 'Ready') { 16 iframe.src = '../external/wpt/webusb/resources/open-in-iframe.html';
18 mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 17 iframe.onload = () => {
19 } else if (messageEvent.data === 'Success') { 18 navigator.usb.test.attachToWindow(iframe.contentWindow).then(() => {
20 opened = true; 19 iframe.contentWindow.postMessage('Ready', '*');
21 onDeviceConnected(iframe); 20 });
22 } else { 21 };
23 reject(messageEvent.data);
24 }
25 };
26 22
27 mockDeviceManager.setDeviceCloseHandler(info => { 23 window.onmessage = messageEvent => {
28 assert_equals(info, usb.fakeDevices[0]); 24 if (messageEvent.data == 'Ready') {
29 assert_true(opened); 25 document.body.removeChild(iframe);
30 resolve(); 26 GCController.collect();
27 navigator.usb.test.addFakeDevice(fakeDeviceInit);
28 resolve();
29 } else {
30 reject(messageEvent.data);
31 }
32 };
33
34 document.body.appendChild(iframe);
31 }); 35 });
32
33 iframe.src = 'resources/open-in-iframe.html';
34 iframe.onload = () => {
35 iframe.contentWindow.gin.define(
36 "Mojo Service Registry",
37 [ 'content/public/renderer/frame_interfaces' ],
38 (frameInterfaces) => {
39 frameInterfaces.addInterfaceOverrideForTesting(
40 usb.DeviceManager.name,
41 handle => { mockDeviceManager.bindingSet.addBinding(
42 mockDeviceManager, handle); });
43 iframe.contentWindow.postMessage('Ready', '*');
44 });
45 }
46 document.body.appendChild(iframe);
47 });
48 }
49
50 usb_test(usb => {
51 return runIframeDisconnectTest(usb, iframe => {
52 document.body.removeChild(iframe);
53 });
54 }, 'detaching iframe disconnects device.');
55
56 usb_test(usb => {
57 return runIframeDisconnectTest(usb, iframe => {
58 iframe.src = 'about:blank';
59 });
60 }, 'navigating iframe disconnects device.');
61
62 usb_test(usb => {
63 return new Promise((resolve, reject) => {
64 let mockDeviceManager = new usb.MockDeviceManager;
65 let iframe = document.createElement('iframe');
66
67 window.onmessage = messageEvent => {
68 if (messageEvent.data === 'Ready') {
69 document.body.removeChild(iframe);
70 runGarbageCollection().then(() => {
71 mockDeviceManager.addMockDevice(usb.fakeDevices[0]);
72 resolve();
73 });
74 } else {
75 reject(messageEvent.data);
76 }
77 };
78
79 iframe.src = 'resources/open-in-iframe.html';
80 iframe.onload = () => {
81 iframe.contentWindow.gin.define(
82 "Mojo Service Registry",
83 [ 'content/public/renderer/frame_interfaces' ],
84 (frameInterfaces) => {
85 frameInterfaces.addInterfaceOverrideForTesting(
86 usb.DeviceManager.name,
87 handle => { mockDeviceManager.bindingSet.addBinding(
88 mockDeviceManager, handle); });
89 iframe.contentWindow.postMessage('Ready', '*');
90 });
91 }
92 document.body.appendChild(iframe);
93 }); 36 });
94 }, 'events are not delivered to detached frames'); 37 }, 'events are not delivered to detached frames');
95 </script> 38 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698