summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_remove_bookmarks.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_remove_bookmarks.js')
-rw-r--r--browser/components/places/tests/browser/browser_remove_bookmarks.js155
1 files changed, 155 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_remove_bookmarks.js b/browser/components/places/tests/browser/browser_remove_bookmarks.js
new file mode 100644
index 0000000000..8889ea11c0
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_remove_bookmarks.js
@@ -0,0 +1,155 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+/**
+ * Test removing bookmarks from the Bookmarks Toolbar and Library.
+ */
+
+const TEST_URL = "about:mozilla";
+
+add_setup(async function () {
+ await PlacesUtils.bookmarks.eraseEverything();
+
+ 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_remove_bookmark_from_toolbar() {
+ let toolbarBookmark = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
+ title: "Bookmark Title",
+ url: TEST_URL,
+ });
+
+ let toolbarNode = getToolbarNodeForItemGuid(toolbarBookmark.guid);
+
+ let contextMenu = document.getElementById("placesContext");
+ let popupShownPromise = BrowserTestUtils.waitForEvent(
+ contextMenu,
+ "popupshown"
+ );
+
+ EventUtils.synthesizeMouseAtCenter(toolbarNode, {
+ button: 2,
+ type: "contextmenu",
+ });
+ await popupShownPromise;
+
+ let contextMenuDeleteBookmark = document.getElementById(
+ "placesContext_deleteBookmark"
+ );
+
+ let removePromise = PlacesTestUtils.waitForNotification(
+ "bookmark-removed",
+ events => events.some(event => event.url == TEST_URL)
+ );
+
+ contextMenu.activateItem(contextMenuDeleteBookmark, {});
+
+ await removePromise;
+
+ Assert.deepEqual(
+ PlacesUtils.bookmarks.fetch({ url: TEST_URL }),
+ {},
+ "Should have removed the bookmark from the database"
+ );
+});
+
+add_task(async function test_remove_bookmark_from_library() {
+ const uris = [
+ "http://example.com/1",
+ "http://example.com/2",
+ "http://example.com/3",
+ ];
+
+ let children = uris.map((uri, index) => {
+ return {
+ title: `bm${index}`,
+ url: uri,
+ };
+ });
+
+ // Insert bookmarks.
+ await PlacesUtils.bookmarks.insertTree({
+ guid: PlacesUtils.bookmarks.unfiledGuid,
+ children,
+ });
+
+ // Open the Library and select the "UnfiledBookmarks".
+ let library = await promiseLibrary("UnfiledBookmarks");
+
+ registerCleanupFunction(async function () {
+ await promiseLibraryClosed(library);
+ });
+
+ let PO = library.PlacesOrganizer;
+
+ Assert.equal(
+ PlacesUtils.getConcreteItemGuid(PO._places.selectedNode),
+ PlacesUtils.bookmarks.unfiledGuid,
+ "Should have selected unfiled bookmarks."
+ );
+
+ let contextMenu = library.document.getElementById("placesContext");
+ let contextMenuDeleteBookmark = library.document.getElementById(
+ "placesContext_deleteBookmark"
+ );
+
+ let popupShownPromise = BrowserTestUtils.waitForEvent(
+ contextMenu,
+ "popupshown"
+ );
+
+ let firstColumn = library.ContentTree.view.columns[0];
+ let firstBookmarkRect = library.ContentTree.view.getCoordsForCellItem(
+ 0,
+ firstColumn,
+ "bm0"
+ );
+
+ EventUtils.synthesizeMouse(
+ library.ContentTree.view.body,
+ firstBookmarkRect.x,
+ firstBookmarkRect.y,
+ { type: "contextmenu", button: 2 },
+ library
+ );
+
+ await popupShownPromise;
+
+ Assert.equal(
+ library.ContentTree.view.result.root.childCount,
+ 3,
+ "Number of bookmarks before removal is right"
+ );
+
+ let removePromise = PlacesTestUtils.waitForNotification(
+ "bookmark-removed",
+ events => events.some(event => event.url == uris[0])
+ );
+ contextMenu.activateItem(contextMenuDeleteBookmark, {});
+
+ await removePromise;
+
+ Assert.equal(
+ library.ContentTree.view.result.root.childCount,
+ 2,
+ "Should have removed the bookmark from the display"
+ );
+});