tor-browser

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

commit 8d3684e8c46309a9ef762f9e518fc427fdeb75e2
parent 8c4e3f2cc636360958cafd23adc1b22eacc98fb7
Author: Thomas Wisniewski <twisniewski@mozilla.com>
Date:   Wed,  5 Nov 2025 18:20:15 +0000

Bug 1992923 - add an Android-only webcompat CSS intervention for godotfest.com; r=webcompat-reviewers,ksenia

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

Diffstat:
Mbrowser/extensions/webcompat/data/interventions.json | 17+++++++++++++++++
Abrowser/extensions/webcompat/injections/css/1992923-godotfest.com-fix-blur-effects.css | 30++++++++++++++++++++++++++++++
Atesting/webcompat/interventions/tests/test_1992923_godotfest_com.py | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 101 insertions(+), 0 deletions(-)

diff --git a/browser/extensions/webcompat/data/interventions.json b/browser/extensions/webcompat/data/interventions.json @@ -5747,6 +5747,23 @@ } ] }, + "1992923": { + "label": "godotfest.com", + "bugs": { + "1992923": { + "issue": "broken-images", + "matches": ["*://godotfest.com/*"] + } + }, + "interventions": [ + { + "platforms": ["android"], + "content_scripts": { + "css": ["1992923-godotfest.com-fix-blur-effects.css"] + } + } + ] + }, "1993201": { "label": "portal.pilot.ly", "bugs": { diff --git a/browser/extensions/webcompat/injections/css/1992923-godotfest.com-fix-blur-effects.css b/browser/extensions/webcompat/injections/css/1992923-godotfest.com-fix-blur-effects.css @@ -0,0 +1,30 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * godotfest.com - Blur effects are disabled on Android + * Bug #1992923 - https://bugzilla.mozilla.org/show_bug.cgi?id=1992923 + * WebCompat issue #41822 - https://webcompat.com/issues/41822 + * + * The site appears to be intentionally disabling blur effects on Firefox for + * an unknown reason, with broken-looking fallbacks. Let's enable blur again. + */ +@supports (-moz-appearance: none) { + @media (hover: none) and (pointer: coarse) { + #background-blur, + #menu-blur { + display: revert !important; + } + .backdrop-blur, + .backdrop-blur-sm, + .backdrop-blur-2xl { + --tw-backdrop-blur: blur(var(--blur-2xl)); + backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) + var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,) !important; + } + } + .talk-card__bg { + filter: var(--talk-bg-filter) !important; + } +} diff --git a/testing/webcompat/interventions/tests/test_1992923_godotfest_com.py b/testing/webcompat/interventions/tests/test_1992923_godotfest_com.py @@ -0,0 +1,54 @@ +import pytest + +URL = "https://godotfest.com/talks" + +TOP_BAR_BLUR_CSS = "#menu-blur" +HERO_CSS = ".talk-card__body" + + +async def are_blurs_working(client): + # to test, we take a screenshot of the top menu bar, which ought to be blurred, + # and then hide its blur element and compare the after-screenshot. If they're the + # same, then the blur would not have actually been working. + await client.navigate(URL) + + # hide SVGs and text which might interfere with the screenshot. + client.add_stylesheet( + """ + * { color: transparent !important; } + svg { display: none; } + """ + ) + + top_bar_blur = client.await_css(TOP_BAR_BLUR_CSS) + hero = client.await_css(HERO_CSS, is_displayed=True) + + # scroll down to a point where the site enables the blur and something obvious is behind. + client.execute_script( + """ + arguments[0].scrollIntoView({behavior: "instant", block: "start"}); + """, + hero, + ) + + # now take a screenshot, remove the blur element, and compare. + await client.stall(0.5) + pre = client.find_css("body").screenshot() + client.execute_script("arguments[0].remove()", top_bar_blur) + await client.stall(0.5) + post = client.find_css("body").screenshot() + return pre != post + + +@pytest.mark.only_platforms("android") +@pytest.mark.asyncio +@pytest.mark.with_interventions +async def test_enabled(client): + assert await are_blurs_working(client) + + +@pytest.mark.only_platforms("android") +@pytest.mark.asyncio +@pytest.mark.without_interventions +async def test_disabled(client): + assert not await are_blurs_working(client)