From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../report-site-issue/test/browser/head.js | 119 +++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 browser/extensions/report-site-issue/test/browser/head.js (limited to 'browser/extensions/report-site-issue/test/browser/head.js') diff --git a/browser/extensions/report-site-issue/test/browser/head.js b/browser/extensions/report-site-issue/test/browser/head.js new file mode 100644 index 0000000000..8fd4e91406 --- /dev/null +++ b/browser/extensions/report-site-issue/test/browser/head.js @@ -0,0 +1,119 @@ +"use strict"; + +ChromeUtils.defineESModuleGetters(this, { + AddonManager: "resource://gre/modules/AddonManager.sys.mjs", +}); + +const { Management } = ChromeUtils.importESModule( + "resource://gre/modules/Extension.sys.mjs" +); + +const PREF_WC_REPORTER_ENABLED = "extensions.webcompat-reporter.enabled"; +const PREF_WC_REPORTER_ENDPOINT = + "extensions.webcompat-reporter.newIssueEndpoint"; + +const TEST_ROOT = getRootDirectory(gTestPath).replace( + "chrome://mochitests/content", + "http://example.com" +); +const TEST_PAGE = TEST_ROOT + "test.html"; +const FRAMEWORKS_TEST_PAGE = TEST_ROOT + "frameworks.html"; +const FASTCLICK_TEST_PAGE = TEST_ROOT + "fastclick.html"; +const NEW_ISSUE_PAGE = TEST_ROOT + "webcompat.html"; + +const WC_ADDON_ID = "webcompat-reporter@mozilla.org"; + +async function promiseAddonEnabled() { + const addon = await AddonManager.getAddonByID(WC_ADDON_ID); + if (addon.isActive) { + return; + } + const pref = SpecialPowers.Services.prefs.getBoolPref( + PREF_WC_REPORTER_ENABLED, + false + ); + if (!pref) { + SpecialPowers.Services.prefs.setBoolPref(PREF_WC_REPORTER_ENABLED, true); + } +} + +class HelpMenuHelper { + #popup = null; + + async open() { + this.popup = document.getElementById("menu_HelpPopup"); + ok(this.popup, "Help menu should exist"); + + const menuOpen = BrowserTestUtils.waitForEvent(this.popup, "popupshown"); + + // This event-faking method was copied from browser_title_case_menus.js so + // this can be tested on MacOS (where the actual menus cannot be opened in + // tests, but we only need the help menu to populate itself). + this.popup.dispatchEvent(new MouseEvent("popupshowing", { bubbles: true })); + this.popup.dispatchEvent(new MouseEvent("popupshown", { bubbles: true })); + + await menuOpen; + } + + async close() { + if (this.popup) { + const menuClose = BrowserTestUtils.waitForEvent( + this.popup, + "popuphidden" + ); + + // (Also copied from browser_title_case_menus.js) + // Just for good measure, we'll fire the popuphiding/popuphidden events + // after we close the menupopups. + this.popup.dispatchEvent( + new MouseEvent("popuphiding", { bubbles: true }) + ); + this.popup.dispatchEvent( + new MouseEvent("popuphidden", { bubbles: true }) + ); + + await menuClose; + this.popup = null; + } + } + + isItemHidden() { + const item = document.getElementById("help_reportSiteIssue"); + return item && item.hidden; + } + + isItemEnabled() { + const item = document.getElementById("help_reportSiteIssue"); + return item && !item.hidden && !item.disabled; + } +} + +async function startIssueServer() { + const landingTemplate = await new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + xhr.open("GET", NEW_ISSUE_PAGE); + xhr.onload = () => { + resolve(xhr.responseText); + }; + xhr.onerror = reject; + xhr.send(); + }); + + const { HttpServer } = ChromeUtils.import( + "resource://testing-common/httpd.js" + ); + const server = new HttpServer(); + + registerCleanupFunction(async function cleanup() { + await new Promise(resolve => server.stop(resolve)); + }); + + server.registerPathHandler("/new", function (request, response) { + response.setHeader("Content-Type", "text/html", false); + response.setStatusLine(request.httpVersion, 200, "OK"); + response.write(landingTemplate); + }); + + server.start(-1); + return `http://localhost:${server.identity.primaryPort}/new`; +} -- cgit v1.2.3