tor-browser

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

browser_restore_verticalPinnedTabs.js (2616B)


      1 add_setup(() =>
      2  SpecialPowers.pushPrefEnv({
      3    set: [
      4      ["sidebar.revamp", true],
      5      ["sidebar.verticalTabs", true],
      6    ],
      7  })
      8 );
      9 const BACKUP_STATE = SessionStore.getBrowserState();
     10 const REMOTE_URL = "https://www.example.com/";
     11 const ABOUT_ROBOTS_URL = "about:robots";
     12 const ABOUT_HOME = "about:home";
     13 const ABOUT_MOZILLA = "about:mozilla";
     14 
     15 let tabs = [
     16  {
     17    entries: [{ url: REMOTE_URL, triggeringPrincipal_base64 }],
     18    pinned: true,
     19    userContextId: 0,
     20    hidden: false,
     21  },
     22  {
     23    entries: [{ url: ABOUT_MOZILLA, triggeringPrincipal_base64 }],
     24    pinned: true,
     25    userContextId: 0,
     26    hidden: false,
     27  },
     28  {
     29    entries: [{ url: ABOUT_ROBOTS_URL, triggeringPrincipal_base64 }],
     30    pinned: true,
     31    userContextId: 0,
     32    hidden: false,
     33  },
     34  {
     35    entries: [{ url: ABOUT_HOME, triggeringPrincipal_base64 }],
     36    userContextId: 0,
     37    hidden: false,
     38  },
     39 ];
     40 
     41 add_task(async function test_pinned_tabs_restored_position() {
     42  let allTabsRestored = promiseSessionStoreLoads(3);
     43  await setWindowState(
     44    window,
     45    {
     46      windows: [
     47        {
     48          selected: 3, // SessionStore uses 1-based indexing.
     49          tabs,
     50        },
     51      ],
     52    },
     53    true
     54  );
     55  await allTabsRestored;
     56 
     57  const sidebar = document.querySelector("sidebar-main");
     58  ok(sidebar, "Sidebar is shown.");
     59 
     60  let tabStrip = document.getElementById("tabbrowser-tabs");
     61  let verticalTabs = document.querySelector("#vertical-tabs");
     62  let pinnedTabsContainer = document.querySelector("#pinned-tabs-container");
     63 
     64  ok(BrowserTestUtils.isVisible(verticalTabs), "Vertical tabs slot is visible");
     65  is(
     66    tabStrip.parentNode,
     67    verticalTabs,
     68    "Tabstrip is slotted into the sidebar vertical tabs container"
     69  );
     70  ok(
     71    BrowserTestUtils.isVisible(pinnedTabsContainer),
     72    "Vertical pinned tabs container is visible"
     73  );
     74  is(
     75    pinnedTabsContainer.children.length,
     76    gBrowser.pinnedTabCount,
     77    "Three tabs are in the vertical pinned tabs container"
     78  );
     79 
     80  let [tab1, tab2, tab3, tab4] = gBrowser.tabs;
     81  ok(tab1.pinned, "First tab is pinned");
     82  ok(tab2.pinned, "Second tab is pinned");
     83  ok(tab3.pinned, "Third tab is pinned");
     84  ok(!tab4.pinned, "Fourth tab is not pinned");
     85  ok(tab3.selected, "Third tab is selected");
     86 
     87  is(
     88    tab1.linkedBrowser.currentURI.spec,
     89    REMOTE_URL,
     90    "First tab has matching URL"
     91  );
     92  is(
     93    tab2.linkedBrowser.currentURI.spec,
     94    ABOUT_MOZILLA,
     95    "Second tab has matching URL"
     96  );
     97  is(
     98    tab3.linkedBrowser.currentURI.spec,
     99    ABOUT_ROBOTS_URL,
    100    "Third tab has matching URL"
    101  );
    102 
    103  // cleanup
    104  await promiseBrowserState(BACKUP_STATE);
    105 });