Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
*/
const TEST_URL = "about:robots";
StarUI._createPanelIfNeeded();
const bookmarkPanel = document.getElementById("editBookmarkPanel");
let folders;
add_setup(async function () {
await PlacesUtils.bookmarks.eraseEverything();
bookmarkPanel.setAttribute("animate", false);
let oldTimeout = StarUI._autoCloseTimeout;
// Make the timeout something big, so it doesn't iteract badly with tests.
StarUI._autoCloseTimeout = 6000000;
let tab = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: TEST_URL,
waitForStateStop: true,
});
registerCleanupFunction(async () => {
StarUI._autoCloseTimeout = oldTimeout;
BrowserTestUtils.removeTab(tab);
bookmarkPanel.removeAttribute("animate");
await PlacesUtils.bookmarks.eraseEverything();
});
});
add_task(async function test_newFolder() {
let newBookmarkObserver = PlacesTestUtils.waitForNotification(
"bookmark-added",
events => events.some(({ url }) => url === TEST_URL)
);
await clickBookmarkStar();
// Open folder selector.
document.getElementById("editBMPanel_foldersExpander").click();
let folderTree = document.getElementById("editBMPanel_folderTree");
// Create new folder.
let newFolderButton = document.getElementById("editBMPanel_newFolderButton");
newFolderButton.click();
let newFolderGuid;
let newFolderObserver = PlacesTestUtils.waitForNotification(
"bookmark-added",
events => {
for (let { guid, itemType } of events) {
newFolderGuid = guid;
if (itemType == PlacesUtils.bookmarks.TYPE_FOLDER) {
return true;
}
}
return false;
}
);
let menulist = document.getElementById("editBMPanel_folderMenuList");
await newFolderObserver;
// Wait for the folder to be created and for editing to start.
await TestUtils.waitForCondition(
() => folderTree.hasAttribute("editing"),
"Should be in edit mode for the new folder"
);
Assert.equal(
menulist.selectedItem.label,
newFolderButton.label,
"Should have the new folder selected by default"
);
let renameObserver = PlacesTestUtils.waitForNotification(
"bookmark-title-changed",
events => events.some(e => e.title === "f")
);
// Enter a new name.
EventUtils.synthesizeKey("f", {}, window);
EventUtils.synthesizeKey("VK_RETURN", {}, window);
await renameObserver;
await TestUtils.waitForCondition(
() => !folderTree.hasAttribute("editing"),
"Should have stopped editing the new folder"
);
Assert.equal(
menulist.selectedItem.label,
"f",
"Should have the new folder title"
);
await hideBookmarksPanel();
await newBookmarkObserver;
let bookmark = await PlacesUtils.bookmarks.fetch({ url: TEST_URL });
Assert.equal(
bookmark.parentGuid,
newFolderGuid,
"The bookmark should be parented by the new folder"
);
});