diff options
Diffstat (limited to 'browser/base/content/test/contextMenu')
4 files changed, 156 insertions, 0 deletions
diff --git a/browser/base/content/test/contextMenu/browser.toml b/browser/base/content/test/contextMenu/browser.toml index 660f6a955b..c7af1bc437 100644 --- a/browser/base/content/test/contextMenu/browser.toml +++ b/browser/base/content/test/contextMenu/browser.toml @@ -101,3 +101,5 @@ support-files = [ "test_view_image_inline_svg.html", ] skip-if = ["os == 'linux' && socketprocess_networking"] + +["browser_contextmenu_cross_boundary_selection.js"] diff --git a/browser/base/content/test/contextMenu/browser_contextmenu.js b/browser/base/content/test/contextMenu/browser_contextmenu.js index 00da3113c6..d8dc0ab5e0 100644 --- a/browser/base/content/test/contextMenu/browser_contextmenu.js +++ b/browser/base/content/test/contextMenu/browser_contextmenu.js @@ -41,6 +41,10 @@ let hasContainers = Services.prefs.getBoolPref("privacy.userContext.enabled") && ContextualIdentityService.getPublicIdentities().length; +const hasSelectTranslations = + Services.prefs.getBoolPref("browser.translations.enable") && + Services.prefs.getBoolPref("browser.translations.select.enable"); + const example_base = // eslint-disable-next-line @microsoft/sdl/no-insecure-url "http://example.com/browser/browser/base/content/test/contextMenu/"; @@ -112,6 +116,7 @@ add_task(async function test_xul_text_link_label() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); // Clean up so won't affect HTML element test cases. @@ -204,6 +209,7 @@ const kLinkItems = [ true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]; add_task(async function test_link() { @@ -234,6 +240,7 @@ add_task(async function test_mailto() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); }); @@ -247,6 +254,7 @@ add_task(async function test_tel() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); }); @@ -273,6 +281,10 @@ add_task(async function test_image() { null, "context-setDesktopBackground", true, + "---", + null, + "context-take-screenshot", + true, ], { onContextMenuShown() { @@ -356,6 +368,10 @@ add_task(async function test_video_ok() { true, "context-sendvideo", true, + "---", + null, + "context-take-screenshot", + true, ]); await SpecialPowers.popPrefEnv(); @@ -404,6 +420,10 @@ add_task(async function test_video_ok() { true, "context-sendvideo", true, + "---", + null, + "context-take-screenshot", + true, ]); await SpecialPowers.popPrefEnv(); @@ -490,6 +510,10 @@ add_task(async function test_video_bad() { true, "context-sendvideo", true, + "---", + null, + "context-take-screenshot", + true, ]); await SpecialPowers.popPrefEnv(); @@ -538,6 +562,10 @@ add_task(async function test_video_bad() { true, "context-sendvideo", true, + "---", + null, + "context-take-screenshot", + true, ]); await SpecialPowers.popPrefEnv(); @@ -588,6 +616,10 @@ add_task(async function test_video_bad2() { false, "context-sendvideo", false, + "---", + null, + "context-take-screenshot", + true, ]); await SpecialPowers.popPrefEnv(); @@ -636,6 +668,10 @@ add_task(async function test_video_bad2() { false, "context-sendvideo", false, + "---", + null, + "context-take-screenshot", + true, ]); await SpecialPowers.popPrefEnv(); @@ -767,6 +803,10 @@ add_task(async function test_video_in_iframe() { true, "---", null, + "context-take-frame-screenshot", + true, + "---", + null, "context-viewframeinfo", true, ]), @@ -846,6 +886,10 @@ add_task(async function test_video_in_iframe() { true, "---", null, + "context-take-frame-screenshot", + true, + "---", + null, "context-viewframeinfo", true, ]), @@ -967,6 +1011,10 @@ add_task(async function test_image_in_iframe() { true, "---", null, + "context-take-frame-screenshot", + true, + "---", + null, "context-viewframeinfo", true, ]), @@ -1336,6 +1384,7 @@ add_task(async function test_select_text() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), "---", null, "context-viewpartialsource-selection", @@ -1369,6 +1418,9 @@ add_task(async function test_select_text_search_service_not_initialized() { null, "context-take-screenshot", true, + ...(hasSelectTranslations + ? ["---", null, "context-translate-selection", true] + : []), "---", null, "context-viewpartialsource-selection", @@ -1423,6 +1475,7 @@ add_task(async function test_select_text_link() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), "---", null, "context-viewpartialsource-selection", @@ -1490,6 +1543,9 @@ add_task(async function test_imagelink() { null, "context-setDesktopBackground", true, + ...(hasSelectTranslations + ? ["---", null, "context-translate-selection", true] + : []), ]); }); @@ -1591,6 +1647,10 @@ add_task(async function test_longdesc() { null, "context-setDesktopBackground", true, + "---", + null, + "context-take-screenshot", + true, ]); }); @@ -1682,6 +1742,7 @@ add_task(async function test_svg_link() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); await test_contextmenu("#svg-with-link2 > a", [ @@ -1711,6 +1772,7 @@ add_task(async function test_svg_link() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); await test_contextmenu("#svg-with-link3 > a", [ @@ -1740,6 +1802,7 @@ add_task(async function test_svg_link() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); }); @@ -1771,6 +1834,7 @@ add_task(async function test_svg_relative_link() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); await test_contextmenu("#svg-with-relative-link2 > a", [ @@ -1800,6 +1864,7 @@ add_task(async function test_svg_relative_link() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); await test_contextmenu("#svg-with-relative-link3 > a", [ @@ -1829,6 +1894,7 @@ add_task(async function test_svg_relative_link() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); }); @@ -1898,6 +1964,7 @@ add_task(async function test_background_image() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); // Don't show image related context menu commands when there is a selection @@ -1921,6 +1988,7 @@ add_task(async function test_background_image() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), "---", null, "context-viewpartialsource-selection", @@ -1989,6 +2057,7 @@ add_task(async function test_strip_on_share_on_secure_about_page() { true, "context-searchselect-private", true, + ...(hasSelectTranslations ? ["context-translate-selection", true] : []), ]); // Clean up diff --git a/browser/base/content/test/contextMenu/browser_contextmenu_cross_boundary_selection.js b/browser/base/content/test/contextMenu/browser_contextmenu_cross_boundary_selection.js new file mode 100644 index 0000000000..3137a1e136 --- /dev/null +++ b/browser/base/content/test/contextMenu/browser_contextmenu_cross_boundary_selection.js @@ -0,0 +1,73 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +const PAGE = ` + data:text/html, + <div>OuterText<div> + <div id="host"> + <template shadowrootmode="open"> + <span id="innerText">InnerText</span> + </template> + </div> + `; +/** + * Tests that right click on a cross boundary selection shows the context menu + */ +add_task(async function () { + await SpecialPowers.pushPrefEnv({ + set: [["dom.shadowdom.selection_across_boundary.enabled", true]], + }); + await BrowserTestUtils.withNewTab( + { + gBrowser, + url: PAGE, + }, + async function (browser) { + let contextMenu = document.getElementById("contentAreaContextMenu"); + let awaitPopupShown = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + + let awaitPopupHidden = BrowserTestUtils.waitForEvent( + contextMenu, + "popuphidden" + ); + + await SpecialPowers.spawn(browser, [], () => { + let host = content.document.getElementById("host"); + content.getSelection().setBaseAndExtent( + content.document.body, + 0, + host.shadowRoot.getElementById("innerText").firstChild, + 3 // Only select the first three characters of the inner text + ); + }); + + await BrowserTestUtils.synthesizeMouseAtCenter( + "div", // Click on the div for OuterText + { + type: "contextmenu", + button: 2, + }, + browser + ); + + await awaitPopupShown; + + const allVisibleMenuItems = Array.from(contextMenu.children) + .filter(elem => { + return !elem.hidden; + }) + .map(elem => elem.id); + + ok( + allVisibleMenuItems.includes("context-copy"), + "copy button should exist" + ); + + contextMenu.hidePopup(); + await awaitPopupHidden; + } + ); +}); diff --git a/browser/base/content/test/contextMenu/browser_strip_on_share_link.js b/browser/base/content/test/contextMenu/browser_strip_on_share_link.js index 435b1aa0ff..144076cfb2 100644 --- a/browser/base/content/test/contextMenu/browser_strip_on_share_link.js +++ b/browser/base/content/test/contextMenu/browser_strip_on_share_link.js @@ -97,6 +97,18 @@ add_task(async function testQueryParamIsNotStrippedForWrongSiteSpecific() { }); }); +// Ensuring clean copy works with magnet links. We don't strip anything but copying the original URI should still work. +add_task(async function testMagneticLinks() { + let originalUrl = "magnet:?xt=urn:btih:somesha1hash"; + let shortenedUrl = "magnet:?xt=urn:btih:somesha1hash"; + await testStripOnShare({ + selectWholeUrl: true, + validUrl: originalUrl, + strippedUrl: shortenedUrl, + useTestList: true, + }); +}); + /** * Opens a new tab, opens the context menu and checks that the strip-on-share menu item is visible. * Checks that the stripped version of the url is copied to the clipboard. |