diff options
Diffstat (limited to 'browser/base/content/test/general/browser_bookmark_popup.js')
-rw-r--r-- | browser/base/content/test/general/browser_bookmark_popup.js | 431 |
1 files changed, 0 insertions, 431 deletions
diff --git a/browser/base/content/test/general/browser_bookmark_popup.js b/browser/base/content/test/general/browser_bookmark_popup.js deleted file mode 100644 index c1ddd725e..000000000 --- a/browser/base/content/test/general/browser_bookmark_popup.js +++ /dev/null @@ -1,431 +0,0 @@ -/* 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 opening and closing the bookmarks panel. - */ - -let bookmarkPanel = document.getElementById("editBookmarkPanel"); -let bookmarkStar = document.getElementById("bookmarks-menu-button"); -let bookmarkPanelTitle = document.getElementById("editBookmarkPanelTitle"); -let editBookmarkPanelRemoveButtonRect; - -StarUI._closePanelQuickForTesting = true; - -function* test_bookmarks_popup({isNewBookmark, popupShowFn, popupEditFn, - shouldAutoClose, popupHideFn, isBookmarkRemoved}) { - yield BrowserTestUtils.withNewTab({gBrowser, url: "about:home"}, function*(browser) { - try { - if (!isNewBookmark) { - yield PlacesUtils.bookmarks.insert({ - parentGuid: PlacesUtils.bookmarks.unfiledGuid, - url: "about:home", - title: "Home Page" - }); - } - - info(`BookmarkingUI.status is ${BookmarkingUI.status}`); - yield BrowserTestUtils.waitForCondition( - () => BookmarkingUI.status != BookmarkingUI.STATUS_UPDATING, - "BookmarkingUI should not be updating"); - - is(bookmarkStar.hasAttribute("starred"), !isNewBookmark, - "Page should only be starred prior to popupshown if editing bookmark"); - is(bookmarkPanel.state, "closed", "Panel should be 'closed' to start test"); - let shownPromise = promisePopupShown(bookmarkPanel); - yield popupShowFn(browser); - yield shownPromise; - is(bookmarkPanel.state, "open", "Panel should be 'open' after shownPromise is resolved"); - - editBookmarkPanelRemoveButtonRect = - document.getElementById("editBookmarkPanelRemoveButton").getBoundingClientRect(); - - if (popupEditFn) { - yield popupEditFn(); - } - let bookmarks = []; - yield PlacesUtils.bookmarks.fetch({url: "about:home"}, bm => bookmarks.push(bm)); - is(bookmarks.length, 1, "Only one bookmark should exist"); - is(bookmarkStar.getAttribute("starred"), "true", "Page is starred"); - is(bookmarkPanelTitle.value, - isNewBookmark ? - gNavigatorBundle.getString("editBookmarkPanel.pageBookmarkedTitle") : - gNavigatorBundle.getString("editBookmarkPanel.editBookmarkTitle"), - "title should match isEditingBookmark state"); - - if (!shouldAutoClose) { - yield new Promise(resolve => setTimeout(resolve, 400)); - is(bookmarkPanel.state, "open", "Panel should still be 'open' for non-autoclose"); - } - - let hiddenPromise = promisePopupHidden(bookmarkPanel); - if (popupHideFn) { - yield popupHideFn(); - } - yield hiddenPromise; - is(bookmarkStar.hasAttribute("starred"), !isBookmarkRemoved, - "Page is starred after closing"); - } finally { - let bookmark = yield PlacesUtils.bookmarks.fetch({url: "about:home"}); - is(!!bookmark, !isBookmarkRemoved, - "bookmark should not be present if a panel action should've removed it"); - if (bookmark) { - yield PlacesUtils.bookmarks.remove(bookmark); - } - } - }); -} - -add_task(function* panel_shown_for_new_bookmarks_and_autocloses() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn() { - bookmarkStar.click(); - }, - shouldAutoClose: true, - isBookmarkRemoved: false, - }); -}); - -add_task(function* panel_shown_once_for_doubleclick_on_new_bookmark_star_and_autocloses() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn() { - EventUtils.synthesizeMouse(bookmarkStar, 10, 10, { clickCount: 2 }, - window); - }, - shouldAutoClose: true, - isBookmarkRemoved: false, - }); -}); - -add_task(function* panel_shown_once_for_slow_doubleclick_on_new_bookmark_star_and_autocloses() { - todo(false, "bug 1250267, may need to add some tracking state to " + - "browser-places.js for this."); - return; - - /* - yield test_bookmarks_popup({ - isNewBookmark: true, - *popupShowFn() { - EventUtils.synthesizeMouse(bookmarkStar, 10, 10, window); - yield new Promise(resolve => setTimeout(resolve, 300)); - EventUtils.synthesizeMouse(bookmarkStar, 10, 10, window); - }, - shouldAutoClose: true, - isBookmarkRemoved: false, - }); - */ -}); - -add_task(function* panel_shown_for_keyboardshortcut_on_new_bookmark_star_and_autocloses() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn() { - EventUtils.synthesizeKey("D", {accelKey: true}, window); - }, - shouldAutoClose: true, - isBookmarkRemoved: false, - }); -}); - -add_task(function* panel_shown_for_new_bookmarks_mousemove_mouseout() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn() { - bookmarkStar.click(); - }, - *popupEditFn() { - let mouseMovePromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "mousemove"); - EventUtils.synthesizeMouseAtCenter(bookmarkPanel, {type: "mousemove"}); - info("Waiting for mousemove event"); - yield mouseMovePromise; - info("Got mousemove event"); - - yield new Promise(resolve => setTimeout(resolve, 400)); - is(bookmarkPanel.state, "open", "Panel should still be open on mousemove"); - }, - *popupHideFn() { - let mouseOutPromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "mouseout"); - EventUtils.synthesizeMouse(bookmarkPanel, 0, 0, {type: "mouseout"}); - EventUtils.synthesizeMouseAtCenter(document.documentElement, {type: "mousemove"}); - info("Waiting for mouseout event"); - yield mouseOutPromise; - info("Got mouseout event, should autoclose now"); - }, - shouldAutoClose: false, - isBookmarkRemoved: false, - }); -}); - -add_task(function* panel_shown_for_new_bookmark_no_autoclose_close_with_ESC() { - yield test_bookmarks_popup({ - isNewBookmark: false, - popupShowFn() { - bookmarkStar.click(); - }, - shouldAutoClose: false, - popupHideFn() { - EventUtils.synthesizeKey("VK_ESCAPE", {accelKey: true}, window); - }, - isBookmarkRemoved: false, - }); -}); - -add_task(function* panel_shown_for_editing_no_autoclose_close_with_ESC() { - yield test_bookmarks_popup({ - isNewBookmark: false, - popupShowFn() { - bookmarkStar.click(); - }, - shouldAutoClose: false, - popupHideFn() { - EventUtils.synthesizeKey("VK_ESCAPE", {accelKey: true}, window); - }, - isBookmarkRemoved: false, - }); -}); - -add_task(function* panel_shown_for_new_bookmark_keypress_no_autoclose() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn() { - bookmarkStar.click(); - }, - popupEditFn() { - EventUtils.sendChar("VK_TAB", window); - }, - shouldAutoClose: false, - popupHideFn() { - bookmarkPanel.hidePopup(); - }, - isBookmarkRemoved: false, - }); -}); - - -add_task(function* panel_shown_for_new_bookmark_compositionstart_no_autoclose() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn() { - bookmarkStar.click(); - }, - *popupEditFn() { - let compositionStartPromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "compositionstart"); - EventUtils.synthesizeComposition({ type: "compositionstart" }, window); - info("Waiting for compositionstart event"); - yield compositionStartPromise; - info("Got compositionstart event"); - }, - shouldAutoClose: false, - popupHideFn() { - EventUtils.synthesizeComposition({ type: "compositioncommitasis" }); - bookmarkPanel.hidePopup(); - }, - isBookmarkRemoved: false, - }); -}); - -add_task(function* panel_shown_for_new_bookmark_compositionstart_mouseout_no_autoclose() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn() { - bookmarkStar.click(); - }, - *popupEditFn() { - let mouseMovePromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "mousemove"); - EventUtils.synthesizeMouseAtCenter(bookmarkPanel, {type: "mousemove"}); - info("Waiting for mousemove event"); - yield mouseMovePromise; - info("Got mousemove event"); - - let compositionStartPromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "compositionstart"); - EventUtils.synthesizeComposition({ type: "compositionstart" }, window); - info("Waiting for compositionstart event"); - yield compositionStartPromise; - info("Got compositionstart event"); - - let mouseOutPromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "mouseout"); - EventUtils.synthesizeMouse(bookmarkPanel, 0, 0, {type: "mouseout"}); - EventUtils.synthesizeMouseAtCenter(document.documentElement, {type: "mousemove"}); - info("Waiting for mouseout event"); - yield mouseOutPromise; - info("Got mouseout event, but shouldn't run autoclose"); - }, - shouldAutoClose: false, - popupHideFn() { - EventUtils.synthesizeComposition({ type: "compositioncommitasis" }); - bookmarkPanel.hidePopup(); - }, - isBookmarkRemoved: false, - }); -}); - -add_task(function* panel_shown_for_new_bookmark_compositionend_no_autoclose() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn() { - bookmarkStar.click(); - }, - *popupEditFn() { - let mouseMovePromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "mousemove"); - EventUtils.synthesizeMouseAtCenter(bookmarkPanel, {type: "mousemove"}); - info("Waiting for mousemove event"); - yield mouseMovePromise; - info("Got mousemove event"); - - EventUtils.synthesizeComposition({ type: "compositioncommit", data: "committed text" }); - }, - popupHideFn() { - bookmarkPanel.hidePopup(); - }, - shouldAutoClose: false, - isBookmarkRemoved: false, - }); -}); - -add_task(function* contextmenu_new_bookmark_keypress_no_autoclose() { - yield test_bookmarks_popup({ - isNewBookmark: true, - *popupShowFn(browser) { - let contextMenu = document.getElementById("contentAreaContextMenu"); - let awaitPopupShown = BrowserTestUtils.waitForEvent(contextMenu, - "popupshown"); - let awaitPopupHidden = BrowserTestUtils.waitForEvent(contextMenu, - "popuphidden"); - yield BrowserTestUtils.synthesizeMouseAtCenter("body", { - type: "contextmenu", - button: 2 - }, browser); - yield awaitPopupShown; - document.getElementById("context-bookmarkpage").click(); - contextMenu.hidePopup(); - yield awaitPopupHidden; - }, - popupEditFn() { - EventUtils.sendChar("VK_TAB", window); - }, - shouldAutoClose: false, - popupHideFn() { - bookmarkPanel.hidePopup(); - }, - isBookmarkRemoved: false, - }); -}); - -add_task(function* bookmarks_menu_new_bookmark_remove_bookmark() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn(browser) { - document.getElementById("menu_bookmarkThisPage").doCommand(); - }, - shouldAutoClose: true, - popupHideFn() { - document.getElementById("editBookmarkPanelRemoveButton").click(); - }, - isBookmarkRemoved: true, - }); -}); - -add_task(function* ctrl_d_edit_bookmark_remove_bookmark() { - yield test_bookmarks_popup({ - isNewBookmark: false, - popupShowFn(browser) { - EventUtils.synthesizeKey("D", {accelKey: true}, window); - }, - shouldAutoClose: true, - popupHideFn() { - document.getElementById("editBookmarkPanelRemoveButton").click(); - }, - isBookmarkRemoved: true, - }); -}); - -add_task(function* enter_on_remove_bookmark_should_remove_bookmark() { - if (AppConstants.platform == "macosx") { - // "Full Keyboard Access" is disabled by default, and thus doesn't allow - // keyboard navigation to the "Remove Bookmarks" button by default. - return; - } - - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn(browser) { - EventUtils.synthesizeKey("D", {accelKey: true}, window); - }, - shouldAutoClose: true, - popupHideFn() { - while (!document.activeElement || - document.activeElement.id != "editBookmarkPanelRemoveButton") { - EventUtils.sendChar("VK_TAB", window); - } - EventUtils.sendChar("VK_RETURN", window); - }, - isBookmarkRemoved: true, - }); -}); - -add_task(function* ctrl_d_new_bookmark_mousedown_mouseout_no_autoclose() { - yield test_bookmarks_popup({ - isNewBookmark: true, - popupShowFn(browser) { - EventUtils.synthesizeKey("D", {accelKey: true}, window); - }, - *popupEditFn() { - let mouseMovePromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "mousemove"); - EventUtils.synthesizeMouseAtCenter(bookmarkPanel, {type: "mousemove"}); - info("Waiting for mousemove event"); - yield mouseMovePromise; - info("Got mousemove event"); - - yield new Promise(resolve => setTimeout(resolve, 400)); - is(bookmarkPanel.state, "open", "Panel should still be open on mousemove"); - - EventUtils.synthesizeMouseAtCenter(bookmarkPanelTitle, {button: 1, type: "mousedown"}); - - let mouseOutPromise = BrowserTestUtils.waitForEvent(bookmarkPanel, "mouseout"); - EventUtils.synthesizeMouse(bookmarkPanel, 0, 0, {type: "mouseout"}); - EventUtils.synthesizeMouseAtCenter(document.documentElement, {type: "mousemove"}); - info("Waiting for mouseout event"); - yield mouseOutPromise; - }, - shouldAutoClose: false, - popupHideFn() { - document.getElementById("editBookmarkPanelRemoveButton").click(); - }, - isBookmarkRemoved: true, - }); -}); - -add_task(function* mouse_hovering_panel_should_prevent_autoclose() { - if (AppConstants.platform != "win") { - // This test requires synthesizing native mouse movement which is - // best supported on Windows. - return; - } - yield test_bookmarks_popup({ - isNewBookmark: true, - *popupShowFn(browser) { - yield new Promise(resolve => { - EventUtils.synthesizeNativeMouseMove( - document.documentElement, - editBookmarkPanelRemoveButtonRect.left, - editBookmarkPanelRemoveButtonRect.top, - resolve); - }); - EventUtils.synthesizeKey("D", {accelKey: true}, window); - }, - shouldAutoClose: false, - popupHideFn() { - document.getElementById("editBookmarkPanelRemoveButton").click(); - }, - isBookmarkRemoved: true, - }); -}); - -registerCleanupFunction(function() { - delete StarUI._closePanelQuickForTesting; -}); |