tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit d22146fef9d1e9057394dcc3fa64c0a2e808a028
parent d285a4fb14adbc5d170680a8dfb1a4afb2ae2f10
Author: Thomas Wisniewski <twisniewski@mozilla.com>
Date:   Wed,  1 Oct 2025 02:27:59 +0000

Bug 1990062 - update the description text of the broken site reporter and add a SUMO link; r=Gijs,fluent-reviewers,bolsson

Differential Revision: https://phabricator.services.mozilla.com/D265723

Diffstat:
Mbrowser/components/reportbrokensite/ReportBrokenSite.sys.mjs | 13+++++++++++++
Mbrowser/components/reportbrokensite/content/reportBrokenSitePanel.inc.xhtml | 11+++++++++--
Mbrowser/components/reportbrokensite/test/browser/browser.toml | 2++
Abrowser/components/reportbrokensite/test/browser/browser_learn_more_link.js | 36++++++++++++++++++++++++++++++++++++
Mbrowser/components/reportbrokensite/test/browser/browser_tab_key_order.js | 1+
Mbrowser/components/reportbrokensite/test/browser/head.js | 11+++++++++++
Mbrowser/locales/en-US/browser/reportBrokenSite.ftl | 3++-
Mtoolkit/components/reportbrokensite/metrics.yaml | 15+++++++++++++++
8 files changed, 89 insertions(+), 3 deletions(-)

