summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_bookmarkProperties_newFolder.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_bookmarkProperties_newFolder.js')
-rw-r--r--browser/components/places/tests/browser/browser_bookmarkProperties_newFolder.js110
1 files changed, 110 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_bookmarkProperties_newFolder.js b/browser/components/places/tests/browser/browser_bookmarkProperties_newFolder.js
new file mode 100644
index 0000000000..23eec11e1d
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_bookmarkProperties_newFolder.js
@@ -0,0 +1,110 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+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"
+ );
+});