From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- browser/base/content/test/contextMenu/browser.ini | 91 + .../content/test/contextMenu/browser_bug1798178.js | 89 + .../test/contextMenu/browser_contextmenu.js | 1943 ++++++++++++++++++++ .../contextMenu/browser_contextmenu_badiframe.js | 182 ++ .../browser_contextmenu_contenteditable.js | 118 ++ .../test/contextMenu/browser_contextmenu_iframe.js | 73 + .../test/contextMenu/browser_contextmenu_input.js | 387 ++++ .../contextMenu/browser_contextmenu_inspect.js | 61 + .../contextMenu/browser_contextmenu_keyword.js | 198 ++ .../contextMenu/browser_contextmenu_linkopen.js | 109 ++ .../browser_contextmenu_loadblobinnewtab.html | 56 + .../browser_contextmenu_loadblobinnewtab.js | 186 ++ .../browser_contextmenu_save_blocked.js | 78 + .../browser_contextmenu_share_macosx.js | 144 ++ .../contextMenu/browser_contextmenu_share_win.js | 77 + .../contextMenu/browser_contextmenu_shareurl.html | 2 + .../contextMenu/browser_contextmenu_spellcheck.js | 334 ++++ .../test/contextMenu/browser_contextmenu_touch.js | 94 + .../test/contextMenu/browser_copy_image_link.js | 40 + .../contextMenu/browser_strip_on_share_link.js | 151 ++ .../test/contextMenu/browser_utilityOverlay.js | 78 + .../contextMenu/browser_utilityOverlayPrincipal.js | 72 + .../content/test/contextMenu/browser_view_image.js | 197 ++ .../base/content/test/contextMenu/bug1798178.sjs | 9 + .../content/test/contextMenu/contextmenu_common.js | 437 +++++ .../content/test/contextMenu/ctxmenu-image.png | Bin 0 -> 5401 bytes browser/base/content/test/contextMenu/doggy.png | Bin 0 -> 46876 bytes .../content/test/contextMenu/file_bug1798178.html | 5 + browser/base/content/test/contextMenu/firebird.png | Bin 0 -> 16179 bytes .../content/test/contextMenu/firebird.png^headers^ | 2 + .../test/contextMenu/subtst_contextmenu.html | 61 + .../test/contextMenu/subtst_contextmenu_input.html | 30 + .../contextMenu/subtst_contextmenu_keyword.html | 17 + .../contextMenu/subtst_contextmenu_webext.html | 12 + .../test/contextMenu/subtst_contextmenu_xul.xhtml | 9 + .../test/contextMenu/test_contextmenu_iframe.html | 11 + .../test/contextMenu/test_contextmenu_links.html | 14 + .../contextMenu/test_view_image_inline_svg.html | 15 + .../test_view_image_revoked_cached_blob.html | 40 + 39 files changed, 5422 insertions(+) create mode 100644 browser/base/content/test/contextMenu/browser.ini create mode 100644 browser/base/content/test/contextMenu/browser_bug1798178.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_badiframe.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_contenteditable.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_iframe.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_input.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_inspect.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_keyword.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_linkopen.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_loadblobinnewtab.html create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_loadblobinnewtab.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_save_blocked.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_share_macosx.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_share_win.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_shareurl.html create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_spellcheck.js create mode 100644 browser/base/content/test/contextMenu/browser_contextmenu_touch.js create mode 100644 browser/base/content/test/contextMenu/browser_copy_image_link.js create mode 100644 browser/base/content/test/contextMenu/browser_strip_on_share_link.js create mode 100644 browser/base/content/test/contextMenu/browser_utilityOverlay.js create mode 100644 browser/base/content/test/contextMenu/browser_utilityOverlayPrincipal.js create mode 100644 browser/base/content/test/contextMenu/browser_view_image.js create mode 100644 browser/base/content/test/contextMenu/bug1798178.sjs create mode 100644 browser/base/content/test/contextMenu/contextmenu_common.js create mode 100644 browser/base/content/test/contextMenu/ctxmenu-image.png create mode 100644 browser/base/content/test/contextMenu/doggy.png create mode 100644 browser/base/content/test/contextMenu/file_bug1798178.html create mode 100644 browser/base/content/test/contextMenu/firebird.png create mode 100644 browser/base/content/test/contextMenu/firebird.png^headers^ create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu.html create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu_input.html create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu_keyword.html create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu_webext.html create mode 100644 browser/base/content/test/contextMenu/subtst_contextmenu_xul.xhtml create mode 100644 browser/base/content/test/contextMenu/test_contextmenu_iframe.html create mode 100644 browser/base/content/test/contextMenu/test_contextmenu_links.html create mode 100644 browser/base/content/test/contextMenu/test_view_image_inline_svg.html create mode 100644 browser/base/content/test/contextMenu/test_view_image_revoked_cached_blob.html (limited to 'browser/base/content/test/contextMenu') diff --git a/browser/base/content/test/contextMenu/browser.ini b/browser/base/content/test/contextMenu/browser.ini new file mode 100644 index 0000000000..df0a013059 --- /dev/null +++ b/browser/base/content/test/contextMenu/browser.ini @@ -0,0 +1,91 @@ +[DEFAULT] +support-files = + subtst_contextmenu_webext.html + test_contextmenu_links.html + subtst_contextmenu.html + subtst_contextmenu_input.html + subtst_contextmenu_keyword.html + subtst_contextmenu_xul.xhtml + ctxmenu-image.png + ../general/head.js + ../general/video.ogg + ../general/audio.ogg + ../../../../../toolkit/components/pdfjs/test/file_pdfjs_test.pdf + contextmenu_common.js + file_bug1798178.html + bug1798178.sjs + +[browser_bug1798178.js] +[browser_contextmenu.js] +tags = fullscreen +skip-if = + os == "linux" + verify +[browser_contextmenu_badiframe.js] +https_first_disabled = true +skip-if = + os == "win" # Bug 1719856 + os == "linux" && socketprocess_networking +[browser_contextmenu_contenteditable.js] +[browser_contextmenu_iframe.js] +support-files = + test_contextmenu_iframe.html +skip-if = + os == "linux" && socketprocess_networking +[browser_contextmenu_input.js] +skip-if = + os == "linux" +[browser_contextmenu_inspect.js] +skip-if = + os == "linux" && socketprocess_networking +[browser_contextmenu_keyword.js] +skip-if = + os == "linux" # disabled on Linux due to bug 513558 +[browser_contextmenu_linkopen.js] +skip-if = + os == "linux" && socketprocess_networking +[browser_contextmenu_loadblobinnewtab.js] +support-files = browser_contextmenu_loadblobinnewtab.html +skip-if = + os == "linux" && socketprocess_networking +[browser_contextmenu_save_blocked.js] +skip-if = + os == "linux" && socketprocess_networking +[browser_contextmenu_share_macosx.js] +support-files = + browser_contextmenu_shareurl.html +run-if = + os == "mac" +[browser_contextmenu_share_win.js] +https_first_disabled = true +support-files = + browser_contextmenu_shareurl.html +run-if = + os == "win" +[browser_contextmenu_spellcheck.js] +https_first_disabled = true +skip-if = + os == "linux" + debug # bug 1798233 - this trips assertions that seem harmless in opt and unlikely to occur in practical use. +[browser_contextmenu_touch.js] +skip-if = true # Bug 1424433, disable due to very high frequency failure rate also on Windows 10 +[browser_copy_image_link.js] +support-files = + doggy.png + firebird.png + firebird.png^headers^ +skip-if = + os == "linux" && socketprocess_networking +[browser_strip_on_share_link.js] +[browser_utilityOverlay.js] +https_first_disabled = true +skip-if = + os == "linux" && socketprocess_networking +[browser_utilityOverlayPrincipal.js] +https_first_disabled = true +[browser_view_image.js] +support-files = + test_view_image_revoked_cached_blob.html + test_view_image_inline_svg.html +skip-if = + os == "linux" && socketprocess_networking diff --git a/browser/base/content/test/contextMenu/browser_bug1798178.js b/browser/base/content/test/contextMenu/browser_bug1798178.js new file mode 100644 index 0000000000..529665a6f9 --- /dev/null +++ b/browser/base/content/test/contextMenu/browser_bug1798178.js @@ -0,0 +1,89 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/toolkit/content/tests/browser/common/mockTransfer.js", + this +); + +const TEST_URL = + getRootDirectory(gTestPath).replace( + "chrome://mochitests/content", + "https://example.com" + ) + "file_bug1798178.html"; + +let MockFilePicker = SpecialPowers.MockFilePicker; +MockFilePicker.init(window); + +function createTemporarySaveDirectory() { + let saveDir = Services.dirsvc.get("TmpD", Ci.nsIFile); + saveDir.append("testsavedir"); + if (!saveDir.exists()) { + info("create testsavedir!"); + saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755); + } + info("return from createTempSaveDir: " + saveDir.path); + return saveDir; +} + +add_task(async function test_save_link_cross_origin() { + await SpecialPowers.pushPrefEnv({ + set: [["browser.opaqueResponseBlocking", true]], + }); + await BrowserTestUtils.withNewTab(TEST_URL, async browser => { + let menu = document.getElementById("contentAreaContextMenu"); + let popupShown = BrowserTestUtils.waitForEvent(menu, "popupshown"); + BrowserTestUtils.synthesizeMouseAtCenter( + "a[href]", + { type: "contextmenu", button: 2 }, + browser + ); + await popupShown; + + let filePickerShow = new Promise(r => { + MockFilePicker.showCallback = function (fp) { + ok(true, "filepicker should be shown"); + info("MockFilePicker showCallback"); + + let fileName = fp.defaultString; + destFile = tempDir.clone(); + destFile.append(fileName); + + MockFilePicker.setFiles([destFile]); + MockFilePicker.filterIndex = 1; // kSaveAsType_URL + + info("MockFilePicker showCallback done"); + r(); + }; + }); + + info("Let's create a temporary dir"); + let tempDir = createTemporarySaveDirectory(); + let destFile; + + MockFilePicker.displayDirectory = tempDir; + + let transferCompletePromise = new Promise(resolve => { + function onTransferComplete(downloadSuccess) { + ok(downloadSuccess, "File should have been downloaded successfully"); + resolve(); + } + mockTransferCallback = onTransferComplete; + mockTransferRegisterer.register(); + }); + + let saveLinkCommand = document.getElementById("context-savelink"); + info("saveLinkCommand: " + saveLinkCommand); + saveLinkCommand.doCommand(); + + await filePickerShow; + + let popupHiddenPromise = BrowserTestUtils.waitForEvent(menu, "popuphidden"); + menu.hidePopup(); + await popupHiddenPromise; + + await transferCompletePromise; + }); +}); diff --git a/browser/base/content/test/contextMenu/browser_contextmenu.js b/browser/base/content/test/contextMenu/browser_contextmenu.js new file mode 100644 index 0000000000..03a848f26d --- /dev/null +++ b/browser/base/content/test/contextMenu/browser_contextmenu.js @@ -0,0 +1,1943 @@ +"use strict"; + +let contextMenu; +let LOGIN_FILL_ITEMS = ["---", null, "manage-saved-logins", true]; +let NAVIGATION_ITEMS = + AppConstants.platform == "macosx" + ? [ + "context-back", + false, + "context-forward", + false, + "context-reload", + true, + "---", + null, + "context-bookmarkpage", + true, + ] + : [ + "context-navigation", + null, + [ + "context-back", + false, + "context-forward", + false, + "context-reload", + true, + "context-bookmarkpage", + true, + ], + null, + "---", + null, + ]; +let hasPocket = Services.prefs.getBoolPref("extensions.pocket.enabled"); +let hasContainers = + Services.prefs.getBoolPref("privacy.userContext.enabled") && + ContextualIdentityService.getPublicIdentities().length; + +const example_base = + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + "http://example.com/browser/browser/base/content/test/contextMenu/"; +const chrome_base = + "chrome://mochitests/content/browser/browser/base/content/test/contextMenu/"; +const head_base = + "chrome://mochitests/content/browser/browser/base/content/test/contextMenu/"; + +/* import-globals-from contextmenu_common.js */ +Services.scriptloader.loadSubScript( + chrome_base + "contextmenu_common.js", + this +); + +function getThisFrameSubMenu(base_menu) { + if (AppConstants.NIGHTLY_BUILD) { + let osPidItem = ["context-frameOsPid", false]; + base_menu = base_menu.concat(osPidItem); + } + return base_menu; +} + +add_setup(async function () { + await SpecialPowers.pushPrefEnv({ + set: [ + ["browser.search.separatePrivateDefault.ui.enabled", true], + ["extensions.screenshots.disabled", false], + ["layout.forms.reveal-password-context-menu.enabled", true], + ], + }); +}); + +// Below are test cases for XUL element +add_task(async function test_xul_text_link_label() { + let url = chrome_base + "subtst_contextmenu_xul.xhtml"; + + await BrowserTestUtils.openNewForegroundTab({ + gBrowser, + url, + waitForLoad: true, + waitForStateStop: true, + }); + + await test_contextmenu("#test-xul-text-link-label", [ + "context-openlinkintab", + true, + ...(hasContainers ? ["context-openlinkinusercontext-menu", true] : []), + // We need a blank entry here because the containers submenu is + // dynamically generated with no ids. + ...(hasContainers ? ["", null] : []), + "context-openlink", + true, + "context-openlinkprivate", + true, + "---", + null, + "context-bookmarklink", + true, + "context-savelink", + true, + ...(hasPocket ? ["context-savelinktopocket", true] : []), + "context-copylink", + true, + "---", + null, + "context-searchselect", + true, + "context-searchselect-private", + true, + ]); + + // Clean up so won't affect HTML element test cases. + lastElementSelector = null; + gBrowser.removeCurrentTab(); +}); + +// Below are test cases for HTML element. + +add_task(async function test_setup_html() { + let url = example_base + "subtst_contextmenu.html"; + + await BrowserTestUtils.openNewForegroundTab(gBrowser, url); + + await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async function () { + let doc = content.document; + let audioIframe = doc.querySelector("#test-audio-in-iframe"); + // media documents always use a