file_fullscreen-event-order.html (1522B)
1 <!DOCTYPE html> 2 <script src="/tests/SimpleTest/EventUtils.js"></script> 3 <script src="/tests/SimpleTest/SimpleTest.js"></script> 4 <script src="file_fullscreen-utils.js"></script> 5 <iframe src="empty.html" allowfullscreen></iframe> 6 <script> 7 function ok(condition, msg) { 8 opener.ok(condition, "[event-order] " + msg); 9 } 10 function is(a, b, msg) { 11 opener.is(a, b, "[event-order] " + msg); 12 } 13 14 let fullscreenEvents = []; 15 let iframe, iframeDoc; 16 17 function begin() { 18 iframe = document.querySelector("iframe"); 19 iframeDoc = iframe.contentDocument; 20 document.addEventListener("fullscreenchange", evt => { 21 fullscreenEvents.push(evt); 22 }); 23 iframeDoc.addEventListener("fullscreenchange", evt => { 24 fullscreenEvents.push(evt); 25 }); 26 addFullscreenChangeContinuation("enter", enterFullscreen); 27 iframeDoc.body.requestFullscreen(); 28 } 29 30 function assertFullscreenEvents(action) { 31 is(fullscreenEvents.length, 2, 32 "Two documents should have event dispatched for " + action); 33 is(fullscreenEvents[0].target, iframe, 34 "Root document should have the event dispatched first after " + action); 35 is(fullscreenEvents[1].target, iframeDoc.body, 36 "Inner document should have the event dispatched second after " + action); 37 } 38 39 function enterFullscreen() { 40 assertFullscreenEvents("requestFullscreen"); 41 fullscreenEvents = []; 42 addFullscreenChangeContinuation("exit", exitFullscreen); 43 document.exitFullscreen(); 44 } 45 46 function exitFullscreen() { 47 assertFullscreenEvents("exitFullscreen"); 48 opener.nextTest(); 49 } 50 </script>