diff --git a/browser/components/reportbrokensite/ReportBrokenSite.sys.mjs b/browser/components/reportbrokensite/ReportBrokenSite.sys.mjs @@ -210,6 +210,12 @@ class ViewState { } } + get learnMoreLink() { + return this.#mainView.querySelector( + "#report-broken-site-popup-learn-more-link" + ); + } + get sendMoreInfoLink() { return this.#mainView.querySelector( "#report-broken-site-popup-send-more-info-link" @@ -539,6 +545,13 @@ export var ReportBrokenSite = new (class ReportBrokenSite { await this.#openWebCompatTab(tabbrowser); state.reset(); }); + + state.learnMoreLink.addEventListener("click", async event => { + this.#recordGleanEvent("learnMore"); + event.target.ownerGlobal.requestAnimationFrame(() => { + event.target.ownerGlobal.CustomizableUI.hidePanelForNode(event.target); + }); + }); } #initReportSentView(state) { diff --git a/browser/components/reportbrokensite/content/reportBrokenSitePanel.inc.xhtml b/browser/components/reportbrokensite/content/reportBrokenSitePanel.inc.xhtml @@ -23,8 +23,15 @@ <html:form id="report-broken-site-panel-form"/> <vbox id="report-broken-site-panel-container" class="panel-subview-body"> - <html:p id="report-broken-site-panel-intro" - data-l10n-id="report-broken-site-panel-intro"/> + <html:p> + <html:span id="report-broken-site-popup-intro" + data-l10n-id="report-broken-site-panel-intro-text"/> + <html:a id="report-broken-site-popup-learn-more-link" + data-l10n-id="report-broken-site-panel-learn-more-link" + is="moz-support-link" + support-page="report-broken-site" + class="popup-notification-learnmore-link"/> + </html:p> <label id="report-broken-site-popup-url-label" control="report-broken-site-popup-url" data-l10n-id="report-broken-site-panel-url"/> diff --git a/browser/components/reportbrokensite/test/browser/browser.toml b/browser/components/reportbrokensite/test/browser/browser.toml @@ -28,6 +28,8 @@ skip-if = [ "os == 'win' && os_version == '11.26100' && processor == 'x86_64' && asan", # Bug 1867132 ] +["browser_learn_more_link.js"] + ["browser_parent_menuitems.js"] ["browser_prefers_contrast.js"] diff --git a/browser/components/reportbrokensite/test/browser/browser_learn_more_link.js b/browser/components/reportbrokensite/test/browser/browser_learn_more_link.js @@ -0,0 +1,36 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +/* Tests to ensure that the reason dropdown is shown or hidden + * based on its pref, and that its optional and required modes affect + * the Send button and report appropriately. + */ + +"use strict"; + +add_common_setup(); + +async function ensureLearnMoreLinkWorks(menu) { + const rbs = await menu.openReportBrokenSite(); + const { win, mainView, learnMoreLink } = rbs; + ok(learnMoreLink, "Found a learn more link"); + + const promises = [ + BrowserTestUtils.waitForEvent(mainView, "ViewHiding"), + BrowserTestUtils.waitForNewTab(win.gBrowser, LEARN_MORE_TEST_URL), + ]; + EventUtils.synthesizeMouseAtCenter(learnMoreLink, {}, win); + const results = await Promise.all(promises); + gBrowser.removeTab(results[1]); +} + +add_task(async function testLearnMoreLink() { + ensureReportBrokenSitePreffedOn(); + await BrowserTestUtils.withNewTab(REPORTABLE_PAGE_URL, async function () { + await ensureLearnMoreLinkWorks(AppMenu()); + await ensureLearnMoreLinkWorks(HelpMenu()); + await ensureLearnMoreLinkWorks(ProtectionsPanel()); + }); + const telemetry = Glean.webcompatreporting.learnMore.testGetValue(); + is(telemetry.length, 3, "Got telemetry"); +}); diff --git a/browser/components/reportbrokensite/test/browser/browser_tab_key_order.js b/browser/components/reportbrokensite/test/browser/browser_tab_key_order.js @@ -67,6 +67,7 @@ async function ensureExpectedTabOrder( if (expectBackButton) { order.push(".subviewbutton-back"); } + order.push("#report-broken-site-popup-learn-more-link"); order.push("#report-broken-site-popup-url"); // check that we've cycled back return ensureTabOrder(order); } diff --git a/browser/components/reportbrokensite/test/browser/head.js b/browser/components/reportbrokensite/test/browser/head.js @@ -27,6 +27,11 @@ const REPORTABLE_PAGE_URL2 = REPORTABLE_PAGE_URL.replace(".com", ".org"); const REPORTABLE_PAGE_URL3 = `${BASE_URL}example_report_page.html`; +const SUMO_BASE_URL = Services.urlFormatter.formatURLPref( + "app.support.baseURL" +); +const LEARN_MORE_TEST_URL = `${SUMO_BASE_URL}report-broken-site`; + const NEW_REPORT_ENDPOINT_TEST_URL = `${BASE_URL}sendMoreInfoTestEndpoint.html`; const PREFS = { @@ -54,6 +59,8 @@ function add_common_setup() { for (const prefName of Object.values(PREFS)) { Services.prefs.clearUserPref(prefName); } + Services.telemetry.clearEvents(); + Services.fog.testResetFOG(); }); }); } @@ -399,6 +406,10 @@ class ReportBrokenSiteHelper { return this.getViewNode("report-broken-site-popup-description"); } + get learnMoreLink() { + return this.getViewNode("report-broken-site-popup-learn-more-link"); + } + get sendMoreInfoLink() { return this.getViewNode("report-broken-site-popup-send-more-info-link"); } diff --git a/browser/locales/en-US/browser/reportBrokenSite.ftl b/browser/locales/en-US/browser/reportBrokenSite.ftl @@ -6,7 +6,8 @@ report-broken-site-mainview-title = Report broken site report-broken-site-panel-header = .label = Report broken site .title = Report broken site -report-broken-site-panel-intro = Help make { -brand-product-name } better for everyone. { -vendor-short-name } uses the info you send to fix website problems. +report-broken-site-panel-intro-text = Your report helps us understand and fix issues in { -brand-product-name } to make it better for everyone. +report-broken-site-panel-learn-more-link = Learn more report-broken-site-panel-url = URL report-broken-site-panel-reason-label = What’s broken? diff --git a/toolkit/components/reportbrokensite/metrics.yaml b/toolkit/components/reportbrokensite/metrics.yaml @@ -758,6 +758,21 @@ broken_site_report.browser_info.security: webcompatreporting: + learn_more: + type: event + description: | + The user will be redirected to a SUMO article (https://support.mozilla.org/km/kb/report-breakage-due-blocking) to learn more about reporting a broken site. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1970705 + data_reviews: + - https://phabricator.services.mozilla.com/D255555 + data_sensitivity: + - interaction + notification_emails: + - twisniewski@mozilla.com + - android-probes@mozilla.com + - webcompat-reporting-tool-telemetry@mozilla.com + expires: never opened: type: event description: >