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:
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: >