From d8bbc7858622b6d9c278469aab701ca0b609cddf Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 15 May 2024 05:35:49 +0200 Subject: Merging upstream version 126.0. Signed-off-by: Daniel Baumann --- .../extensions/test/browser/browser.toml | 1 - .../browser_ext_extension_page_tab_navigated.js | 37 ++------- .../test/browser/browser_ext_themes_ntp_colors.js | 95 +++++++++++++++++----- .../browser_ext_themes_ntp_colors_perwindow.js | 8 ++ .../test/browser/browser_ext_themes_pbm.js | 2 +- .../browser/browser_ext_themes_sanitization.js | 5 +- .../test/browser/browser_ext_themes_separators.js | 7 +- 7 files changed, 97 insertions(+), 58 deletions(-) (limited to 'toolkit/components/extensions/test/browser') diff --git a/toolkit/components/extensions/test/browser/browser.toml b/toolkit/components/extensions/test/browser/browser.toml index 33d54bddc2..33a3a6dc64 100644 --- a/toolkit/components/extensions/test/browser/browser.toml +++ b/toolkit/components/extensions/test/browser/browser.toml @@ -9,7 +9,6 @@ support-files = [ ["browser_ext_downloads_filters.js"] ["browser_ext_downloads_referrer.js"] -https_first_disabled = true ["browser_ext_eventpage_disableResetIdleForTest.js"] diff --git a/toolkit/components/extensions/test/browser/browser_ext_extension_page_tab_navigated.js b/toolkit/components/extensions/test/browser/browser_ext_extension_page_tab_navigated.js index 429d584a17..f85bbfe595 100644 --- a/toolkit/components/extensions/test/browser/browser_ext_extension_page_tab_navigated.js +++ b/toolkit/components/extensions/test/browser/browser_ext_extension_page_tab_navigated.js @@ -3,10 +3,6 @@ "use strict"; -const { AddonTestUtils } = ChromeUtils.importESModule( - "resource://testing-common/AddonTestUtils.sys.mjs" -); - // The test tasks in this test file tends to trigger an intermittent // exception raised from JSActor::AfterDestroy, because of a race between // when the WebExtensions API event is being emitted from the parent process @@ -18,23 +14,6 @@ PromiseTestUtils.allowMatchingRejectionsGlobally( /Actor 'Conduits' destroyed before query 'RunListener' was resolved/ ); -AddonTestUtils.initMochitest(this); - -const server = AddonTestUtils.createHttpServer({ - hosts: ["example.com", "anotherwebpage.org"], -}); - -server.registerPathHandler("/", (request, response) => { - response.write(` - - - - test webpage - - - `); -}); - function createTestExtPage({ script }) { return ` @@ -55,7 +34,7 @@ function createTestExtPageScript(name) { ); browser.test.sendMessage(`event-received:${pageName}`); }, - { types: ["main_frame"], urls: ["http://example.com/*"] } + { types: ["main_frame"], urls: ["https://example.com/*"] } ); /* eslint-disable mozilla/balanced-listeners */ window.addEventListener("pageshow", () => { @@ -93,7 +72,7 @@ async function triggerWebRequestListener(webPageURL) { add_task(async function test_extension_page_sameprocess_navigation() { const extension = ExtensionTestUtils.loadExtension({ manifest: { - permissions: ["webRequest", "http://example.com/*"], + permissions: ["webRequest", "https://example.com/*"], }, files: { "extpage1.html": createTestExtPage({ script: "extpage1.js" }), @@ -116,7 +95,7 @@ add_task(async function test_extension_page_sameprocess_navigation() { info("Wait for the extension page to be loaded"); await extension.awaitMessage("pageshow:extpage1"); - await triggerWebRequestListener("http://example.com"); + await triggerWebRequestListener("https://example.com"); await extension.awaitMessage("event-received:extpage1"); ok(true, "extpage1 got a webRequest event as expected"); @@ -131,7 +110,7 @@ add_task(async function test_extension_page_sameprocess_navigation() { info( "Trigger a web request event and expect extpage2 to be the only one receiving it" ); - await triggerWebRequestListener("http://example.com"); + await triggerWebRequestListener("https://example.com"); await extension.awaitMessage("event-received:extpage2"); ok(true, "extpage2 got a webRequest event as expected"); @@ -146,7 +125,7 @@ add_task(async function test_extension_page_sameprocess_navigation() { await extension.awaitMessage("pagehide:extpage2"); // We only expect extpage1 to be able to receive API events. - await triggerWebRequestListener("http://example.com"); + await triggerWebRequestListener("https://example.com"); await extension.awaitMessage("event-received:extpage1"); ok(true, "extpage1 got a webRequest event as expected"); @@ -159,7 +138,7 @@ add_task(async function test_extension_page_sameprocess_navigation() { add_task(async function test_extension_page_context_navigated_to_web_page() { const extension = ExtensionTestUtils.loadExtension({ manifest: { - permissions: ["webRequest", "http://example.com/*"], + permissions: ["webRequest", "https://example.com/*"], }, files: { "extpage.html": createTestExtPage({ script: "extpage.js" }), @@ -178,8 +157,8 @@ add_task(async function test_extension_page_context_navigated_to_web_page() { // navigated will be intermittently able to receive an event before it // is navigated to the webpage url (and moved into the BFCache or destroyed) // and trigger an intermittent failure of this test. - const webPageURL = "http://anotherwebpage.org/"; - const triggerWebRequestURL = "http://example.com/"; + const webPageURL = "https://example.net/"; + const triggerWebRequestURL = "https://example.com/"; info("Opening extension page in a new tab"); const extPageTab1 = await BrowserTestUtils.addTab(gBrowser, extPageURL); diff --git a/toolkit/components/extensions/test/browser/browser_ext_themes_ntp_colors.js b/toolkit/components/extensions/test/browser/browser_ext_themes_ntp_colors.js index 8e2f5446c9..4ee92bf798 100644 --- a/toolkit/components/extensions/test/browser/browser_ext_themes_ntp_colors.js +++ b/toolkit/components/extensions/test/browser/browser_ext_themes_ntp_colors.js @@ -26,17 +26,20 @@ async function test_ntp_theme(theme, isBrightText) { }); let browser = gBrowser.selectedBrowser; - let { originalBackground, originalCardBackground, originalColor } = await SpecialPowers.spawn(browser, [], function () { let doc = content.document; ok( !doc.documentElement.hasAttribute("lwt-newtab"), - "New tab page should not have lwt-newtab attribute" + `New tab page should not have lwt-newtab attribute` + ); + ok( + !doc.documentElement.hasAttribute("lwtheme"), + `New tab page should not have lwtheme attribute` ); ok( !doc.documentElement.hasAttribute("lwt-newtab-brighttext"), - `New tab page should not have lwt-newtab-brighttext attribute` + `New tab page not should have lwt-newtab-brighttext attribute` ); return { @@ -64,22 +67,39 @@ async function test_ntp_theme(theme, isBrightText) { Services.ppmm.sharedData.flush(); + let hasNtpColors = !!( + theme.colors.ntp_background || + theme.colors.ntp_text || + theme.colors.ntp_card_background + ); await SpecialPowers.spawn( browser, [ { isBrightText, + hasNtpColors, background: hexToCSS(theme.colors.ntp_background), card_background: hexToCSS(theme.colors.ntp_card_background), color: hexToCSS(theme.colors.ntp_text), }, ], - async function ({ isBrightText, background, card_background, color }) { + async function ({ + isBrightText, + hasNtpColors, + background, + card_background, + color, + }) { let doc = content.document; - ok( + is( doc.documentElement.hasAttribute("lwt-newtab"), + hasNtpColors, "New tab page should have lwt-newtab attribute" ); + ok( + doc.documentElement.hasAttribute("lwtheme"), + "New tab page should have lwtheme attribute" + ); is( doc.documentElement.hasAttribute("lwt-newtab-brighttext"), isBrightText, @@ -88,22 +108,24 @@ async function test_ntp_theme(theme, isBrightText) { } have lwt-newtab-brighttext attribute` ); - is( - content.getComputedStyle(doc.body).backgroundColor, - background, - "New tab page background should be set." - ); - is( - content.getComputedStyle(doc.querySelector(".top-site-outer .tile")) - .backgroundColor, - card_background, - "New tab page card background should be set." - ); - is( - content.getComputedStyle(doc.querySelector(".outer-wrapper")).color, - color, - "New tab page text color should be set." - ); + if (hasNtpColors) { + is( + content.getComputedStyle(doc.body).backgroundColor, + background, + "New tab page background should be set." + ); + is( + content.getComputedStyle(doc.querySelector(".top-site-outer .tile")) + .backgroundColor, + card_background, + "New tab page card background should be set." + ); + is( + content.getComputedStyle(doc.querySelector(".outer-wrapper")).color, + color, + "New tab page text color should be set." + ); + } } ); @@ -126,6 +148,10 @@ async function test_ntp_theme(theme, isBrightText) { !doc.documentElement.hasAttribute("lwt-newtab"), "New tab page should not have lwt-newtab attribute" ); + ok( + !doc.documentElement.hasAttribute("lwtheme"), + "New tab page should not have lwtheme attribute" + ); ok( !doc.documentElement.hasAttribute("lwt-newtab-brighttext"), `New tab page should not have lwt-newtab-brighttext attribute` @@ -151,6 +177,17 @@ async function test_ntp_theme(theme, isBrightText) { ); } +async function waitForDarkMode(value) { + info(`waiting for dark mode: ${value}`); + const mq = matchMedia("(prefers-color-scheme: dark)"); + if (mq.matches == value) { + return; + } + await new Promise(r => { + mq.addEventListener("change", r, { once: true }); + }); +} + add_task(async function test_support_ntp_colors() { await SpecialPowers.pushPrefEnv({ set: [ @@ -163,11 +200,13 @@ add_task(async function test_support_ntp_colors() { ["layout.css.prefers-color-scheme.content-override", 1], // Override the system color scheme to light so this test passes on // machines with dark system color scheme. + // FIXME(emilio): This doesn't seem working reliably, at least on macOS. ["ui.systemUsesDarkTheme", 0], ], }); NewTabPagePreloading.removePreloadedBrowser(window); for (let url of ["about:newtab", "about:home"]) { + await waitForDarkMode(false); info("Opening url: " + url); await BrowserTestUtils.withNewTab({ gBrowser, url }, async browser => { await waitForAboutNewTabReady(browser, url); @@ -185,6 +224,7 @@ add_task(async function test_support_ntp_colors() { url ); + await waitForDarkMode(false); await test_ntp_theme( { colors: { @@ -198,6 +238,19 @@ add_task(async function test_support_ntp_colors() { true, url ); + + // Test a theme without any new tab page colors + await waitForDarkMode(false); + await test_ntp_theme( + { + colors: { + frame: ACCENT_COLOR, + tab_background_text: TEXT_COLOR, + }, + }, + false, + url + ); }); } }); diff --git a/toolkit/components/extensions/test/browser/browser_ext_themes_ntp_colors_perwindow.js b/toolkit/components/extensions/test/browser/browser_ext_themes_ntp_colors_perwindow.js index 3b739322d6..54152d005c 100644 --- a/toolkit/components/extensions/test/browser/browser_ext_themes_ntp_colors_perwindow.js +++ b/toolkit/components/extensions/test/browser/browser_ext_themes_ntp_colors_perwindow.js @@ -39,6 +39,10 @@ function test_ntp_theme(browser, theme, isBrightText) { doc.documentElement.hasAttribute("lwt-newtab"), "New tab page should have lwt-newtab attribute" ); + ok( + doc.documentElement.hasAttribute("lwtheme"), + "New tab page should have lwtheme attribute" + ); is( doc.documentElement.hasAttribute("lwt-newtab-brighttext"), isBrightText, @@ -89,6 +93,10 @@ function test_ntp_default_theme(browser) { !doc.documentElement.hasAttribute("lwt-newtab"), "New tab page should not have lwt-newtab attribute" ); + ok( + !doc.documentElement.hasAttribute("lwtheme"), + "New tab page should not have lwtheme attribute" + ); ok( !doc.documentElement.hasAttribute("lwt-newtab-brighttext"), `New tab page should not have lwt-newtab-brighttext attribute` diff --git a/toolkit/components/extensions/test/browser/browser_ext_themes_pbm.js b/toolkit/components/extensions/test/browser/browser_ext_themes_pbm.js index 3b36a256d0..d2dfb16e72 100644 --- a/toolkit/components/extensions/test/browser/browser_ext_themes_pbm.js +++ b/toolkit/components/extensions/test/browser/browser_ext_themes_pbm.js @@ -336,7 +336,7 @@ add_task(async function test_pbm_dark_page_info() { await BrowserTestUtils.withNewTab( { gBrowser: win.gBrowser, url: "https://example.com" }, async () => { - let pageInfo = win.BrowserPageInfo(null, "securityTab"); + let pageInfo = win.BrowserCommands.pageInfo(null, "securityTab"); await BrowserTestUtils.waitForEvent(pageInfo, "page-info-init"); let prefersColorScheme = await getPrefersColorSchemeInfo({ diff --git a/toolkit/components/extensions/test/browser/browser_ext_themes_sanitization.js b/toolkit/components/extensions/test/browser/browser_ext_themes_sanitization.js index 89ebd3ae68..fdee1eb72d 100644 --- a/toolkit/components/extensions/test/browser/browser_ext_themes_sanitization.js +++ b/toolkit/components/extensions/test/browser/browser_ext_themes_sanitization.js @@ -114,8 +114,9 @@ add_task(async function test_sanitization_transparent() { await extension.startup(); let navbar = document.querySelector("#nav-bar"); - Assert.ok( - window.getComputedStyle(navbar).boxShadow.includes("rgba(0, 0, 0, 0)"), + Assert.equal( + window.getComputedStyle(navbar).borderTopColor, + "rgba(0, 0, 0, 0)", "Top separator should be transparent" ); diff --git a/toolkit/components/extensions/test/browser/browser_ext_themes_separators.js b/toolkit/components/extensions/test/browser/browser_ext_themes_separators.js index 4da4927ccf..1b953269b6 100644 --- a/toolkit/components/extensions/test/browser/browser_ext_themes_separators.js +++ b/toolkit/components/extensions/test/browser/browser_ext_themes_separators.js @@ -48,10 +48,9 @@ add_task(async function test_support_separator_properties() { await deprecatedMessagePromise; let navbar = document.querySelector("#nav-bar"); - Assert.ok( - window - .getComputedStyle(navbar) - .boxShadow.includes(`rgb(${hexToRGB(SEPARATOR_TOP_COLOR).join(", ")})`), + Assert.equal( + window.getComputedStyle(navbar).borderTopColor, + `rgb(${hexToRGB(SEPARATOR_TOP_COLOR).join(", ")})`, "Top separator color properly set" ); -- cgit v1.2.3