tor-browser

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

multi-screen-fullscreen-companion.tentative.https.html (2344B)


      1 <!DOCTYPE html>
      2 <meta name="timeout" content="long">
      3 <!-- user agents are not required to support open features other than `noopener`
      4     and on some platforms position and size features don't make sense -->
      5 <meta name="flags" content="may">
      6 <title>Window Management test: Fullscreen Companion Window</title>
      7 <link rel="help" href="https://w3c.github.io/window-management/">
      8 Tests use of multi-screen details to enter fullscreen and open a 'companion'
      9 popup window in the same user activation.<br>
     10 The host device must have 2+ screens to yield meaningful results.<br><br>
     11 <button id="closeButton" onclick="closePopups">Close popups</button><br>
     12 <input id="autoClose" type="checkbox" checked=true>Auto-close popups</input>
     13 <ul id="list"></ul>
     14 <script src="/resources/testharness.js"></script>
     15 <script src="/resources/testharnessreport.js"></script>
     16 <script src="/resources/testdriver.js"></script>
     17 <script src="/resources/testdriver-vendor.js"></script>
     18 <script src="resources/helpers.js"></script>
     19 <script>
     20 'use strict';
     21 
     22 let popups = [];
     23 function closePopups() {
     24  popups.forEach(p => p.close());
     25  popups = [];
     26 }
     27 
     28 promise_test(async setUpTest => {
     29  await setUpWindowManagement(setUpTest);
     30  const screens = window.screenDetails.screens;
     31  const originalScreen = window.screenDetails.currentScreen;
     32  for (const [i, screenA] of screens.entries()) {
     33    const screenB = screens[(i + 1) % screens.length];
     34    let name = `Fullscreen on '${screenA.label}'; popup on '${screenB.label}'`;
     35    promise_test(async test => {
     36      await buttonClick(test, name);
     37      await document.documentElement.requestFullscreen({ screen: screenA });
     38      await assertWindowOnScreen(window, screenA);
     39      // Expect the popup to open if multiple screens are available.
     40      const assertPlacement = screens.length > 1;
     41      const popup = await openPopupOnScreen(screenB, assertPlacement);
     42      if (!!popup)
     43        popups.push(popup);
     44      // Exit fullscreen; `window` should move back to `originalScreen`.
     45      await buttonClick(test, `Exit fullscreen`);
     46      await document.exitFullscreen();
     47      await assertWindowOnScreen(window, originalScreen);
     48      assert_false(!!document.fullscreenElement);
     49      if (autoClose.checked)
     50        closePopups();
     51    }, name);
     52  }
     53 }, 'Enter fullscreen and open a popup from one transient activation.');
     54 </script>