summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_library_warnOnOpen.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_library_warnOnOpen.js')
-rw-r--r--browser/components/places/tests/browser/browser_library_warnOnOpen.js159
1 files changed, 159 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_library_warnOnOpen.js b/browser/components/places/tests/browser/browser_library_warnOnOpen.js
new file mode 100644
index 0000000000..4289d414df
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_library_warnOnOpen.js
@@ -0,0 +1,159 @@
+/* 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/. */
+
+/*
+ * Bug 1435562 - Test that browser.tabs.warnOnOpen is respected when
+ * opening multiple items from the Library. */
+
+"use strict";
+
+var gLibrary = null;
+
+add_setup(async function () {
+ // Temporarily disable history, so we won't record pages navigation.
+ await SpecialPowers.pushPrefEnv({ set: [["places.history.enabled", false]] });
+
+ // Open Library window.
+ gLibrary = await promiseLibrary();
+
+ registerCleanupFunction(async () => {
+ // We must close "Other Bookmarks" ready for other tests.
+ gLibrary.PlacesOrganizer.selectLeftPaneBuiltIn("UnfiledBookmarks");
+ gLibrary.PlacesOrganizer._places.selectedNode.containerOpen = false;
+
+ await PlacesUtils.bookmarks.eraseEverything();
+
+ // Close Library window.
+ await promiseLibraryClosed(gLibrary);
+ });
+});
+
+add_task(async function test_warnOnOpenFolder() {
+ // Generate a list of links larger than browser.tabs.maxOpenBeforeWarn
+ const MAX_LINKS = 16;
+ let children = [];
+ for (let i = 0; i < MAX_LINKS; i++) {
+ children.push({
+ title: `Folder Target ${i}`,
+ url: `http://example${i}.com`,
+ });
+ }
+
+ // Create a new folder containing our links.
+ await PlacesUtils.bookmarks.insertTree({
+ guid: PlacesUtils.bookmarks.unfiledGuid,
+ children: [
+ {
+ title: "bigFolder",
+ type: PlacesUtils.bookmarks.TYPE_FOLDER,
+ children,
+ },
+ ],
+ });
+ info("Pushed test folder into the bookmarks tree");
+
+ // Select unsorted bookmarks root in the left pane.
+ gLibrary.PlacesOrganizer.selectLeftPaneBuiltIn("UnfiledBookmarks");
+ info("Got selection in the Library left pane");
+
+ // Get our bookmark in the right pane.
+ gLibrary.ContentTree.view.view.nodeForTreeIndex(0);
+ info("Got bigFolder in the right pane");
+
+ gLibrary.PlacesOrganizer._places.selectedNode.containerOpen = true;
+
+ // Middle-click on folder (opens all links in folder) and then cancel opening in the dialog
+ let promiseLoaded = BrowserTestUtils.promiseAlertDialog("cancel");
+ let bookmarkedNode =
+ gLibrary.PlacesOrganizer._places.selectedNode.getChild(0);
+ mouseEventOnCell(
+ gLibrary.PlacesOrganizer._places,
+ gLibrary.PlacesOrganizer._places.view.treeIndexForNode(bookmarkedNode),
+ 0,
+ { button: 1 }
+ );
+
+ await promiseLoaded;
+
+ Assert.ok(
+ true,
+ "Expected dialog was shown when attempting to open folder with lots of links"
+ );
+
+ await PlacesUtils.bookmarks.eraseEverything();
+});
+
+add_task(async function test_warnOnOpenLinks() {
+ // Generate a list of links larger than browser.tabs.maxOpenBeforeWarn
+ const MAX_LINKS = 16;
+ let children = [];
+ for (let i = 0; i < MAX_LINKS; i++) {
+ children.push({
+ title: `Highlighted Target ${i}`,
+ url: `http://example${i}.com`,
+ });
+ }
+
+ // Insert the links into the tree
+ await PlacesUtils.bookmarks.insertTree({
+ guid: PlacesUtils.bookmarks.toolbarGuid,
+ children,
+ });
+ info("Pushed test folder into the bookmarks tree");
+
+ gLibrary.PlacesOrganizer.selectLeftPaneBuiltIn("BookmarksToolbar");
+ info("Got selection in the Library left pane");
+
+ // Select all the links
+ gLibrary.ContentTree.view.selectAll();
+
+ let placesContext = gLibrary.document.getElementById("placesContext");
+ let promiseContextMenu = BrowserTestUtils.waitForEvent(
+ placesContext,
+ "popupshown"
+ );
+
+ // Open up the context menu and select "Open All In Tabs" (the first item in the list)
+ synthesizeClickOnSelectedTreeCell(gLibrary.ContentTree.view, {
+ button: 2,
+ type: "contextmenu",
+ });
+
+ await promiseContextMenu;
+ info("Context menu opened as expected");
+
+ let openTabs = gLibrary.document.getElementById(
+ "placesContext_openBookmarkLinks:tabs"
+ );
+ let promiseLoaded = BrowserTestUtils.promiseAlertDialog("cancel");
+
+ placesContext.activateItem(openTabs, {});
+
+ await promiseLoaded;
+
+ Assert.ok(
+ true,
+ "Expected dialog was shown when attempting to open lots of selected links"
+ );
+
+ await PlacesUtils.bookmarks.eraseEverything();
+});
+
+function mouseEventOnCell(aTree, aRowIndex, aColumnIndex, aEventDetails) {
+ var selection = aTree.view.selection;
+ selection.select(aRowIndex);
+ aTree.ensureRowIsVisible(aRowIndex);
+ var column = aTree.columns[aColumnIndex];
+
+ // get cell coordinates
+ var rect = aTree.getCoordsForCellItem(aRowIndex, column, "text");
+
+ EventUtils.synthesizeMouse(
+ aTree.body,
+ rect.x,
+ rect.y,
+ aEventDetails,
+ gLibrary
+ );
+}