summaryrefslogtreecommitdiffstats
path: root/browser/components/places/tests/browser/browser_toolbar_library_open_recent.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/places/tests/browser/browser_toolbar_library_open_recent.js')
-rw-r--r--browser/components/places/tests/browser/browser_toolbar_library_open_recent.js158
1 files changed, 158 insertions, 0 deletions
diff --git a/browser/components/places/tests/browser/browser_toolbar_library_open_recent.js b/browser/components/places/tests/browser/browser_toolbar_library_open_recent.js
new file mode 100644
index 0000000000..5bedd02a83
--- /dev/null
+++ b/browser/components/places/tests/browser/browser_toolbar_library_open_recent.js
@@ -0,0 +1,158 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests that recently added bookmarks can be opened.
+ */
+
+const BASE_URL =
+ "http://example.org/browser/browser/components/places/tests/browser/";
+const bookmarkItems = [
+ {
+ url: `${BASE_URL}bookmark_dummy_1.html`,
+ title: "Custom Title 1",
+ },
+ {
+ url: `${BASE_URL}bookmark_dummy_2.html`,
+ title: "Custom Title 2",
+ },
+];
+let openedTabs = [];
+
+async function openBookmarksPanelInLibraryToolbarButton() {
+ let libraryBtn = document.getElementById("library-button");
+ libraryBtn.click();
+ let libView = document.getElementById("appMenu-libraryView");
+ let viewShownPromise = BrowserTestUtils.waitForEvent(libView, "ViewShown");
+ await viewShownPromise;
+
+ let bookmarksButton;
+ await TestUtils.waitForCondition(() => {
+ bookmarksButton = document.getElementById(
+ "appMenu-library-bookmarks-button"
+ );
+ return bookmarksButton;
+ }, "Should have the library bookmarks button");
+ bookmarksButton.click();
+
+ let BookmarksView = document.getElementById("PanelUI-bookmarks");
+ let viewRecentPromise = BrowserTestUtils.waitForEvent(
+ BookmarksView,
+ "ViewShown"
+ );
+ await viewRecentPromise;
+}
+
+async function openBookmarkedItemInNewTab(itemFromMenu) {
+ let placesContext = document.getElementById("placesContext");
+ let openContextMenuPromise = BrowserTestUtils.waitForEvent(
+ placesContext,
+ "popupshown"
+ );
+ EventUtils.synthesizeMouseAtCenter(itemFromMenu, {
+ button: 2,
+ type: "contextmenu",
+ });
+ await openContextMenuPromise;
+ info("Opened context menu");
+
+ let tabCreatedPromise = BrowserTestUtils.waitForNewTab(gBrowser, null, true);
+
+ let openInNewTabOption = document.getElementById("placesContext_open:newtab");
+ placesContext.activateItem(openInNewTabOption);
+ info("Click open in new tab");
+
+ let lastOpenedTab = await tabCreatedPromise;
+ Assert.equal(
+ lastOpenedTab.linkedBrowser.currentURI.spec,
+ itemFromMenu._placesNode.uri,
+ "Should have opened the correct URI"
+ );
+ openedTabs.push(lastOpenedTab);
+}
+
+async function closeLibraryMenu() {
+ let libView = document.getElementById("appMenu-libraryView");
+ let viewHiddenPromise = BrowserTestUtils.waitForEvent(libView, "ViewHiding");
+ EventUtils.synthesizeKey("KEY_Escape", {}, window);
+ await viewHiddenPromise;
+}
+
+async function closeTabs() {
+ for (var i = 0; i < openedTabs.length; i++) {
+ await gBrowser.removeTab(openedTabs[i]);
+ }
+ Assert.equal(gBrowser.tabs.length, 1, "Should close all opened tabs");
+}
+
+async function getRecentlyBookmarkedItems() {
+ let historyMenu = document.getElementById("panelMenu_bookmarksMenu");
+ let items = historyMenu.querySelectorAll("toolbarbutton");
+ Assert.ok(items, "Recently bookmarked items should exists");
+
+ await TestUtils.waitForCondition(
+ () => items[0].attributes !== "undefined",
+ "Custom bookmark exists"
+ );
+
+ if (items) {
+ Assert.equal(
+ items[0]._placesNode.uri,
+ bookmarkItems[1].url,
+ "Should match the expected url"
+ );
+ Assert.equal(
+ items[0].getAttribute("label"),
+ bookmarkItems[1].title,
+ "Should be the expected title"
+ );
+ Assert.equal(
+ items[1]._placesNode.uri,
+ bookmarkItems[0].url,
+ "Should match the expected url"
+ );
+ Assert.equal(
+ items[1].getAttribute("label"),
+ bookmarkItems[0].title,
+ "Should be the expected title"
+ );
+ }
+ return Array.from(items).slice(0, 2);
+}
+
+add_setup(async function () {
+ let libraryButton = CustomizableUI.getPlacementOfWidget("library-button");
+ if (!libraryButton) {
+ CustomizableUI.addWidgetToArea(
+ "library-button",
+ CustomizableUI.AREA_NAVBAR
+ );
+ }
+ await PlacesUtils.bookmarks.insertTree({
+ guid: PlacesUtils.bookmarks.menuGuid,
+ children: bookmarkItems,
+ });
+
+ registerCleanupFunction(async () => {
+ await PlacesUtils.bookmarks.eraseEverything();
+ CustomizableUI.reset();
+ });
+});
+
+add_task(async function test_recently_added() {
+ await openBookmarksPanelInLibraryToolbarButton();
+
+ let historyItems = await getRecentlyBookmarkedItems();
+
+ for (let item of historyItems) {
+ await openBookmarkedItemInNewTab(item);
+ }
+
+ await closeLibraryMenu();
+
+ registerCleanupFunction(async () => {
+ await closeTabs();
+ });
+});