tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>