Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/**
* Tests that the add bookmark for frame dialog functions correctly.
*/
const BASE_URL =
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();
});