test_fullscreen_iframe.html (1927B)
1 <!doctype html> 2 <title>Test for bug 1938966</title> 3 <script src="/tests/SimpleTest/SimpleTest.js"></script> 4 <script src="/tests/SimpleTest/EventUtils.js"></script> 5 <script src="fullscreen_helpers.js"></script> 6 <link rel="stylesheet" href="/tests/SimpleTest/test.css"> 7 <script> 8 9 let { ContentTaskUtils } = SpecialPowers.ChromeUtils.importESModule( 10 "resource://testing-common/ContentTaskUtils.sys.mjs" 11 ); 12 13 add_setup(async function () { 14 SpecialPowers.pushPrefEnv({ set: [ 15 ["full-screen-api.transition-duration.enter", "0 0"], 16 ["full-screen-api.transition-duration.leave", "0 0"], 17 ["full-screen-api.allow-trusted-requests-only", false]], 18 }); 19 }); 20 21 TEST_URLS.forEach(url => { 22 add_task(async () => { 23 info(`Test url: ${url}`); 24 25 const iframe = document.createElement("iframe"); 26 iframe.allowFullscreen = true; 27 iframe.src = url; 28 29 const loadPromise = ContentTaskUtils.waitForEvent(iframe, "load"); 30 document.documentElement.appendChild(iframe); 31 await loadPromise; 32 33 const topBC = SpecialPowers.wrap(iframe.contentWindow).browsingContext; 34 const middleBC = topBC.children[0]; 35 const innerBC = middleBC.children[0]; 36 const browsingContexts = [ 37 [topBC, "toplevel"], 38 [middleBC, "middle"], 39 [innerBC, "inner"] 40 ]; 41 42 const enterPromise = waitRemoteFullscreenEnterEvents(browsingContexts); 43 // Trigger click event in inner most iframe 44 SpecialPowers.spawn(innerBC, [], function () { 45 content.setTimeout(() => { 46 content.document.getElementById("div").click(); 47 }, 0); 48 }); 49 await enterPromise; 50 51 const exitPromise = waitRemoteFullscreenExitEvents(browsingContexts); 52 // Trigger fullscreen exit in inner most iframe 53 SpecialPowers.spawn(innerBC, [], function () { 54 content.setTimeout(() => { 55 content.document.exitFullscreen(); 56 }, 0); 57 }); 58 await exitPromise; 59 60 iframe.remove(); 61 }); 62 }); 63 64 </script>