tor-browser

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

browser_tab_groups_saved.js (3371B)


      1 "use strict";
      2 
      3 const ORIG_STATE = SessionStore.getBrowserState();
      4 
      5 registerCleanupFunction(async () => {
      6  await SessionStoreTestUtils.promiseBrowserState(ORIG_STATE);
      7 });
      8 
      9 add_task(async function test_SaveTabGroups() {
     10  let win = await promiseNewWindowLoaded();
     11  let state = ss.getCurrentState(win);
     12  Assert.equal(
     13    state.savedGroups.length,
     14    0,
     15    "savedGroups starts in initial state"
     16  );
     17 
     18  let tab1 = BrowserTestUtils.addTab(win.gBrowser, "about:mozilla");
     19  await BrowserTestUtils.browserLoaded(tab1.linkedBrowser);
     20  await TabStateFlusher.flush(tab1.linkedBrowser);
     21  let group1 = win.gBrowser.addTabGroup([tab1]);
     22  ss.addSavedTabGroup(group1);
     23 
     24  let tab2 = BrowserTestUtils.addTab(win.gBrowser, "about:logo");
     25  await BrowserTestUtils.browserLoaded(tab2.linkedBrowser);
     26  await TabStateFlusher.flush(tab2.linkedBrowser);
     27  let group2 = win.gBrowser.addTabGroup([tab2]);
     28  ss.addSavedTabGroup(group2);
     29 
     30  state = ss.getCurrentState();
     31 
     32  Assert.equal(state.savedGroups.length, 2, "savedGroups has 2 groups");
     33  Assert.equal(state.savedGroups[0].id, group1.id, "group1 is in savedGroups");
     34  Assert.equal(state.savedGroups[0].tabs.length, 1, "group1 has 1 tab");
     35  Assert.equal(state.savedGroups[1].id, group2.id, "group2 is in savedGroups");
     36  Assert.equal(state.savedGroups[1].tabs.length, 1, "group2 has 1 tab");
     37 
     38  ss.forgetSavedTabGroup(group1.id);
     39  await win.gBrowser.removeTabGroup(group1);
     40  state = ss.getCurrentState();
     41 
     42  Assert.equal(state.savedGroups.length, 1, "savedGroups has 1 group");
     43  Assert.equal(state.savedGroups[0].id, group2.id, "group2 is in savedGroups");
     44  Assert.equal(state.savedGroups[0].tabs.length, 1, "group2 still has 1 tab");
     45 
     46  ss.forgetSavedTabGroup(group2.id);
     47  await win.gBrowser.removeTabGroup(group2);
     48  await BrowserTestUtils.closeWindow(win);
     49  forgetClosedWindows();
     50 });
     51 
     52 /**
     53 * Newtabs with no history are considered unimportant and are ignored by
     54 * sessionstore. Groups of unimportant tabs should also be ignored.
     55 */
     56 add_task(async function test_ignoreUnimportantTabGroups() {
     57  let win = await promiseNewWindowLoaded();
     58  let state = ss.getCurrentState(win);
     59  Assert.equal(state.savedGroups.length, 0, "savedGroups starts empty");
     60 
     61  let tab1 = BrowserTestUtils.addTab(win.gBrowser, "about:newtab");
     62  await BrowserTestUtils.browserLoaded(tab1.linkedBrowser);
     63  await TabStateFlusher.flush(tab1.linkedBrowser);
     64  let group1 = win.gBrowser.addTabGroup([tab1]);
     65  ss.addSavedTabGroup(group1);
     66 
     67  state = ss.getCurrentState();
     68  Assert.equal(state.savedGroups.length, 0, "savedGroups is still empty");
     69 
     70  await win.gBrowser.removeTabGroup(group1);
     71  await BrowserTestUtils.closeWindow(win);
     72  forgetClosedWindows();
     73 });
     74 
     75 add_task(async function test_refuseToSaveGroupsInPrivateWindows() {
     76  const privateWin = await BrowserTestUtils.openNewBrowserWindow({
     77    private: true,
     78  });
     79 
     80  let tab = BrowserTestUtils.addTab(privateWin.gBrowser, "about:newtab");
     81  await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
     82  await TabStateFlusher.flush(tab.linkedBrowser);
     83  let group = privateWin.gBrowser.addTabGroup([tab]);
     84 
     85  Assert.throws(
     86    () => {
     87      ss.addSavedTabGroup(group);
     88    },
     89    /Refusing to save tab group/,
     90    "addSavedTabGroup throws exception when trying to save a tab group from a private window"
     91  );
     92  await BrowserTestUtils.closeWindow(privateWin);
     93  forgetClosedWindows();
     94 });