summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_bookmarks_toolbar_context_menu_view_options.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_bookmarks_toolbar_context_menu_view_options.js')
-rw-r--r--browser/components/places/tests/browser/browser_bookmarks_toolbar_context_menu_view_options.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_bookmarks_toolbar_context_menu_view_options.js b/browser/components/places/tests/browser/browser_bookmarks_toolbar_context_menu_view_options.js
new file mode 100644
index 0000000000..6e1f5e93c2
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_bookmarks_toolbar_context_menu_view_options.js
@@ -0,0 +1,87 @@
+/* Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_task(async function testPopup() {
+ let bookmark = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
+ url: "http://example.com",
+ title: "firefox",
+ });
+ registerCleanupFunction(async () => {
+ await PlacesUtils.bookmarks.remove(bookmark);
+ Services.prefs.clearUserPref("browser.toolbars.bookmarks.visibility");
+ });
+
+ for (let state of ["always", "newtab"]) {
+ info(`Testing with state set to '${state}'`);
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.toolbars.bookmarks.visibility", state]],
+ });
+
+ let newtab = await BrowserTestUtils.openNewForegroundTab({
+ gBrowser,
+ opening: "about:newtab",
+ waitForLoad: false,
+ });
+
+ let bookmarksToolbar = document.getElementById("PersonalToolbar");
+ await TestUtils.waitForCondition(
+ () => !bookmarksToolbar.collapsed,
+ "Wait for toolbar to become visible"
+ );
+ ok(!bookmarksToolbar.collapsed, "Bookmarks toolbar should be visible");
+
+ // 1. Right-click on a bookmark and check that the submenu is visible
+ let bookmarkItem = bookmarksToolbar.querySelector(
+ `.bookmark-item[label="firefox"]`
+ );
+ ok(bookmarkItem, "Got bookmark");
+ let contextMenu = document.getElementById("placesContext");
+ let popup = await openContextMenu(contextMenu, bookmarkItem);
+ ok(
+ !popup.target.querySelector("#toggle_PersonalToolbar").hidden,
+ "Bookmarks toolbar submenu should appear on a .bookmark-item"
+ );
+ contextMenu.hidePopup();
+
+ // 2. Right-click on the empty area and check that the submenu is visible
+ popup = await openContextMenu(contextMenu, bookmarksToolbar);
+ ok(
+ !popup.target.querySelector("#toggle_PersonalToolbar").hidden,
+ "Bookmarks toolbar submenu should appear on the empty part of the toolbar"
+ );
+
+ let bookmarksToolbarMenu = document.querySelector(
+ "#toggle_PersonalToolbar"
+ );
+ let subMenu = bookmarksToolbarMenu.querySelector("menupopup");
+ bookmarksToolbarMenu.openMenu(true);
+ await BrowserTestUtils.waitForPopupEvent(subMenu, "shown");
+ let menuitems = subMenu.querySelectorAll("menuitem");
+ for (let menuitem of menuitems) {
+ let expected = menuitem.dataset.visibilityEnum == state;
+ is(
+ menuitem.getAttribute("checked"),
+ expected.toString(),
+ `The corresponding menuitem, ${menuitem.dataset.visibilityEnum}, ${
+ expected ? "should" : "shouldn't"
+ } be checked if state=${state}`
+ );
+ }
+
+ contextMenu.hidePopup();
+
+ BrowserTestUtils.removeTab(newtab);
+ }
+});
+
+function openContextMenu(contextMenu, target) {
+ let popupPromise = BrowserTestUtils.waitForPopupEvent(contextMenu, "shown");
+ EventUtils.synthesizeMouseAtCenter(target, {
+ type: "contextmenu",
+ button: 2,
+ });
+ return popupPromise;
+}