Bug 1713696 - Add a SmartBlock shim for AdNexus; r=denschub,webcompat-reviewers

Differential Revision: https://phabricator.services.mozilla.com/D120476
This commit is contained in:
Thomas Wisniewski 2021-07-21 15:26:01 +00:00
Родитель 3918a58a02
Коммит 995d5a100a
4 изменённых файлов: 87 добавлений и 1 удалений

Просмотреть файл

@ -97,6 +97,22 @@ const AVAILABLE_SHIMS = [
"*://example.com/browser/browser/extensions/webcompat/tests/browser/shims_test_3.js",
],
},
{
id: "AdNexus",
platform: "all",
name: "AdNexus",
bug: "1713696",
file: "empty-script.js",
matches: [
"*://acdn.adnxs.com/ast/ast.js",
{
patterns: ["*://*.adnxs.com/*/pb.js", "*://*.adnxs.com/*/prebid"],
target: "adnexus-prebid.js",
types: ["script"],
},
],
onlyIfBlockedByETP: true,
},
{
id: "AdSafeProtectedGoogleIMAAdapter",
platform: "all",

Просмотреть файл

@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "Web Compatibility Interventions",
"description": "Urgent post-release fixes for web compatibility.",
"version": "24.6.0",
"version": "24.7.0",
"applications": {
"gecko": {
@ -90,6 +90,7 @@
},
"web_accessible_resources": [
"shims/adnexus-prebid.js",
"shims/adsafeprotected-ima.js",
"shims/apstag.js",
"shims/bmauth.js",

Просмотреть файл

@ -79,6 +79,7 @@ FINAL_TARGET_FILES.features["webcompat@mozilla.org"]["injections"]["js"] += [
]
FINAL_TARGET_FILES.features["webcompat@mozilla.org"]["shims"] += [
"shims/adnexus-prebid.js",
"shims/adsafeprotected-ima.js",
"shims/apstag.js",
"shims/bmauth.js",

Просмотреть файл

@ -0,0 +1,68 @@
/* 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 1694401 - Shim Prebid.js
*
* Some sites rely on prebid.js to place content, perhaps in conjunction with
* other services like Google Publisher Tags and Amazon TAM. This shim prevents
* site breakage like image galleries breaking as the user browsers them, by
* allowing the content placement to succeed.
*/
if (!window.pbjs?.requestBids) {
const que = window.pbjs?.que || [];
const cmd = window.pbjs?.cmd || [];
const adUnits = window.pbjs?.adUnits || [];
window.pbjs = {
adUnits,
addAdUnits(arr) {
if (!Array.isArray(arr)) {
arr = [arr];
}
adUnits.push(arr);
},
cmd,
offEvent() {},
que,
refreshAds() {},
removeAdUnit(codes) {
if (!Array.isArray(codes)) {
codes = [codes];
}
for (const code of codes) {
for (let i = adUnits.length - 1; i >= 0; i--) {
if (adUnits[i].code === code) {
adUnits.splice(i, 1);
}
}
}
},
renderAd() {},
requestBids(params) {
params?.bidsBackHandler?.();
},
setConfig() {},
setTargetingForGPTAsync() {},
};
const push = function(fn) {
if (typeof fn === "function") {
try {
fn();
} catch (e) {
console.trace(e);
}
}
};
que.push = push;
cmd.push = push;
que.forEach(push);
cmd.forEach(push);
}