tor-browser

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

browser_tab_groups_save_on_removeTabsToTheEnd.js (3082B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   https://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const ORIG_STATE = SessionStore.getBrowserState();
      7 
      8 registerCleanupFunction(async () => {
      9  await SessionStoreTestUtils.promiseBrowserState(ORIG_STATE);
     10 });
     11 
     12 add_task(async function test_removeTabsToTheEnd_saves_tab_groups() {
     13  let win = await promiseNewWindowLoaded();
     14  let tab1 = BrowserTestUtils.addTab(win.gBrowser, "about:robots");
     15  let tab2 = BrowserTestUtils.addTab(win.gBrowser, "about:robots");
     16  let tab3 = BrowserTestUtils.addTab(win.gBrowser, "about:robots");
     17 
     18  let tabGroup = win.gBrowser.addTabGroup([tab2, tab3], { insertBefore: tab2 });
     19  let tabGroupId = tabGroup.id;
     20 
     21  await TabStateFlusher.flushWindow(win);
     22 
     23  Assert.equal(
     24    win.gBrowser.tabs.length,
     25    4,
     26    "should be 4 tabs: 1 tab from new window and 3 tabs just created"
     27  );
     28  Assert.equal(
     29    SessionStore.getSavedTabGroups().length,
     30    0,
     31    "should not be any saved tab groups to start"
     32  );
     33 
     34  win.gBrowser.removeTabsToTheEndFrom(tab1);
     35 
     36  await TestUtils.waitForCondition(
     37    () => win.gBrowser.tabs.length == 2,
     38    "waiting for tabs to the end to close"
     39  );
     40 
     41  await TabStateFlusher.flushWindow(win);
     42 
     43  Assert.equal(
     44    SessionStore.getSavedTabGroups().length,
     45    1,
     46    "should have saved a tab group"
     47  );
     48  Assert.ok(
     49    SessionStore.getSavedTabGroup(tabGroupId),
     50    "should have saved the tab group that was closed"
     51  );
     52 
     53  await BrowserTestUtils.closeWindow(win);
     54  forgetClosedWindows();
     55  forgetSavedTabGroups();
     56 });
     57 
     58 add_task(
     59  async function test_removeTabsToTheEnd_only_saves_when_whole_tab_group_removed() {
     60    let win = await promiseNewWindowLoaded();
     61    let tab1 = BrowserTestUtils.addTab(win.gBrowser, "about:robots");
     62    let tab2 = BrowserTestUtils.addTab(win.gBrowser, "about:robots");
     63    BrowserTestUtils.addTab(win.gBrowser, "about:robots");
     64 
     65    let tabGroup = win.gBrowser.addTabGroup([tab1, tab2], {
     66      insertBefore: tab1,
     67    });
     68 
     69    await TabStateFlusher.flushWindow(win);
     70 
     71    Assert.equal(
     72      win.gBrowser.tabs.length,
     73      4,
     74      "should be 4 tabs: 1 tab from new window and 3 tabs just created"
     75    );
     76    Assert.equal(
     77      SessionStore.getSavedTabGroups().length,
     78      0,
     79      "should not be any saved tab groups to start"
     80    );
     81 
     82    win.gBrowser.removeTabsToTheEndFrom(tab1);
     83 
     84    await TestUtils.waitForCondition(
     85      () => win.gBrowser.tabs.length == 2,
     86      "waiting for tabs to the end to close"
     87    );
     88 
     89    await TabStateFlusher.flushWindow(win);
     90 
     91    Assert.equal(
     92      SessionStore.getSavedTabGroups().length,
     93      0,
     94      "should not have saved a tab group because one did not close"
     95    );
     96    Assert.deepEqual(
     97      win.gBrowser.tabGroups,
     98      [tabGroup],
     99      "tab group should still exist in the tab strip"
    100    );
    101    Assert.deepEqual(
    102      tabGroup.tabs,
    103      [tab1],
    104      "tab group should just have one tab left"
    105    );
    106 
    107    await win.gBrowser.removeTabGroup(tabGroup);
    108    await BrowserTestUtils.closeWindow(win);
    109    forgetClosedWindows();
    110    forgetSavedTabGroups();
    111  }
    112 );