tor-browser

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

browser_history_recently_closed_middleclick.js (3447B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 // Verifies that middle-clicking "Recently Closed Tabs" in both history
      5 // menus works as expected.
      6 
      7 const URLS = [
      8  "http://example.com/",
      9  "http://example.org/",
     10  "http://example.net/",
     11 ];
     12 
     13 async function setupTest() {
     14  // Navigate the initial tab to ensure that it won't be reused for the tab
     15  // that will be reopened.
     16  let loadPromise = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
     17  BrowserTestUtils.startLoadingURIString(
     18    gBrowser.selectedBrowser,
     19    "https://example.com"
     20  );
     21  await loadPromise;
     22 
     23  // Populate the recently closed tabs list.
     24  for (let url of URLS) {
     25    await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
     26  }
     27  for (let i = 0; i < URLS.length; i++) {
     28    gBrowser.removeTab(gBrowser.selectedTab);
     29  }
     30 
     31  return gBrowser.tabs.length;
     32 }
     33 
     34 add_task(async function testMenubar() {
     35  if (AppConstants.platform === "macosx") {
     36    ok(true, "Can't open menu items on macOS");
     37    return;
     38  }
     39 
     40  let nOpenTabs = await setupTest();
     41 
     42  // Open the "History" menu.
     43  let menu = document.getElementById("history-menu");
     44  let popupPromise = BrowserTestUtils.waitForEvent(menu, "popupshown");
     45  menu.open = true;
     46  await popupPromise;
     47  ok(true, "Opened 'History' menu");
     48 
     49  // Open the "Recently Closed Tabs" submenu.
     50  let undoMenu = document.getElementById("historyUndoMenu");
     51  popupPromise = BrowserTestUtils.waitForEvent(undoMenu, "popupshown");
     52  undoMenu.open = true;
     53  let popupEvent = await popupPromise;
     54  ok(true, "Opened 'Recently Closed Tabs' menu");
     55 
     56  // And now middle-click the first item in that menu, and ensure that we're
     57  // only opening a single new tab.
     58  let menuitems = popupEvent.target.querySelectorAll("menuitem");
     59  let newTabPromise = BrowserTestUtils.waitForNewTab(gBrowser, null, true);
     60  popupEvent.target.activateItem(menuitems[0], { button: 1 });
     61 
     62  let newTab = await newTabPromise;
     63  is(newTab.linkedBrowser.currentURI.spec, URLS[0], "Opened correct URL");
     64  is(gBrowser.tabs.length, nOpenTabs + 1, "Only opened 1 new tab");
     65 
     66  gBrowser.removeTab(newTab);
     67 });
     68 
     69 add_task(async function testHistoryPanel() {
     70  let nOpenTabs = await setupTest();
     71 
     72  // Setup history panel.
     73  CustomizableUI.addWidgetToArea(
     74    "history-panelmenu",
     75    CustomizableUI.AREA_FIXED_OVERFLOW_PANEL
     76  );
     77  registerCleanupFunction(() => CustomizableUI.reset());
     78  await openHistoryPanel();
     79 
     80  // Open the "Recently closed tabs" panel.
     81  let recentlyClosedTabs = document.getElementById("appMenuRecentlyClosedTabs");
     82  recentlyClosedTabs.click();
     83 
     84  let recentlyClosedTabsPanel = document.getElementById(
     85    "appMenu-library-recentlyClosedTabs"
     86  );
     87  await BrowserTestUtils.waitForEvent(recentlyClosedTabsPanel, "ViewShown");
     88  ok(true, "Opened 'Recently closed tabs' panel");
     89 
     90  let panelBody = recentlyClosedTabsPanel.querySelector(".panel-subview-body");
     91  let toolbarButtons = panelBody.querySelectorAll("toolbarbutton");
     92 
     93  // Middle-click the first toolbar button in the panel.
     94  let newTabPromise = BrowserTestUtils.waitForNewTab(gBrowser, null, true);
     95  EventUtils.sendMouseEvent(
     96    { type: "click", button: 1 },
     97    toolbarButtons[0],
     98    window
     99  );
    100 
    101  let newTab = await newTabPromise;
    102  is(newTab.linkedBrowser.currentURI.spec, URLS[0], "Opened correct URL");
    103  is(gBrowser.tabs.length, nOpenTabs + 1, "Only opened 1 new tab");
    104 
    105  gBrowser.removeTab(newTab);
    106 });