tor-browser

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

browser_aboutNewTab_bookmarksToolbarNewWindow.js (2345B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 requestLongerTimeout(2);
      7 
      8 const testCases = [
      9  {
     10    name: "bookmarks_toolbar_shown_on_newtab_newTabEnabled",
     11    newTabEnabled: true,
     12  },
     13  {
     14    name: "bookmarks_toolbar_shown_on_newtab",
     15    newTabEnabled: false,
     16  },
     17 ];
     18 
     19 async function test_bookmarks_toolbar_visibility({ newTabEnabled }) {
     20  await SpecialPowers.pushPrefEnv({
     21    set: [["browser.newtabpage.enabled", newTabEnabled]],
     22  });
     23 
     24  // Ensure the toolbar doesnt become visible at any point before the tab finishes loading
     25 
     26  let url =
     27    getRootDirectory(gTestPath).replace(
     28      "chrome://mochitests/content",
     29      "https://example.com"
     30    ) + "slow_loading_page.sjs";
     31 
     32  let startTime = Date.now();
     33  let newWindowOpened = BrowserTestUtils.domWindowOpened();
     34  let beforeShown = TestUtils.topicObserved("browser-window-before-show");
     35 
     36  openTrustedLinkIn(url, "window");
     37 
     38  let newWin = await newWindowOpened;
     39  let slowSiteLoaded = BrowserTestUtils.firstBrowserLoaded(newWin, false);
     40 
     41  function checkToolbarIsCollapsed(win, message) {
     42    let toolbar = win.document.getElementById("PersonalToolbar");
     43    ok(toolbar && toolbar.collapsed, message);
     44  }
     45 
     46  await beforeShown;
     47  checkToolbarIsCollapsed(
     48    newWin,
     49    "Toolbar is initially hidden on the new window"
     50  );
     51 
     52  function onToolbarMutation() {
     53    checkToolbarIsCollapsed(newWin, "Toolbar should remain collapsed");
     54  }
     55  let toolbarMutationObserver = new newWin.MutationObserver(onToolbarMutation);
     56  toolbarMutationObserver.observe(
     57    newWin.document.getElementById("PersonalToolbar"),
     58    {
     59      attributeFilter: ["collapsed"],
     60    }
     61  );
     62 
     63  info("Waiting for the slow site to load");
     64  await slowSiteLoaded;
     65  info(`Window opened and slow site loaded in: ${Date.now() - startTime}ms`);
     66 
     67  checkToolbarIsCollapsed(newWin, "Finally, the toolbar is still hidden");
     68 
     69  toolbarMutationObserver.disconnect();
     70  await BrowserTestUtils.closeWindow(newWin);
     71 }
     72 
     73 // Make separate tasks for each test case, so we get more useful stack traces on failure
     74 for (let testData of testCases) {
     75  let tmp = {
     76    async [testData.name]() {
     77      info("testing with: " + JSON.stringify(testData));
     78      await test_bookmarks_toolbar_visibility(testData);
     79    },
     80  };
     81  add_task(tmp[testData.name]);
     82 }