summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_bookmarks_change_title.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_bookmarks_change_title.js')
-rw-r--r--browser/components/places/tests/browser/browser_bookmarks_change_title.js256
1 files changed, 256 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_bookmarks_change_title.js b/browser/components/places/tests/browser/browser_bookmarks_change_title.js
new file mode 100644
index 0000000000..0e24df188a
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_bookmarks_change_title.js
@@ -0,0 +1,256 @@
+/**
+ * Tests that the title of a bookmark can be changed from the bookmark star, toolbar, sidebar, and library.
+ */
+"use strict";
+
+const TEST_URL = "about:buildconfig";
+const titleAfterFirstUpdate = "BookmarkStar title";
+
+function getToolbarNodeForItemGuid(aItemGuid) {
+ var children = document.getElementById("PlacesToolbarItems").children;
+ for (let child of children) {
+ if (aItemGuid == child._placesNode.bookmarkGuid) {
+ return child;
+ }
+ }
+ return null;
+}
+
+// Setup.
+add_setup(async function () {
+ let toolbar = document.getElementById("PersonalToolbar");
+ let wasCollapsed = toolbar.collapsed;
+
+ // Uncollapse the personal toolbar if needed.
+ if (wasCollapsed) {
+ await promiseSetToolbarVisibility(toolbar, true);
+ }
+
+ registerCleanupFunction(async () => {
+ // Collapse the personal toolbar if needed.
+ if (wasCollapsed) {
+ await promiseSetToolbarVisibility(toolbar, false);
+ }
+ await PlacesUtils.bookmarks.eraseEverything();
+ });
+});
+
+add_task(async function test_change_title_from_BookmarkStar() {
+ let originalBm = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: TEST_URL,
+ title: "Before Edit",
+ });
+
+ const win = await BrowserTestUtils.openNewBrowserWindow();
+ let tab = await BrowserTestUtils.openNewForegroundTab({
+ gBrowser: win.gBrowser,
+ opening: TEST_URL,
+ waitForStateStop: true,
+ });
+
+ registerCleanupFunction(async () => {
+ BrowserTestUtils.removeTab(tab);
+ await BrowserTestUtils.closeWindow(win);
+ });
+
+ win.StarUI._createPanelIfNeeded();
+ let bookmarkPanel = win.document.getElementById("editBookmarkPanel");
+ let shownPromise = promisePopupShown(bookmarkPanel);
+
+ let bookmarkStar = win.BookmarkingUI.star;
+ bookmarkStar.click();
+
+ await shownPromise;
+
+ let bookmarkPanelTitle = win.document.getElementById(
+ "editBookmarkPanelTitle"
+ );
+ await BrowserTestUtils.waitForCondition(
+ () =>
+ bookmarkPanelTitle.textContent ===
+ gFluentStrings.formatValueSync("bookmarks-edit-bookmark"),
+ "Wait until the bookmark panel title will be changed expectedly."
+ );
+ Assert.ok(true, "Bookmark title is correct");
+
+ let promiseNotification = PlacesTestUtils.waitForNotification(
+ "bookmark-title-changed",
+ events => events.some(e => e.title === titleAfterFirstUpdate)
+ );
+
+ // Update the bookmark's title.
+ await fillBookmarkTextField(
+ "editBMPanel_namePicker",
+ titleAfterFirstUpdate,
+ win
+ );
+
+ let doneButton = win.document.getElementById("editBookmarkPanelDoneButton");
+ doneButton.click();
+ await promiseNotification;
+
+ let updatedBm = await PlacesUtils.bookmarks.fetch(originalBm.guid);
+ Assert.equal(
+ updatedBm.title,
+ titleAfterFirstUpdate,
+ "Should have updated the bookmark title in the database"
+ );
+ await PlacesUtils.bookmarks.remove(originalBm.guid);
+});
+
+add_task(async function test_change_title_from_Toolbar() {
+ let toolbarBookmark = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
+ title: titleAfterFirstUpdate,
+ url: TEST_URL,
+ });
+
+ let toolbarNode = getToolbarNodeForItemGuid(toolbarBookmark.guid);
+
+ await withBookmarksDialog(
+ false,
+ async function openPropertiesDialog() {
+ let placesContext = document.getElementById("placesContext");
+ let promisePopup = BrowserTestUtils.waitForEvent(
+ placesContext,
+ "popupshown"
+ );
+ EventUtils.synthesizeMouseAtCenter(toolbarNode, {
+ button: 2,
+ type: "contextmenu",
+ });
+ await promisePopup;
+
+ let properties = document.getElementById(
+ "placesContext_show_bookmark:info"
+ );
+ placesContext.activateItem(properties, {});
+ },
+ async function test(dialogWin) {
+ // Ensure the dialog has initialized.
+ await TestUtils.waitForCondition(() => dialogWin.document.title);
+
+ let namepicker = dialogWin.document.getElementById(
+ "editBMPanel_namePicker"
+ );
+
+ let editBookmarkDialogTitle =
+ dialogWin.document.getElementById("titleText");
+ let bundle = dialogWin.document.getElementById("stringBundle");
+
+ Assert.equal(
+ bundle.getString("dialogTitleEditBookmark2"),
+ editBookmarkDialogTitle.textContent
+ );
+
+ Assert.equal(
+ namepicker.value,
+ titleAfterFirstUpdate,
+ "Name field is correct before update."
+ );
+
+ let promiseTitleChange = PlacesTestUtils.waitForNotification(
+ "bookmark-title-changed",
+ events => events.some(e => e.title === "Toolbar title")
+ );
+
+ // Update the bookmark's title.
+ fillBookmarkTextField(
+ "editBMPanel_namePicker",
+ "Toolbar title",
+ dialogWin,
+ false
+ );
+
+ // Confirm and close the dialog.
+ EventUtils.synthesizeKey("VK_RETURN", {}, dialogWin);
+ await promiseTitleChange;
+
+ let updatedBm = await PlacesUtils.bookmarks.fetch(toolbarBookmark.guid);
+ Assert.equal(
+ updatedBm.title,
+ "Toolbar title",
+ "Should have updated the bookmark title in the database"
+ );
+ }
+ );
+});
+
+add_task(async function test_change_title_from_Sidebar() {
+ let bookmarks = [];
+ await PlacesUtils.bookmarks.fetch({ url: TEST_URL }, bm =>
+ bookmarks.push(bm)
+ );
+
+ await withSidebarTree("bookmarks", async function (tree) {
+ tree.selectItems([bookmarks[0].guid]);
+
+ await withBookmarksDialog(
+ false,
+ function openPropertiesDialog() {
+ tree.controller.doCommand("placesCmd_show:info");
+ },
+ async function test(dialogWin) {
+ let namepicker = dialogWin.document.getElementById(
+ "editBMPanel_namePicker"
+ );
+ Assert.equal(
+ namepicker.value,
+ "Toolbar title",
+ "Name field is correct before update."
+ );
+
+ let promiseTitleChange = PlacesTestUtils.waitForNotification(
+ "bookmark-title-changed",
+ events => events.some(e => e.title === "Sidebar Title")
+ );
+
+ // Update the bookmark's title.
+ fillBookmarkTextField(
+ "editBMPanel_namePicker",
+ "Sidebar Title",
+ dialogWin,
+ false
+ );
+
+ // Confirm and close the dialog.
+ EventUtils.synthesizeKey("VK_RETURN", {}, dialogWin);
+ await promiseTitleChange;
+
+ // Get updated bookmarks, check the new title.
+ bookmarks = [];
+ await PlacesUtils.bookmarks.fetch({ url: TEST_URL }, bm =>
+ bookmarks.push(bm)
+ );
+ Assert.equal(
+ bookmarks[0].title,
+ "Sidebar Title",
+ "Should have updated the bookmark title in the database"
+ );
+ Assert.equal(bookmarks.length, 1, "One bookmark should exist");
+ }
+ );
+ });
+});
+
+add_task(async function test_change_title_from_Library() {
+ info("Open library and select the bookmark.");
+ const library = await promiseLibrary("BookmarksToolbar");
+ registerCleanupFunction(async function () {
+ await promiseLibraryClosed(library);
+ });
+ library.ContentTree.view.selectNode(
+ library.ContentTree.view.view.nodeForTreeIndex(0)
+ );
+ const newTitle = "Library";
+ const promiseTitleChange = PlacesTestUtils.waitForNotification(
+ "bookmark-title-changed",
+ events => events.some(e => e.title === newTitle)
+ );
+ info("Update the bookmark's title.");
+ fillBookmarkTextField("editBMPanel_namePicker", newTitle, library);
+ await promiseTitleChange;
+ info("The bookmark's title was updated.");
+ await promiseLibraryClosed(library);
+});