summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_addBookmarkForFrame.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_addBookmarkForFrame.js')
-rw-r--r--browser/components/places/tests/browser/browser_addBookmarkForFrame.js150
1 files changed, 150 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_addBookmarkForFrame.js b/browser/components/places/tests/browser/browser_addBookmarkForFrame.js
new file mode 100644
index 0000000000..44a7f5e17a
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_addBookmarkForFrame.js
@@ -0,0 +1,150 @@
+/**
+ * Tests that the add bookmark for frame dialog functions correctly.
+ */
+
+const BASE_URL =
+ "http://mochi.test:8888/browser/browser/components/places/tests/browser";
+const PAGE_URL = BASE_URL + "/framedPage.html";
+const LEFT_URL = BASE_URL + "/frameLeft.html";
+const RIGHT_URL = BASE_URL + "/frameRight.html";
+
+function activateBookmarkFrame(contentAreaContextMenu) {
+ let popupHiddenPromise = BrowserTestUtils.waitForEvent(
+ contentAreaContextMenu,
+ "popuphidden"
+ );
+ return async function () {
+ let frameMenuItem = document.getElementById("frame");
+ let frameMenu = frameMenuItem.querySelector(":scope > menupopup");
+ let frameMenuShown = BrowserTestUtils.waitForEvent(frameMenu, "popupshown");
+ frameMenuItem.openMenu(true);
+ await frameMenuShown;
+ let bookmarkFrame = document.getElementById("context-bookmarkframe");
+ frameMenu.activateItem(bookmarkFrame);
+ await popupHiddenPromise;
+ };
+}
+
+async function withAddBookmarkForFrame(taskFn) {
+ // Open a tab and wait for all the subframes to load.
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE_URL);
+
+ let contentAreaContextMenu = document.getElementById(
+ "contentAreaContextMenu"
+ );
+
+ let popupShownPromise = BrowserTestUtils.waitForEvent(
+ contentAreaContextMenu,
+ "popupshown"
+ );
+ await BrowserTestUtils.synthesizeMouseAtCenter(
+ "#left",
+ { type: "contextmenu", button: 2 },
+ gBrowser.selectedBrowser
+ );
+ await popupShownPromise;
+
+ await withBookmarksDialog(
+ true,
+ activateBookmarkFrame(contentAreaContextMenu),
+ taskFn
+ );
+
+ BrowserTestUtils.removeTab(tab);
+}
+
+add_task(async function test_open_add_bookmark_for_frame() {
+ info("Test basic opening of the add bookmark for frame dialog.");
+ await withAddBookmarkForFrame(async dialogWin => {
+ let namepicker = dialogWin.document.getElementById(
+ "editBMPanel_namePicker"
+ );
+ Assert.ok(!namepicker.readOnly, "Name field is writable");
+ Assert.equal(namepicker.value, "Left frame", "Name field is correct.");
+
+ let expectedFolder = "BookmarksToolbarFolderTitle";
+ let expectedFolderName = PlacesUtils.getString(expectedFolder);
+
+ let folderPicker = dialogWin.document.getElementById(
+ "editBMPanel_folderMenuList"
+ );
+
+ await TestUtils.waitForCondition(
+ () => folderPicker.selectedItem.label == expectedFolderName,
+ "Dialog: The folder is the expected one."
+ );
+
+ let tagsField = dialogWin.document.getElementById("editBMPanel_tagsField");
+ Assert.equal(tagsField.value, "", "Dialog: The tags field should be empty");
+ });
+});
+
+add_task(async function test_move_bookmark_whilst_add_bookmark_open() {
+ info(
+ "EditBookmark: Test moving a bookmark whilst the add bookmark for frame dialog is open."
+ );
+ await PlacesUtils.bookmarks.eraseEverything();
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE_URL);
+
+ let contentAreaContextMenu = document.getElementById(
+ "contentAreaContextMenu"
+ );
+
+ let popupShownPromise = BrowserTestUtils.waitForEvent(
+ contentAreaContextMenu,
+ "popupshown"
+ );
+ await BrowserTestUtils.synthesizeMouseAtCenter(
+ "#left",
+ { type: "contextmenu", button: 2 },
+ gBrowser.selectedBrowser
+ );
+ await popupShownPromise;
+
+ await withBookmarksDialog(
+ false,
+ activateBookmarkFrame(contentAreaContextMenu),
+ async function (dialogWin) {
+ let expectedGuid = await PlacesUIUtils.defaultParentGuid;
+ let expectedFolder = "BookmarksToolbarFolderTitle";
+ let expectedFolderName = PlacesUtils.getString(expectedFolder);
+
+ let folderPicker = dialogWin.document.getElementById(
+ "editBMPanel_folderMenuList"
+ );
+
+ Assert.equal(
+ folderPicker.selectedItem.label,
+ expectedFolderName,
+ "EditBookmark: The folder is the expected one."
+ );
+
+ Assert.equal(
+ folderPicker.getAttribute("selectedGuid"),
+ expectedGuid,
+ "EditBookmark: Should have the correct default guid selected"
+ );
+
+ dialogWin.document.getElementById("editBMPanel_foldersExpander").click();
+ let folderTree = dialogWin.document.getElementById(
+ "editBMPanel_folderTree"
+ );
+ folderTree.selectItems([PlacesUtils.bookmarks.menuGuid]);
+ folderTree.blur();
+
+ EventUtils.synthesizeKey("VK_RETURN", {}, dialogWin);
+ }
+ );
+ let url = makeURI(LEFT_URL);
+ // Check the bookmark has been moved as expected.
+ let bookmark = await PlacesUtils.bookmarks.fetch({ url });
+
+ Assert.equal(
+ bookmark.parentGuid,
+ PlacesUtils.bookmarks.menuGuid,
+ "EditBookmark: The bookmark should be moved to the expected folder."
+ );
+
+ BrowserTestUtils.removeTab(tab);
+ await PlacesUtils.bookmarks.eraseEverything();
+});