tor-browser

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

browser_fullscreen-newtab.js (2829B)


      1 "use strict";
      2 
      3 const kPage =
      4  "https://example.org/browser/" +
      5  "dom/base/test/fullscreen/file_fullscreen-newtab.html";
      6 
      7 function getSizeMode() {
      8  return document.documentElement.getAttribute("sizemode");
      9 }
     10 
     11 async function runTest() {
     12  await BrowserTestUtils.withNewTab(
     13    {
     14      gBrowser,
     15      url: kPage,
     16    },
     17    async function (browser) {
     18      let promiseFsEvents = SpecialPowers.spawn(browser, [], function () {
     19        return new Promise(resolve => {
     20          let countFsChange = 0;
     21          let countFsError = 0;
     22          function checkAndResolve() {
     23            if (countFsChange > 0 && countFsError > 0) {
     24              Assert.ok(
     25                false,
     26                "Got both fullscreenchange and fullscreenerror events"
     27              );
     28            } else if (countFsChange > 2) {
     29              Assert.ok(false, "Got too many fullscreenchange events");
     30            } else if (countFsError > 1) {
     31              Assert.ok(false, "Got too many fullscreenerror events");
     32            } else if (countFsChange == 2 || countFsError == 1) {
     33              resolve();
     34            }
     35          }
     36 
     37          content.document.addEventListener("fullscreenchange", () => {
     38            ++countFsChange;
     39            checkAndResolve();
     40          });
     41          content.document.addEventListener("fullscreenerror", () => {
     42            ++countFsError;
     43            checkAndResolve();
     44          });
     45        });
     46      });
     47      let promiseNewTab = BrowserTestUtils.waitForNewTab(
     48        gBrowser,
     49        "about:blank"
     50      );
     51      await BrowserTestUtils.synthesizeMouseAtCenter("#link", {}, browser);
     52      let [newtab] = await Promise.all([promiseNewTab, promiseFsEvents]);
     53      await BrowserTestUtils.removeTab(newtab);
     54 
     55      if (document.fullscreen) {
     56        info(
     57          "The chrome document is still in fullscreen, waiting for it to exit."
     58        );
     59        // Ensure the browser exits fullscreen state in reasonable time.
     60        await Promise.race([
     61          BrowserTestUtils.waitForEvent(document, "fullscreenchange"),
     62          // eslint-disable-next-line mozilla/no-arbitrary-setTimeout
     63          new Promise(resolve => setTimeout(resolve, 5000)),
     64        ]);
     65      }
     66 
     67      ok(!window.fullScreen, "The chrome window should not be in fullscreen");
     68      ok(
     69        !document.fullscreen,
     70        "The chrome document should not be in fullscreen"
     71      );
     72    }
     73  );
     74 }
     75 
     76 add_task(async function () {
     77  await pushPrefs(
     78    ["test.wait300msAfterTabSwitch", true],
     79    ["full-screen-api.transition-duration.enter", "0 0"],
     80    ["full-screen-api.transition-duration.leave", "0 0"]
     81  );
     82  await runTest();
     83 });
     84 
     85 add_task(async function () {
     86  await pushPrefs(
     87    ["full-screen-api.transition-duration.enter", "200 200"],
     88    ["full-screen-api.transition-duration.leave", "200 200"]
     89  );
     90  await runTest();
     91 });