From 086c044dc34dfc0f74fbe41f4ecb402b2cd34884 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 03:13:33 +0200 Subject: Merging upstream version 125.0.1. Signed-off-by: Daniel Baumann --- .../reportbrokensite/test/browser/browser.toml | 2 - .../browser/browser_site_not_working_fallback.js | 35 --------------- .../test/browser/browser_tab_key_order.js | 2 + .../reportbrokensite/test/browser/head.js | 21 +++++++-- .../reportbrokensite/test/browser/send.js | 24 ++++++++-- .../test/browser/send_more_info.js | 52 +++++++++++++++++++--- 6 files changed, 84 insertions(+), 52 deletions(-) delete mode 100644 browser/components/reportbrokensite/test/browser/browser_site_not_working_fallback.js (limited to 'browser/components/reportbrokensite/test') 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(); -- cgit v1.2.3