mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
Bug 1838841 - Ship v120.0.0 of the WebCompat System Addon; r=ksenia,webcompat-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D191233
This commit is contained in:
parent
c409f41ef4
commit
62a5aa5313
@ -140,28 +140,6 @@ const AVAILABLE_INJECTIONS = [
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "bug1605611",
|
||||
platform: "android",
|
||||
domain: "maps.google.com",
|
||||
bug: "1605611",
|
||||
contentScripts: {
|
||||
matches: InterventionHelpers.matchPatternsForGoogle(
|
||||
"*://www.google.",
|
||||
"/maps*"
|
||||
),
|
||||
css: [
|
||||
{
|
||||
file: "injections/css/bug1605611-maps.google.com-directions-time.css",
|
||||
},
|
||||
],
|
||||
js: [
|
||||
{
|
||||
file: "injections/js/bug1605611-maps.google.com-directions-time.js",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "bug1610344",
|
||||
platform: "all",
|
||||
@ -484,6 +462,23 @@ const AVAILABLE_INJECTIONS = [
|
||||
allFrames: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "bug1859617",
|
||||
platform: "all",
|
||||
domain: "Sites relying on there being no window.InstallTrigger",
|
||||
bug: "1859617",
|
||||
contentScripts: {
|
||||
matches: [
|
||||
"*://*.stallionexpress.ca/*", // Bug 1859617
|
||||
],
|
||||
js: [
|
||||
{
|
||||
file: "injections/js/bug1859617-installtrigger-removal-shim.js",
|
||||
},
|
||||
],
|
||||
allFrames: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "bug1784141",
|
||||
platform: "android",
|
||||
@ -639,20 +634,6 @@ const AVAILABLE_INJECTIONS = [
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "bug1799994",
|
||||
platform: "desktop",
|
||||
domain: "www.vivobarefoot.com",
|
||||
bug: "1799994",
|
||||
contentScripts: {
|
||||
matches: ["*://www.vivobarefoot.com/*"],
|
||||
css: [
|
||||
{
|
||||
file: "injections/css/bug1799994-www.vivobarefoot.com-product-filters-fix.css",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "bug1800000",
|
||||
platform: "desktop",
|
||||
@ -801,20 +782,6 @@ const AVAILABLE_INJECTIONS = [
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "bug1829952",
|
||||
platform: "android",
|
||||
domain: "eventer.co.il",
|
||||
bug: "1829952",
|
||||
contentScripts: {
|
||||
matches: ["*://*.eventer.co.il/*"],
|
||||
css: [
|
||||
{
|
||||
file: "injections/css/bug1829952-eventer.co.il-button-height.css",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "bug1830747",
|
||||
platform: "android",
|
||||
|
@ -861,22 +861,6 @@ const AVAILABLE_UA_OVERRIDES = [
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
/*
|
||||
* Bug 1827678 - UA override for static.slots.lv
|
||||
* Webcompat issue #68379 - https://webcompat.com/issues/68379
|
||||
*/
|
||||
id: "bug1827678-webc68379",
|
||||
platform: "android",
|
||||
domain: "static.slots.lv",
|
||||
bug: "1827678",
|
||||
config: {
|
||||
matches: ["*://static.slots.lv/*"],
|
||||
uaTransformer: originalUA => {
|
||||
return UAHelpers.getDeviceAppropriateChromeUA();
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
/*
|
||||
* Bug 1827678 - UA override for mobile.onvue.com
|
||||
@ -1262,23 +1246,6 @@ const AVAILABLE_UA_OVERRIDES = [
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
/*
|
||||
* Bug 1836181 - UA override for conference.amwell.com
|
||||
*
|
||||
* The site's content is not loaded unless a Chrome UA is used.
|
||||
*/
|
||||
id: "bug1836181",
|
||||
platform: "all",
|
||||
domain: "conference.amwell.com",
|
||||
bug: "1836181",
|
||||
config: {
|
||||
matches: ["*://conference.amwell.com/*"],
|
||||
uaTransformer: originalUA => {
|
||||
return UAHelpers.getDeviceAppropriateChromeUA();
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
/*
|
||||
* Bug 1836182 - UA override for www.flatsatshadowglen.com
|
||||
@ -1410,6 +1377,26 @@ const AVAILABLE_UA_OVERRIDES = [
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
/*
|
||||
* Bug 1858664 - UA override to freeze rv segment to 109
|
||||
*
|
||||
* Some sites have issues with a UA string with "rv:" segment
|
||||
* higher than 109, freezing it to 109 fixes the issues.
|
||||
*/
|
||||
id: "bug1858664",
|
||||
platform: "all",
|
||||
domain: "Sites with known breakage with rv: segment higher than 109",
|
||||
bug: "1858664",
|
||||
config: {
|
||||
matches: [
|
||||
"*://*.tesco.com/*", // #1858664
|
||||
],
|
||||
uaTransformer: originalUA => {
|
||||
return UAHelpers.capRvTo109(originalUA);
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
module.exports = AVAILABLE_UA_OVERRIDES;
|
||||
|
@ -1,16 +0,0 @@
|
||||
/* 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/. */
|
||||
|
||||
/**
|
||||
* Bug 1605611 - Cannot change Departure/arrival dates in Google Maps on Android
|
||||
*
|
||||
* Google Maps hides a datetime-local in its directions picker by giving it
|
||||
* z-index:-50000, which causes it to be unclickable in Firefox. Here we
|
||||
* use opacity:0 instead to hide it, while letting it remain clickable.
|
||||
*/
|
||||
|
||||
.ml-route-options-picker-container input[type="datetime-local"] {
|
||||
z-index: unset;
|
||||
opacity: 0;
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
/* 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/. */
|
||||
|
||||
/**
|
||||
* www.vivobarefoot.com - product filters cannot be interacted-with
|
||||
* Bug #1799994 - https://bugzilla.mozilla.org/show_bug.cgi?id=1799994
|
||||
* WebCompat issue #108752 - https://webcompat.com/issues/108752
|
||||
*
|
||||
* The breakage is actually correct behavior, but because of Chrome
|
||||
* bug https://bugs.chromium.org/p/chromium/issues/detail?id=606208
|
||||
* it is currently not breaking on Chrome. We can work around it by
|
||||
* bumping the z-index of the filter options.
|
||||
*/
|
||||
.page-products .filter-options {
|
||||
z-index: 2;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
/* 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/. */
|
||||
|
||||
/**
|
||||
* eventer.co.il - a button is covering entire page
|
||||
* Bug #1829952 - https://bugzilla.mozilla.org/show_bug.cgi?id=1829952
|
||||
* WebCompat issue #121296 - https://github.com/webcompat/web-bugs/issues/121296
|
||||
*
|
||||
* The button is covering the page only in Firefox on mobile
|
||||
* because of additional styles applied via @-moz-document url-prefix.
|
||||
* Resetting the height makes the button normal size
|
||||
*/
|
||||
|
||||
#purchasePageRedesignContainer .mobileStripButton {
|
||||
height: auto;
|
||||
min-height: auto;
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
/* 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/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Bug 1605611 - Cannot change Departure/arrival dates in Google Maps on Android
|
||||
*
|
||||
* This patch re-enables the disabled "Leave now" button.
|
||||
*
|
||||
* See https://bugzilla.mozilla.org/show_bug.cgi?id=1800498 and
|
||||
* https://bugzilla.mozilla.org/show_bug.cgi?id=1605611 for details.
|
||||
*/
|
||||
|
||||
const selector =
|
||||
".ml-directions-searchbox-parent [aria-haspopup=dialog][disabled]";
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// In case the element appeared before the MutationObserver was activated.
|
||||
for (const elem of document.querySelectorAll(selector)) {
|
||||
elem.disabled = false;
|
||||
}
|
||||
// Start watching for the insertion of the "Leave now" button.
|
||||
const moOptions = {
|
||||
attributeFilter: ["disabled"],
|
||||
attributes: true,
|
||||
subtree: true,
|
||||
};
|
||||
const mo = new MutationObserver(function (records) {
|
||||
for (const { target } of records) {
|
||||
if (target.matches(selector)) {
|
||||
target.disabled = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
mo.observe(document.body, moOptions);
|
||||
});
|
@ -0,0 +1,26 @@
|
||||
/* 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/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Bug 1859617 - Generic window.InstallTrigger removal shim
|
||||
*
|
||||
* This interventions shims window.InstallTrigger to undefine it.
|
||||
*/
|
||||
|
||||
/* globals exportFunction */
|
||||
|
||||
if (typeof window.InstallTrigger !== "undefined") {
|
||||
console.info(
|
||||
"window.InstallTrigger has been undefined for compatibility reasons. See https://bugzilla.mozilla.org/show_bug.cgi?id=1859617 for details."
|
||||
);
|
||||
|
||||
Object.defineProperty(window.wrappedJSObject, "InstallTrigger", {
|
||||
get: exportFunction(function () {
|
||||
return undefined;
|
||||
}, window),
|
||||
set: exportFunction(function (_) {}, window),
|
||||
});
|
||||
}
|
@ -72,6 +72,13 @@ var UAHelpers = {
|
||||
.replace(`Firefox/${ver[1]}`, "Firefox/99.0")
|
||||
.replace(`rv:${ver[1]}`, "rv:99.0");
|
||||
},
|
||||
capRvTo109(originalUA) {
|
||||
const ver = originalUA.match(/rv:(\d+\.\d+)/);
|
||||
if (!ver || parseFloat(ver[1]) <= 109) {
|
||||
return originalUA;
|
||||
}
|
||||
return originalUA.replace(`rv:${ver[1]}`, "rv:109.0");
|
||||
},
|
||||
getWindowsUA(originalUA) {
|
||||
const rv = originalUA.match("rv:[0-9]+.[0-9]+")[0];
|
||||
const ver = originalUA.match("Firefox/[0-9]+.[0-9]+")[0];
|
||||
|
@ -2,7 +2,7 @@
|
||||
"manifest_version": 2,
|
||||
"name": "Web Compatibility Interventions",
|
||||
"description": "Urgent post-release fixes for web compatibility.",
|
||||
"version": "119.1.0",
|
||||
"version": "120.0.0",
|
||||
"browser_specific_settings": {
|
||||
"gecko": {
|
||||
"id": "webcompat@mozilla.org",
|
||||
|
@ -46,7 +46,6 @@ FINAL_TARGET_FILES.features["webcompat@mozilla.org"]["injections"]["css"] += [
|
||||
"injections/css/bug0000000-testbed-css-injection.css",
|
||||
"injections/css/bug1570328-developer-apple.com-transform-scale.css",
|
||||
"injections/css/bug1575000-apply.lloydsbank.co.uk-radio-buttons-fix.css",
|
||||
"injections/css/bug1605611-maps.google.com-directions-time.css",
|
||||
"injections/css/bug1610344-directv.com.co-hide-unsupported-message.css",
|
||||
"injections/css/bug1644830-missingmail.usps.com-checkboxes-not-visible.css",
|
||||
"injections/css/bug1651917-teletrader.com.body-transform-origin.css",
|
||||
@ -62,11 +61,9 @@ FINAL_TARGET_FILES.features["webcompat@mozilla.org"]["injections"]["css"] += [
|
||||
"injections/css/bug1774490-rainews.it-gallery-fix.css",
|
||||
"injections/css/bug1784141-aveeno.com-acuvue.com-unsupported.css",
|
||||
"injections/css/bug1784199-entrata-platform-unsupported.css",
|
||||
"injections/css/bug1799994-www.vivobarefoot.com-product-filters-fix.css",
|
||||
"injections/css/bug1800000-www.honda.co.uk-choose-dealer-button-fix.css",
|
||||
"injections/css/bug1819678-nppes.cms.hhs.gov-unsupported-banner.css",
|
||||
"injections/css/bug1829949-tomshardware.com-scrollbar-width.css",
|
||||
"injections/css/bug1829952-eventer.co.il-button-height.css",
|
||||
"injections/css/bug1830747-babbel.com-page-height.css",
|
||||
"injections/css/bug1830752-afisha.ru-slider-pointer-events.css",
|
||||
"injections/css/bug1830761-91mobiles.com-content-height.css",
|
||||
@ -91,7 +88,6 @@ FINAL_TARGET_FILES.features["webcompat@mozilla.org"]["injections"]["js"] += [
|
||||
"injections/js/bug1457335-histography.io-ua-change.js",
|
||||
"injections/js/bug1472075-bankofamerica.com-ua-change.js",
|
||||
"injections/js/bug1579159-m.tailieu.vn-pdfjs-worker-disable.js",
|
||||
"injections/js/bug1605611-maps.google.com-directions-time.js",
|
||||
"injections/js/bug1631811-datastudio.google.com-indexedDB.js",
|
||||
"injections/js/bug1722955-frontgate.com-ua-override.js",
|
||||
"injections/js/bug1724868-news.yahoo.co.jp-ua-override.js",
|
||||
@ -113,6 +109,7 @@ FINAL_TARGET_FILES.features["webcompat@mozilla.org"]["injections"]["js"] += [
|
||||
"injections/js/bug1849058-nicochannel.jp-picture-in-picture-shim.js",
|
||||
"injections/js/bug1855014-eksiseyler.com.js",
|
||||
"injections/js/bug1855071-www.meteoam.it.js",
|
||||
"injections/js/bug1859617-installtrigger-removal-shim.js",
|
||||
]
|
||||
|
||||
FINAL_TARGET_FILES.features["webcompat@mozilla.org"]["shims"] += [
|
||||
|
@ -1,33 +0,0 @@
|
||||
import pytest
|
||||
from webdriver.error import NoSuchElementException
|
||||
|
||||
# Google puts [disabled="true"] on buttons, which causes them to not
|
||||
# work in Firefox. Our intervention removes that [disabled] property.
|
||||
|
||||
URL = "https://www.google.com/maps/dir/Fettstra%C3%9Fe+20,+D-20357+Hamburg,+Deutschland/Hauptkirche+St.+Michaelis,+Englische+Planke,+Hamburg/@53.5586949,9.9852882,14z/data=!4m8!4m7!1m2!1m1!1s0x47b18f4493d02fe1:0x6280c2a6cea3ed83!1m2!1m1!1s0x47b18f11e1dd5b45:0x187d5dca009a4b19!3e3?gl=de"
|
||||
BUTTON_CSS = "button[jsaction^='directionsSearchbox.time']"
|
||||
PICKER_CSS = ".ml-route-options-picker-container.visible"
|
||||
|
||||
|
||||
def open_picker(client):
|
||||
button = client.await_css(BUTTON_CSS, is_displayed=True)
|
||||
assert button
|
||||
client.mouse.click(element=button).perform()
|
||||
return client.await_css(PICKER_CSS, is_displayed=True, timeout=5)
|
||||
|
||||
|
||||
@pytest.mark.only_platforms("android")
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.with_interventions
|
||||
async def test_enabled(client):
|
||||
await client.navigate(URL)
|
||||
assert open_picker(client)
|
||||
|
||||
|
||||
@pytest.mark.only_platforms("android")
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.without_interventions
|
||||
async def test_disabled(client):
|
||||
await client.navigate(URL)
|
||||
with pytest.raises(NoSuchElementException):
|
||||
open_picker(client)
|
@ -1,63 +0,0 @@
|
||||
import pytest
|
||||
from webdriver.error import NoSuchElementException
|
||||
|
||||
URL = "https://www.vivobarefoot.com/eu/mens"
|
||||
FILTER_CSS = "#narrow-by-list .filter-wrapper:last-of-type dt"
|
||||
SUBMENU_CSS = "#narrow-by-list .filter-wrapper:last-of-type dd"
|
||||
POPUP1_CSS = "#globalePopupWrapper"
|
||||
POPUP2_CSS = "#globale_overlay"
|
||||
POPUP3_CSS = ".weblayer--box-subscription-1"
|
||||
|
||||
|
||||
async def check_filter_opens(client):
|
||||
await client.navigate(URL)
|
||||
|
||||
popup = client.await_css(POPUP1_CSS, timeout=3)
|
||||
if popup:
|
||||
client.remove_element(popup)
|
||||
popup = client.find_css(POPUP2_CSS)
|
||||
if popup:
|
||||
client.remove_element(popup)
|
||||
popup = client.find_css(POPUP3_CSS)
|
||||
if popup:
|
||||
client.remove_element(popup)
|
||||
|
||||
filter = client.await_css(FILTER_CSS)
|
||||
|
||||
# we need to wait for the page to add the click listener
|
||||
client.execute_async_script(
|
||||
"""
|
||||
const filter = arguments[0];
|
||||
const resolve = arguments[1];
|
||||
const ETP = EventTarget.prototype;
|
||||
const AEL = ETP.addEventListener;
|
||||
ETP.addEventListener = function(type) {
|
||||
if (this === filter && type === "click") {
|
||||
resolve();
|
||||
}
|
||||
return AEL.apply(this, arguments);
|
||||
};
|
||||
""",
|
||||
filter,
|
||||
)
|
||||
|
||||
client.mouse.click(element=filter).perform()
|
||||
try:
|
||||
client.await_css(SUBMENU_CSS, is_displayed=True, timeout=3)
|
||||
except NoSuchElementException:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
@pytest.mark.skip_platforms("android")
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.with_interventions
|
||||
async def test_enabled(client):
|
||||
assert await check_filter_opens(client)
|
||||
|
||||
|
||||
@pytest.mark.skip_platforms("android")
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.without_interventions
|
||||
async def test_disabled(client):
|
||||
assert not await check_filter_opens(client)
|
@ -1,32 +0,0 @@
|
||||
import pytest
|
||||
|
||||
URL = "https://www.eventer.co.il"
|
||||
EVENT_CSS = "a.slide-a-tag[href*='/event']"
|
||||
ELEM_CSS = ".mobileStripButton:not(.ng-hide)"
|
||||
|
||||
|
||||
async def is_too_tall(client):
|
||||
await client.navigate(URL)
|
||||
event = client.await_css(EVENT_CSS)
|
||||
await client.navigate(URL + client.get_element_attribute(event, "href"))
|
||||
elem = client.await_css(ELEM_CSS)
|
||||
return client.execute_script(
|
||||
"""
|
||||
return window.innerHeight == arguments[0].getBoundingClientRect().height;
|
||||
""",
|
||||
elem,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.only_platforms("android")
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.with_interventions
|
||||
async def test_enabled(client):
|
||||
assert not await is_too_tall(client)
|
||||
|
||||
|
||||
@pytest.mark.only_platforms("android")
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.without_interventions
|
||||
async def test_disabled(client):
|
||||
assert await is_too_tall(client)
|
@ -1,24 +0,0 @@
|
||||
import pytest
|
||||
|
||||
URL = "https://conference.amwell.com/"
|
||||
UNSUPPORTED_DESKTOP_CSS = "a.container-recommended-browser"
|
||||
UNSUPPORTED_MOBILE_CSS = "[onclick='joinWithApp()']"
|
||||
LOGIN_CSS = "login-layout"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.with_interventions
|
||||
async def test_enabled(client):
|
||||
await client.navigate(URL)
|
||||
assert client.await_css(LOGIN_CSS, is_displayed=True)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.without_interventions
|
||||
async def test_disabled(client):
|
||||
await client.navigate(URL)
|
||||
desktop, mobile = client.await_first_element_of(
|
||||
[client.css(UNSUPPORTED_DESKTOP_CSS), client.css(UNSUPPORTED_MOBILE_CSS)],
|
||||
is_displayed=True,
|
||||
)
|
||||
assert desktop or mobile
|
Loading…
Reference in New Issue
Block a user