summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_bookmarkProperties_folderSelection.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_bookmarkProperties_folderSelection.js')
-rw-r--r--browser/components/places/tests/browser/browser_bookmarkProperties_folderSelection.js170
1 files changed, 170 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_bookmarkProperties_folderSelection.js b/browser/components/places/tests/browser/browser_bookmarkProperties_folderSelection.js
new file mode 100644
index 0000000000..c40f0425cf
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_bookmarkProperties_folderSelection.js
@@ -0,0 +1,170 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+const TEST_URL = "about:robots";
+let bookmarkPanel;
+let folders;
+let win;
+
+add_setup(async function () {
+ await PlacesUtils.bookmarks.eraseEverything();
+
+ Services.prefs.clearUserPref("browser.bookmarks.defaultLocation");
+
+ win = await BrowserTestUtils.openNewBrowserWindow();
+ await BrowserTestUtils.openNewForegroundTab({
+ gBrowser: win.gBrowser,
+ opening: TEST_URL,
+ waitForStateStop: true,
+ });
+
+ let oldTimeout = win.StarUI._autoCloseTimeout;
+ // Make the timeout something big, so it doesn't iteract badly with tests.
+ win.StarUI._autoCloseTimeout = 6000000;
+
+ win.StarUI._createPanelIfNeeded();
+ bookmarkPanel = win.document.getElementById("editBookmarkPanel");
+ bookmarkPanel.setAttribute("animate", false);
+
+ registerCleanupFunction(async () => {
+ bookmarkPanel = null;
+ win.StarUI._autoCloseTimeout = oldTimeout;
+ await BrowserTestUtils.closeWindow(win);
+ win = null;
+ await PlacesUtils.bookmarks.eraseEverything();
+ });
+});
+
+add_task(async function test_selectChoose() {
+ await clickBookmarkStar(win);
+
+ // Open folder selector.
+ let menuList = win.document.getElementById("editBMPanel_folderMenuList");
+ let folderTreeRow = win.document.getElementById("editBMPanel_folderTreeRow");
+
+ let expectedFolder = "BookmarksToolbarFolderTitle";
+ let expectedGuid = PlacesUtils.bookmarks.toolbarGuid;
+
+ Assert.equal(
+ menuList.label,
+ PlacesUtils.getString(expectedFolder),
+ "Should have the expected bookmarks folder selected by default"
+ );
+ Assert.equal(
+ menuList.getAttribute("selectedGuid"),
+ expectedGuid,
+ "Should have the correct default guid selected"
+ );
+ Assert.equal(
+ folderTreeRow.hidden,
+ true,
+ "Should have the folder tree hidden"
+ );
+
+ let promisePopup = BrowserTestUtils.waitForEvent(
+ menuList.menupopup,
+ "popupshown"
+ );
+ EventUtils.synthesizeMouseAtCenter(menuList, {}, win);
+ await promisePopup;
+
+ // Click the choose item.
+ EventUtils.synthesizeMouseAtCenter(
+ win.document.getElementById("editBMPanel_chooseFolderMenuItem"),
+ {},
+ win
+ );
+
+ await TestUtils.waitForCondition(
+ () => !folderTreeRow.hidden,
+ "Should show the folder tree"
+ );
+ let folderTree = win.document.getElementById("editBMPanel_folderTree");
+ Assert.ok(folderTree.view, "The view should have been connected");
+
+ Assert.equal(
+ menuList.getAttribute("selectedGuid"),
+ expectedGuid,
+ "Should still have the correct selected guid"
+ );
+ Assert.equal(
+ menuList.label,
+ PlacesUtils.getString(expectedFolder),
+ "Should have kept the same menu label"
+ );
+
+ let input = folderTree.shadowRoot.querySelector("input");
+
+ let newFolderButton = win.document.getElementById(
+ "editBMPanel_newFolderButton"
+ );
+ newFolderButton.click(); // This will start editing.
+
+ // Wait for editing:
+ await TestUtils.waitForCondition(() => !input.hidden);
+
+ // Click the arrow to collapse the list.
+ EventUtils.synthesizeMouseAtCenter(
+ win.document.getElementById("editBMPanel_foldersExpander"),
+ {},
+ win
+ );
+
+ await TestUtils.waitForCondition(
+ () => folderTreeRow.hidden,
+ "Should hide the folder tree"
+ );
+ ok(input.hidden, "Folder tree should not be broken.");
+
+ // Click the arrow to re-show the list.
+ EventUtils.synthesizeMouseAtCenter(
+ win.document.getElementById("editBMPanel_foldersExpander"),
+ {},
+ win
+ );
+
+ await TestUtils.waitForCondition(
+ () => !folderTreeRow.hidden,
+ "Should re-show the folder tree"
+ );
+ ok(input.hidden, "Folder tree should still not be broken.");
+
+ await hideBookmarksPanel(win);
+ Assert.ok(!folderTree.view, "The view should have been disconnected");
+});
+
+add_task(async function test_selectBookmarksMenu() {
+ await clickBookmarkStar(win);
+
+ // Open folder selector.
+ let menuList = win.document.getElementById("editBMPanel_folderMenuList");
+
+ let promisePopup = BrowserTestUtils.waitForEvent(
+ menuList.menupopup,
+ "popupshown"
+ );
+ EventUtils.synthesizeMouseAtCenter(menuList, {}, win);
+ await promisePopup;
+
+ // Click the bookmarks menu item.
+ EventUtils.synthesizeMouseAtCenter(
+ win.document.getElementById("editBMPanel_bmRootItem"),
+ {},
+ win
+ );
+
+ await TestUtils.waitForCondition(
+ () =>
+ menuList.getAttribute("selectedGuid") == PlacesUtils.bookmarks.menuGuid,
+ "Should select the menu folder item"
+ );
+
+ Assert.equal(
+ menuList.label,
+ PlacesUtils.getString("BookmarksMenuFolderTitle"),
+ "Should have updated the menu label"
+ );
+
+ await hideBookmarksPanel(win);
+});