diff --git a/toolkit/content/widgets/moz-support-link/moz-support-link.mjs b/toolkit/content/widgets/moz-support-link/moz-support-link.mjs index 0f8892d958890e43822b04dcd781e4ba4adcf8e2..d57782b94bc6666e8d607b3906805d04791e2bc0 100644 --- a/toolkit/content/widgets/moz-support-link/moz-support-link.mjs +++ b/toolkit/content/widgets/moz-support-link/moz-support-link.mjs @@ -17,7 +17,9 @@ MozXULElement.insertFTLIfNeeded("browser/components/mozSupportLink.ftl"); export default class MozSupportLink extends HTMLAnchorElement { static SUPPORT_URL = "https://www.mozilla.org/"; static get observedAttributes() { - return ["support-page", "utm-content"]; + // We add tor-manual-page for pages hosted at tor project. Also shared with + // base-browser/mullvad-browser. See tor-browser#42583. + return ["support-page", "utm-content", "tor-manual-page"]; } /** @@ -96,12 +98,33 @@ export default class MozSupportLink extends HTMLAnchorElement { } attributeChangedCallback(attrName, oldVal, newVal) { - if (attrName === "support-page" || attrName === "utm-content") { + if ( + attrName === "support-page" || + attrName === "utm-content" || + attrName === "tor-manual-page" + ) { this.#setHref(); } } #setHref() { + let torManualPage = this.getAttribute("tor-manual-page"); + if (torManualPage) { + const [page, anchor] = torManualPage.split("_", 2); + + let locale = Services.locale.appLocaleAsBCP47; + if (locale === "ja-JP-macos") { + // Convert quirk-locale to the locale used for tor project. + locale = "ja"; + } + + let href = `https://tb-manual.torproject.org/${locale}/${page}/`; + if (anchor) { + href = `${href}#${anchor}`; + } + this.href = href; + return; + } let supportPage = this.getAttribute("support-page") ?? ""; let base = MozSupportLink.SUPPORT_URL + supportPage; this.href = this.hasAttribute("utm-content") @@ -122,21 +145,7 @@ customElements.define("moz-support-link", MozSupportLink, { extends: "a" }); * Otherwise the url in unmodified form. */ export function formatUTMParams(contentAttribute, url) { - if (!contentAttribute) { - return url; - } - let parsedUrl = new URL(url); - let domain = `.${parsedUrl.hostname}`; - if ( - !domain.endsWith(".mozilla.org") && - // For testing: addons-dev.allizom.org and addons.allizom.org - !domain.endsWith(".allizom.org") - ) { - return url; - } - - parsedUrl.searchParams.set("utm_source", "firefox-browser"); - parsedUrl.searchParams.set("utm_medium", "firefox-browser"); - parsedUrl.searchParams.set("utm_content", contentAttribute); - return parsedUrl.href; + // Do not add utm parameters. See tor-browser#42583. + // NOTE: This method is also present in about:addons. + return url; }