summaryrefslogtreecommitdiffstats
path: root/browser/components/reportbrokensite
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:14:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:14:29 +0000
commitfbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8 (patch)
tree4c1ccaf5486d4f2009f9a338a98a83e886e29c97 /browser/components/reportbrokensite
parentReleasing progress-linux version 124.0.1-1~progress7.99u1. (diff)
downloadfirefox-fbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8.tar.xz
firefox-fbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8.zip
Merging upstream version 125.0.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/components/reportbrokensite')
-rw-r--r--browser/components/reportbrokensite/ReportBrokenSite.sys.mjs12
-rw-r--r--browser/components/reportbrokensite/test/browser/browser.toml2
-rw-r--r--browser/components/reportbrokensite/test/browser/browser_site_not_working_fallback.js35
-rw-r--r--browser/components/reportbrokensite/test/browser/browser_tab_key_order.js2
-rw-r--r--browser/components/reportbrokensite/test/browser/head.js21
-rw-r--r--browser/components/reportbrokensite/test/browser/send.js24
-rw-r--r--browser/components/reportbrokensite/test/browser/send_more_info.js52
7 files changed, 86 insertions, 62 deletions
diff --git a/browser/components/reportbrokensite/ReportBrokenSite.sys.mjs b/browser/components/reportbrokensite/ReportBrokenSite.sys.mjs
index 706c013383..ef1f4e1270 100644
--- a/browser/components/reportbrokensite/ReportBrokenSite.sys.mjs
+++ b/browser/components/reportbrokensite/ReportBrokenSite.sys.mjs
@@ -469,15 +469,6 @@ export var ReportBrokenSite = new (class ReportBrokenSite {
reportSiteIssue.hidden = this.enabled || !this.reportSiteIssueEnabledPref;
reportSiteIssue.disabled = !canReportUrl;
}
-
- // "Site not working?" on the protections panel should be hidden when
- // Report Broken Site is visible (bug 1868527).
- const siteNotWorking = document.getElementById(
- "protections-popup-tp-switch-section-footer"
- );
- if (siteNotWorking) {
- siteNotWorking.hidden = this.enabled;
- }
}
#checkPrefs(whichChanged) {
@@ -755,7 +746,7 @@ export var ReportBrokenSite = new (class ReportBrokenSite {
.getElementById("protections-popup-multiView")
.showSubView(ReportBrokenSite.MAIN_PANELVIEW_ID);
break;
- case "help_reportBrokenSite":
+ case "help_reportBrokenSite": {
// hide the hamburger menu first, as we overlap with it.
const appMenuPopup = document.getElementById("appMenu-popup");
appMenuPopup?.hidePopup();
@@ -765,6 +756,7 @@ export var ReportBrokenSite = new (class ReportBrokenSite {
ownerGlobal.PanelUI.menuButton
);
break;
+ }
}
}
})();
diff --git a/browser/components/reportbrokensite/test/browser/browser.toml b/browser/components/reportbrokensite/test/browser/browser.toml
index 09e4b72079..b896342ca8 100644
--- a/browser/components/reportbrokensite/test/browser/browser.toml
+++ b/browser/components/reportbrokensite/test/browser/browser.toml
@@ -32,8 +32,6 @@ support-files = [
"../../../../../toolkit/components/gfx/content/videotest.mp4",
]
-["browser_site_not_working_fallback.js"]
-
["browser_tab_key_order.js"]
["browser_tab_switch_handling.js"]
diff --git a/browser/components/reportbrokensite/test/browser/browser_site_not_working_fallback.js b/browser/components/reportbrokensite/test/browser/browser_site_not_working_fallback.js
deleted file mode 100644
index e424a14be9..0000000000
--- a/browser/components/reportbrokensite/test/browser/browser_site_not_working_fallback.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-/* Tests that when Report Broken Site is active,
- * "Site not working?" is hidden on the protections panel.
- */
-
-"use strict";
-
-add_common_setup();
-
-const TP_PREF = "privacy.trackingprotection.enabled";
-
-const TRACKING_PAGE =
- "https://tracking.example.org/browser/browser/base/content/test/protectionsUI/trackingPage.html";
-
-const SITE_NOT_WORKING = "protections-popup-tp-switch-section-footer";
-
-add_task(async function testSiteNotWorking() {
- await SpecialPowers.pushPrefEnv({ set: [[TP_PREF, true]] });
- await BrowserTestUtils.withNewTab(TRACKING_PAGE, async function () {
- const menu = ProtectionsPanel();
-
- ensureReportBrokenSitePreffedOn();
- await menu.open();
- const siteNotWorking = document.getElementById(SITE_NOT_WORKING);
- isMenuItemHidden(siteNotWorking, "Site not working is hidden");
- await menu.close();
-
- ensureReportBrokenSitePreffedOff();
- await menu.open();
- isMenuItemEnabled(siteNotWorking, "Site not working is shown");
- await menu.close();
- });
-});
diff --git a/browser/components/reportbrokensite/test/browser/browser_tab_key_order.js b/browser/components/reportbrokensite/test/browser/browser_tab_key_order.js
index d398c7c4d3..3a50c9aa51 100644
--- a/browser/components/reportbrokensite/test/browser/browser_tab_key_order.js
+++ b/browser/components/reportbrokensite/test/browser/browser_tab_key_order.js
@@ -7,6 +7,8 @@
add_common_setup();
+requestLongerTimeout(2);
+
async function ensureTabOrder(order, win = window) {
const config = { window: win };
for (let matches of order) {
diff --git a/browser/components/reportbrokensite/test/browser/head.js b/browser/components/reportbrokensite/test/browser/head.js
index e3f4451b5b..7cc1d51a21 100644
--- a/browser/components/reportbrokensite/test/browser/head.js
+++ b/browser/components/reportbrokensite/test/browser/head.js
@@ -28,13 +28,20 @@ const PREFS = {
NEW_REPORT_ENDPOINT: "ui.new-webcompat-reporter.new-report-endpoint",
REPORT_SITE_ISSUE_ENABLED: "extensions.webcompat-reporter.enabled",
PREFERS_CONTRAST_ENABLED: "layout.css.prefers-contrast.enabled",
+ TOUCH_EVENTS: "dom.w3c_touch_events.enabled",
USE_ACCESSIBILITY_THEME: "ui.useAccessibilityTheme",
};
function add_common_setup() {
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
- set: [[PREFS.NEW_REPORT_ENDPOINT, NEW_REPORT_ENDPOINT_TEST_URL]],
+ set: [
+ [PREFS.NEW_REPORT_ENDPOINT, NEW_REPORT_ENDPOINT_TEST_URL],
+
+ // set touch events to auto-detect, as the pref gets set to 1 somewhere
+ // while tests are running, making hasTouchScreen checks unreliable.
+ [PREFS.TOUCH_EVENTS, 2],
+ ],
});
registerCleanupFunction(function () {
for (const prefName of Object.values(PREFS)) {
@@ -551,11 +558,17 @@ class MenuHelper {
return true;
}
- get reportBrokenSite() {}
+ get reportBrokenSite() {
+ throw new Error("Should be defined in derived class");
+ }
- get reportSiteIssue() {}
+ get reportSiteIssue() {
+ throw new Error("Should be defined in derived class");
+ }
- get popup() {}
+ get popup() {
+ throw new Error("Should be defined in derived class");
+ }
get opened() {
return this.popup?.hasAttribute("panelopen");
diff --git a/browser/components/reportbrokensite/test/browser/send.js b/browser/components/reportbrokensite/test/browser/send.js
index a8599741ac..761b07a4bd 100644
--- a/browser/components/reportbrokensite/test/browser/send.js
+++ b/browser/components/reportbrokensite/test/browser/send.js
@@ -139,11 +139,13 @@ async function getExpectedWebCompatInfo(tab, snapshot, fullAppData = false) {
},
hasTouchScreen,
monitorsJson(actualStr) {
- // We don't care about monitor data on Android right now.
- if (AppConstants.platform == "android") {
- return actualStr == "undefined";
+ const expected = gfxInfo.getMonitors();
+ // If undefined is saved to the Glean value here, we'll get the string "undefined" (invalid JSON).
+ // We should stop using JSON like this in bug 1875185.
+ if (!actualStr || actualStr == "undefined") {
+ return !expected.length;
}
- return actualStr == JSON.stringify(gfxInfo.getMonitors());
+ return areObjectsEqual(JSON.parse(actualStr), expected);
},
},
prefs: {
@@ -274,6 +276,20 @@ async function testSend(tab, menu, expectedOverrides = {}) {
Services.fog.testResetFOG();
GleanPings.brokenSiteReport.testBeforeNextSubmit(() => {
const ping = extractBrokenSiteReportFromGleanPing(Glean);
+
+ // sanity checks
+ const { browserInfo, tabInfo } = ping;
+ ok(ping.url?.length, "Got a URL");
+ ok(
+ ["basic", "strict"].includes(tabInfo.antitracking.blockList),
+ "Got a blockList"
+ );
+ ok(tabInfo.useragentString?.length, "Got a final UA string");
+ ok(
+ browserInfo.app.defaultUseragentString?.length,
+ "Got a default UA string"
+ );
+
ok(areObjectsEqual(ping, expected), "ping matches expectations");
resolve();
});
diff --git a/browser/components/reportbrokensite/test/browser/send_more_info.js b/browser/components/reportbrokensite/test/browser/send_more_info.js
index 6803403f63..83b6b00405 100644
--- a/browser/components/reportbrokensite/test/browser/send_more_info.js
+++ b/browser/components/reportbrokensite/test/browser/send_more_info.js
@@ -79,6 +79,7 @@ async function reformatExpectedWebCompatInfo(tab, overrides) {
additionalData: {
applicationName,
blockList,
+ buildId: snapshot.application.buildID,
devicePixelRatio: parseInt(devicePixelRatio),
finalUserAgent: useragentString,
fissionEnabled,
@@ -97,10 +98,6 @@ async function reformatExpectedWebCompatInfo(tab, overrides) {
},
hasTouchScreen,
monitors(actual) {
- // We don't care about monitor data on Android right now.
- if (AppConstants.platform === "android") {
- return actual == undefined;
- }
return areObjectsEqual(actual, gfxInfo.getMonitors());
},
},
@@ -109,16 +106,18 @@ async function reformatExpectedWebCompatInfo(tab, overrides) {
hasTrackingContentBlocked,
isPB: isPrivateBrowsing,
languages,
+ locales: snapshot.intl.localeService.available,
+ memoryMB: browserInfo.system.memory,
osArchitecture,
osName,
osVersion,
prefs: finalPrefs,
- updateChannel,
- userAgent: defaultUseragentString,
version,
},
blockList,
+ channel: updateChannel,
consoleLog,
+ defaultUserAgent: defaultUseragentString,
frameworks,
hasTouchScreen,
"gfx.webrender.software": prefs.softwareWebrender,
@@ -134,6 +133,19 @@ async function reformatExpectedWebCompatInfo(tab, overrides) {
utm_source: "desktop-reporter",
};
+ const { gfxData } = reformatted.details.additionalData;
+ for (const optional of [
+ "direct2DEnabled",
+ "directWriteEnabled",
+ "directWriteVersion",
+ "clearTypeParameters",
+ "targetFrameRate",
+ ]) {
+ if (optional in snapshot.graphics) {
+ gfxData[optional] = snapshot.graphics[optional];
+ }
+ }
+
// We only care about this pref on Linux right now on webcompat.com.
if (AppConstants.platform != "linux") {
delete finalPrefs["layers.acceleration.force-enabled"];
@@ -206,7 +218,33 @@ async function testSendMoreInfo(tab, menu, expectedOverrides = {}) {
expected.url = url;
expected.description = description;
- ok(areObjectsEqual(message, expected), "ping matches expectations");
+ // sanity checks
+ const { details } = message;
+ const { additionalData } = details;
+ ok(message.url?.length, "Got a URL");
+ ok(["basic", "strict"].includes(details.blockList), "Got a blockList");
+ ok(additionalData.applicationName?.length, "Got an app name");
+ ok(additionalData.osArchitecture?.length, "Got an OS arch");
+ ok(additionalData.osName?.length, "Got an OS name");
+ ok(additionalData.osVersion?.length, "Got an OS version");
+ ok(additionalData.version?.length, "Got an app version");
+ ok(details.channel?.length, "Got an app channel");
+ ok(details.defaultUserAgent?.length, "Got a default UA string");
+ ok(additionalData.finalUserAgent?.length, "Got a final UA string");
+
+ // If we're sending any tab-specific data (which includes console logs),
+ // check that there is also a valid screenshot.
+ if ("consoleLog" in details) {
+ const isScreenshotValid = await new Promise(done => {
+ var image = new Image();
+ image.onload = () => done(image.width > 0);
+ image.onerror = () => done(false);
+ image.src = receivedData.screenshot;
+ });
+ ok(isScreenshotValid, "Got a valid screenshot");
+ }
+
+ ok(areObjectsEqual(message, expected), "sent info matches expectations");
// re-opening the panel, the url and description should be reset
rbs = await menu.openReportBrokenSite();