tor-browser

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

browser_tab_groups_undo.js (3361B)


      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_tabGroupsUndo() {
     13  Assert.equal(
     14    SessionStore.getLastClosedTabGroupId(window),
     15    null,
     16    "Should start without a last closed tab group id"
     17  );
     18  Assert.equal(
     19    window.gBrowser.tabGroups.length,
     20    0,
     21    "Should start with no tab groups"
     22  );
     23 
     24  let groupedTabs = [
     25    BrowserTestUtils.addTab(gBrowser, "https://example.com"),
     26    BrowserTestUtils.addTab(gBrowser, "https://example.com"),
     27  ];
     28  await Promise.all(
     29    groupedTabs.map(g => promiseBrowserLoaded(g.linkedBrowser))
     30  );
     31 
     32  info("Adding to tab group");
     33  let tabGroup = gBrowser.addTabGroup(groupedTabs);
     34  let tabGroupId = tabGroup.id;
     35 
     36  info("Waiting for tab group removed");
     37  let removePromise = BrowserTestUtils.waitForEvent(
     38    tabGroup,
     39    "TabGroupRemoved"
     40  );
     41  await gBrowser.removeTabGroup(tabGroup);
     42  await removePromise;
     43 
     44  await TabStateFlusher.flushWindow(window);
     45 
     46  info("Waiting for getLastClosedTabGroupId");
     47  await BrowserTestUtils.waitForCondition(
     48    () => SessionStore.getLastClosedTabGroupId(window) !== null
     49  );
     50 
     51  Assert.equal(
     52    SessionStore.getLastClosedTabGroupId(window),
     53    tabGroupId,
     54    "SessionStore saves the ID of the last closed tab group"
     55  );
     56 
     57  SessionWindowUI.undoCloseTab(window);
     58 
     59  Assert.equal(window.gBrowser.tabGroups.length, 1, "Tab group was restored");
     60  Assert.equal(
     61    SessionStore.getLastClosedTabGroupId(window),
     62    null,
     63    "SessionStore reset the ID of the last closed tab group"
     64  );
     65 
     66  BrowserTestUtils.removeTab(gBrowser.tabGroups[0].tabs[0]);
     67  Assert.equal(
     68    SessionStore.getLastClosedTabGroupId(window),
     69    null,
     70    "SessionStore last closed group ID is null after closing a tab within a group"
     71  );
     72 
     73  let ungroupedTab = BrowserTestUtils.addTab(gBrowser, "https://example.com");
     74  await promiseBrowserLoaded(ungroupedTab.linkedBrowser);
     75  BrowserTestUtils.removeTab(ungroupedTab);
     76 
     77  Assert.equal(
     78    SessionStore.getLastClosedTabGroupId(window),
     79    null,
     80    "SessionStore last closed group ID is null after closing a tab not in a group"
     81  );
     82 
     83  let savedGroupedTabs = [
     84    BrowserTestUtils.addTab(gBrowser, "https://example.com"),
     85    BrowserTestUtils.addTab(gBrowser, "https://example.com"),
     86  ];
     87  await Promise.all(
     88    savedGroupedTabs.map(g => promiseBrowserLoaded(g.linkedBrowser))
     89  );
     90  info("Adding to tab group");
     91  let savedTabGroup = gBrowser.addTabGroup(savedGroupedTabs);
     92  let savedTabGroupId = savedTabGroup.id;
     93 
     94  savedTabGroup.save();
     95  info("Waiting for tab group removed");
     96  removePromise = BrowserTestUtils.waitForEvent(
     97    savedTabGroup,
     98    "TabGroupRemoved"
     99  );
    100  await gBrowser.removeTabGroup(savedTabGroup);
    101  await removePromise;
    102 
    103  await TabStateFlusher.flushWindow(window);
    104 
    105  info("Waiting for getLastClosedTabGroupId");
    106  await BrowserTestUtils.waitForCondition(
    107    () => SessionStore.getLastClosedTabGroupId(window) !== null
    108  );
    109 
    110  Assert.equal(
    111    SessionStore.getLastClosedTabGroupId(window),
    112    savedTabGroupId,
    113    "SessionStore saves the ID of the last saved and closed tab group"
    114  );
    115 
    116  gBrowser.removeAllTabsBut(gBrowser.tabs[0]);
    117 });