file_fullscreen-featurePolicy.html (2532B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test for FeaturePolicy + fullscreen</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script src="/tests/SimpleTest/EventUtils.js"></script> 7 <script type="application/javascript" src="file_fullscreen-utils.js"></script> 8 <style> 9 body { 10 background-color: black; 11 } 12 </style> 13 </head> 14 <body> 15 16 <script type="application/javascript"> 17 function ok(condition, msg) { 18 opener.ok(condition, "[featurePolicy] " + msg); 19 } 20 21 function is(a, b, msg) { 22 opener.is(a, b, "[featurePolicy] " + msg); 23 } 24 25 const INNER_FILE = "file_fullscreen-featurePolicy-inner.html"; 26 27 function begin() { 28 nextTest(); 29 } 30 31 var tests = [ 32 ["fullscreen 'none'", "fullscreenerror"], 33 ["fullscreen", "fullscreenchange"], 34 ["fullscreen 'src'", "fullscreenchange"], 35 ["fullscreen 'self'", "fullscreenchange"], 36 ["fullscreen *", "fullscreenchange"], 37 ["fullscreen http://random.net", "fullscreenerror"], 38 [null, "fullscreenchange"], 39 ]; 40 41 async function nextTest() { 42 if (!tests.length) { 43 opener.nextTest(); 44 return; 45 } 46 47 let [value, expectedEvent] = tests.shift(); 48 49 for (const isChrome of [false, true]) { 50 opener.info(`Running ${value} ${isChrome ? "w/" : "wo/"} chrome privileges`); 51 52 // Create an iframe with an allowfullscreen and with an allow attribute. 53 // The request should be denied or allowed, based on the current test. 54 const iframe = document.createElement("iframe"); 55 iframe.setAttribute("allowfullscreen", "true"); 56 if (value) { 57 iframe.setAttribute("allow", value); 58 } 59 iframe.src = INNER_FILE + (isChrome ? "?chrome" : ""); 60 61 const setupForInnerTest = targetName => { 62 window.testTargetName = targetName; 63 return new Promise(resolve => { 64 window.continueTest = (event, enabled) => { 65 delete window.testTargetName; 66 delete window.continueTest; 67 resolve({ event, enabled }); 68 }; 69 document.body.appendChild(iframe); 70 }); 71 }; 72 73 const { event, enabled } = await setupForInnerTest( 74 `an iframe+allowfullscreen+allow:${value}+isChrome:${isChrome}` 75 ); 76 77 if (isChrome) { 78 is(event, "fullscreenchange", "Expected a fullscreenchange event"); 79 ok(enabled, "Should be enabled in chrome"); 80 } else { 81 is(event, expectedEvent, "Expected a " + expectedEvent + " event"); 82 is(enabled, expectedEvent == "fullscreenchange", "Should be appropriately enabled"); 83 } 84 iframe.remove(); 85 } 86 SimpleTest.executeSoon(nextTest); 87 } 88 </script> 89 </body> 90 </html>