element-request-fullscreen-and-move-to-iframe.html (2056B)
1 <!DOCTYPE html> 2 <title> 3 Element#requestFullscreen() followed by moving the element into an iframe 4 </title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="/resources/testdriver.js"></script> 8 <script src="/resources/testdriver-vendor.js"></script> 9 <script src="../trusted-click.js"></script> 10 <div id="log"></div> 11 <div id="target"></div> 12 <iframe allowfullscreen></iframe> 13 <script> 14 // rfsPromise will be uncaught 15 setup({ allow_uncaught_exception: true }); 16 17 promise_test(async (t) => { 18 const iframe = document.querySelector("iframe"); 19 await new Promise((r) => { 20 iframe.onload = r; 21 iframe.src = "about:blank"; 22 }); 23 const target = document.getElementById("target"); 24 const iframeDoc = iframe.contentDocument; 25 26 iframeDoc.onfullscreenchange = t.unreached_func( 27 "fullscreenchange event in iframe" 28 ); 29 iframeDoc.onfullscreenerror = t.unreached_func( 30 "fullscreenerror event in iframe" 31 ); 32 document.onfullscreenchange = t.unreached_func( 33 "fullscreenchange event" 34 ); 35 36 const errorPromise = new Promise( 37 (resolve) => (document.onfullscreenerror = resolve) 38 ); 39 await trusted_click(document.body); 40 const rfsPromise = target.requestFullscreen(); 41 iframeDoc.body.appendChild(target); 42 const event = await errorPromise; 43 assert_equals( 44 iframeDoc.fullscreenElement, 45 null, 46 "inner fullscreen element" 47 ); 48 assert_equals( 49 document.fullscreenElement, 50 null, 51 "outer fullscreen element" 52 ); 53 assert_equals(event.target, document, "event target"); 54 await promise_rejects_js( 55 t, 56 TypeError, 57 rfsPromise, 58 "requestFullscreen promise" 59 ); 60 }, "Element#requestFullscreen() followed by moving the element into an iframe"); 61 </script>