summaryrefslogtreecommitdiffstats
path: root/browser/components/customizableui/test/browser_history_recently_closed.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/customizableui/test/browser_history_recently_closed.js')
-rw-r--r--browser/components/customizableui/test/browser_history_recently_closed.js198
1 files changed, 198 insertions, 0 deletions
diff --git a/browser/components/customizableui/test/browser_history_recently_closed.js b/browser/components/customizableui/test/browser_history_recently_closed.js
new file mode 100644
index 0000000000..01039ed960
--- /dev/null
+++ b/browser/components/customizableui/test/browser_history_recently_closed.js
@@ -0,0 +1,198 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+const TEST_PATH = getRootDirectory(gTestPath).replace(
+ "chrome://mochitests/content",
+ "http://example.com"
+);
+
+add_task(async function testRecentlyClosedDisabled() {
+ info("Check history recently closed tabs/windows section");
+
+ CustomizableUI.addWidgetToArea(
+ "history-panelmenu",
+ CustomizableUI.AREA_FIXED_OVERFLOW_PANEL
+ );
+ registerCleanupFunction(() => CustomizableUI.reset());
+
+ // We need to make sure the history is cleared before starting the test
+ await Sanitizer.sanitize(["history"]);
+
+ await openHistoryPanel();
+
+ let recentlyClosedTabs = document.getElementById("appMenuRecentlyClosedTabs");
+ let recentlyClosedWindows = document.getElementById(
+ "appMenuRecentlyClosedWindows"
+ );
+
+ // Wait for the disabled attribute to change, as we receive
+ // the "viewshown" event before this changes
+ await BrowserTestUtils.waitForCondition(
+ () => recentlyClosedTabs.getAttribute("disabled"),
+ "Waiting for button to become disabled"
+ );
+ Assert.ok(
+ recentlyClosedTabs.getAttribute("disabled"),
+ "Recently closed tabs button disabled"
+ );
+ Assert.ok(
+ recentlyClosedWindows.getAttribute("disabled"),
+ "Recently closed windows button disabled"
+ );
+
+ await hideHistoryPanel();
+
+ gBrowser.selectedTab.focus();
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ TEST_PATH + "dummy_history_item.html"
+ );
+ BrowserTestUtils.removeTab(tab);
+
+ await openHistoryPanel();
+
+ await BrowserTestUtils.waitForCondition(
+ () => !recentlyClosedTabs.getAttribute("disabled"),
+ "Waiting for button to be enabled"
+ );
+ Assert.ok(
+ !recentlyClosedTabs.getAttribute("disabled"),
+ "Recently closed tabs is available"
+ );
+ Assert.ok(
+ recentlyClosedWindows.getAttribute("disabled"),
+ "Recently closed windows button disabled"
+ );
+
+ await hideHistoryPanel();
+
+ let newWin = await BrowserTestUtils.openNewBrowserWindow();
+ let loadedPromise = BrowserTestUtils.browserLoaded(
+ newWin.gBrowser.selectedBrowser
+ );
+ BrowserTestUtils.loadURIString(
+ newWin.gBrowser.selectedBrowser,
+ "about:mozilla"
+ );
+ await loadedPromise;
+ await BrowserTestUtils.closeWindow(newWin);
+
+ await openHistoryPanel();
+
+ await BrowserTestUtils.waitForCondition(
+ () => !recentlyClosedWindows.getAttribute("disabled"),
+ "Waiting for button to be enabled"
+ );
+ Assert.ok(
+ !recentlyClosedTabs.getAttribute("disabled"),
+ "Recently closed tabs is available"
+ );
+ Assert.ok(
+ !recentlyClosedWindows.getAttribute("disabled"),
+ "Recently closed windows is available"
+ );
+
+ await hideHistoryPanel();
+});
+
+add_task(async function testRecentlyClosedTabsDisabledPersists() {
+ info("Check history recently closed tabs/windows section");
+
+ CustomizableUI.addWidgetToArea(
+ "history-panelmenu",
+ CustomizableUI.AREA_FIXED_OVERFLOW_PANEL
+ );
+ registerCleanupFunction(() => CustomizableUI.reset());
+
+ // We need to make sure the history is cleared before starting the test
+ await Sanitizer.sanitize(["history"]);
+
+ await openHistoryPanel();
+
+ let recentlyClosedTabs = document.getElementById("appMenuRecentlyClosedTabs");
+ Assert.ok(
+ recentlyClosedTabs.getAttribute("disabled"),
+ "Recently closed tabs button disabled"
+ );
+
+ await hideHistoryPanel();
+
+ let newWin = await BrowserTestUtils.openNewBrowserWindow();
+
+ await openHistoryPanel(newWin.document);
+ recentlyClosedTabs = newWin.document.getElementById(
+ "appMenuRecentlyClosedTabs"
+ );
+ Assert.ok(
+ recentlyClosedTabs.getAttribute("disabled"),
+ "Recently closed tabs is disabled"
+ );
+
+ // We close the window without hiding the panel first, which used to interfere
+ // with populating the view subsequently.
+ await BrowserTestUtils.closeWindow(newWin);
+
+ newWin = await BrowserTestUtils.openNewBrowserWindow();
+ await openHistoryPanel(newWin.document);
+ recentlyClosedTabs = newWin.document.getElementById(
+ "appMenuRecentlyClosedTabs"
+ );
+ Assert.ok(
+ recentlyClosedTabs.getAttribute("disabled"),
+ "Recently closed tabs is disabled"
+ );
+ await hideHistoryPanel(newWin.document);
+ await BrowserTestUtils.closeWindow(newWin);
+});
+
+add_task(async function testRecentlyClosedWindows() {
+ // We need to make sure the history is cleared before starting the test
+ await Sanitizer.sanitize(["history"]);
+
+ // Open and close a new window.
+ let newWin = await BrowserTestUtils.openNewBrowserWindow();
+ let loadedPromise = BrowserTestUtils.browserLoaded(
+ newWin.gBrowser.selectedBrowser
+ );
+ BrowserTestUtils.loadURIString(
+ newWin.gBrowser.selectedBrowser,
+ "https://example.com"
+ );
+ await loadedPromise;
+ await BrowserTestUtils.closeWindow(newWin);
+
+ CustomizableUI.addWidgetToArea(
+ "history-panelmenu",
+ CustomizableUI.AREA_FIXED_OVERFLOW_PANEL
+ );
+ registerCleanupFunction(() => CustomizableUI.reset());
+ await openHistoryPanel();
+
+ // Open the "Recently closed windows" panel.
+ document.getElementById("appMenuRecentlyClosedWindows").click();
+
+ let winPanel = document.getElementById(
+ "appMenu-library-recentlyClosedWindows"
+ );
+ await BrowserTestUtils.waitForEvent(winPanel, "ViewShown");
+ ok(true, "Opened 'Recently closed windows' panel");
+
+ // Click the first toolbar button in the panel.
+ let panelBody = winPanel.querySelector(".panel-subview-body");
+ let toolbarButton = panelBody.querySelector("toolbarbutton");
+ let newWindowPromise = BrowserTestUtils.waitForNewWindow();
+ EventUtils.sendMouseEvent({ type: "click" }, toolbarButton, window);
+
+ newWin = await newWindowPromise;
+ is(
+ newWin.gBrowser.currentURI.spec,
+ "https://example.com/",
+ "Opened correct URL"
+ );
+ is(gBrowser.tabs.length, 1, "Did not open new tabs");
+
+ await BrowserTestUtils.closeWindow(newWin);
+});