summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_autoshow_bookmarks_toolbar.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_autoshow_bookmarks_toolbar.js')
-rw-r--r--browser/components/places/tests/browser/browser_autoshow_bookmarks_toolbar.js165
1 files changed, 165 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_autoshow_bookmarks_toolbar.js b/browser/components/places/tests/browser/browser_autoshow_bookmarks_toolbar.js
new file mode 100644
index 0000000000..c841eb276b
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_autoshow_bookmarks_toolbar.js
@@ -0,0 +1,165 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const LOCATION_PREF = "browser.bookmarks.defaultLocation";
+const TOOLBAR_VISIBILITY_PREF = "browser.toolbars.bookmarks.visibility";
+let bookmarkPanel;
+let win;
+
+add_setup(async function () {
+ Services.prefs.clearUserPref(LOCATION_PREF);
+ await PlacesUtils.bookmarks.eraseEverything();
+
+ win = await BrowserTestUtils.openNewBrowserWindow();
+
+ let oldTimeout = win.StarUI._autoCloseTimeout;
+ // Make the timeout something big, so it doesn't interact badly with tests.
+ win.StarUI._autoCloseTimeout = 6000000;
+
+ win.StarUI._createPanelIfNeeded();
+ bookmarkPanel = win.document.getElementById("editBookmarkPanel");
+ bookmarkPanel.setAttribute("animate", false);
+
+ registerCleanupFunction(async () => {
+ bookmarkPanel = null;
+ win.StarUI._autoCloseTimeout = oldTimeout;
+ await BrowserTestUtils.closeWindow(win);
+ win = null;
+ await PlacesUtils.bookmarks.eraseEverything();
+ Services.prefs.clearUserPref(LOCATION_PREF);
+ });
+});
+
+/**
+ * Helper to check we've shown the toolbar
+ *
+ * @param {object} options
+ * Options for the test
+ * @param {boolean} options.showToolbar
+ * If the toolbar should be shown or not
+ * @param {string} options.expectedFolder
+ * The expected folder to be shown
+ * @param {string} options.reason
+ * The reason the toolbar should be shown
+ */
+async function checkResponse({ showToolbar, expectedFolder, reason }) {
+ // Check folder.
+ let menuList = win.document.getElementById("editBMPanel_folderMenuList");
+
+ Assert.equal(
+ menuList.label,
+ PlacesUtils.getString(expectedFolder),
+ `Should have ${expectedFolder} selected ${reason}.`
+ );
+
+ // Check toolbar:
+ let toolbar = win.document.getElementById("PersonalToolbar");
+ Assert.equal(
+ !toolbar.collapsed,
+ showToolbar,
+ `Toolbar should be ${showToolbar ? "visible" : "hidden"} ${reason}.`
+ );
+
+ // Confirm and close the dialog.
+ let hiddenPromise = promisePopupHidden(
+ win.document.getElementById("editBookmarkPanel")
+ );
+ win.document.getElementById("editBookmarkPanelRemoveButton").click();
+ await hiddenPromise;
+}
+
+/**
+ * Test that if we create a bookmark on the toolbar, we show the
+ * toolbar:
+ */
+add_task(async function test_new_on_toolbar() {
+ await BrowserTestUtils.withNewTab(
+ { gBrowser: win.gBrowser, url: "https://example.com/1" },
+ async browser => {
+ let toolbar = win.document.getElementById("PersonalToolbar");
+ Assert.equal(
+ toolbar.collapsed,
+ true,
+ "Bookmarks toolbar should start out collapsed."
+ );
+ let shownPromise = promisePopupShown(
+ win.document.getElementById("editBookmarkPanel")
+ );
+ win.document.getElementById("Browser:AddBookmarkAs").doCommand();
+ await shownPromise;
+ await TestUtils.waitForCondition(
+ () => !toolbar.collapsed,
+ "Toolbar should be shown."
+ );
+ let expectedFolder = "BookmarksToolbarFolderTitle";
+ let reason = "when creating a bookmark there";
+ await checkResponse({ showToolbar: true, expectedFolder, reason });
+ }
+ );
+});
+
+/**
+ * Test that if we create a bookmark on the toolbar, we do not
+ * show the toolbar if toolbar should never be shown:
+ */
+add_task(async function test_new_on_toolbar_never_show_toolbar() {
+ await SpecialPowers.pushPrefEnv({
+ set: [[TOOLBAR_VISIBILITY_PREF, "never"]],
+ });
+
+ await BrowserTestUtils.withNewTab(
+ { gBrowser: win.gBrowser, url: "https://example.com/1" },
+ async browser => {
+ let toolbar = win.document.getElementById("PersonalToolbar");
+ Assert.equal(
+ toolbar.collapsed,
+ true,
+ "Bookmarks toolbar should start out collapsed."
+ );
+ let shownPromise = promisePopupShown(
+ win.document.getElementById("editBookmarkPanel")
+ );
+ win.document.getElementById("Browser:AddBookmarkAs").doCommand();
+ await shownPromise;
+ let expectedFolder = "BookmarksToolbarFolderTitle";
+ let reason = "when the visibility pref is 'never'";
+ await checkResponse({ showToolbar: false, expectedFolder, reason });
+ }
+ );
+
+ await SpecialPowers.popPrefEnv();
+});
+
+/**
+ * Test that if we edit an existing bookmark, we don't show the toolbar.
+ */
+add_task(async function test_existing_on_toolbar() {
+ // Create the bookmark first:
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
+ title: "Test for editing",
+ url: "https://example.com/editing-test",
+ });
+ await BrowserTestUtils.withNewTab(
+ { gBrowser: win.gBrowser, url: "https://example.com/editing-test" },
+ async browser => {
+ await TestUtils.waitForCondition(
+ () => win.BookmarkingUI.status == BookmarkingUI.STATUS_STARRED,
+ "Page should be starred."
+ );
+
+ let toolbar = win.document.getElementById("PersonalToolbar");
+ Assert.equal(
+ toolbar.collapsed,
+ true,
+ "Bookmarks toolbar should start out collapsed."
+ );
+ await clickBookmarkStar(win);
+ let expectedFolder = "BookmarksToolbarFolderTitle";
+ let reason = "when editing a bookmark there";
+ await checkResponse({ showToolbar: false, expectedFolder, reason });
+ }
+ );
+});