Bug 1713698 - Add a SmartBlock shim for Amazon TAM; r=denschub,webcompat-reviewers

Differential Revision: https://phabricator.services.mozilla.com/D120240
This commit is contained in:
Thomas Wisniewski 2021-07-19 16:21:27 +00:00
parent 18df9f0064
commit d6e63d214a
4 changed files with 82 additions and 1 deletions

View File

@ -116,6 +116,14 @@ const AVAILABLE_SHIMS = [
matches: ["*://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"],
onlyIfBlockedByETP: true,
},
{
id: "AmazonTAM",
platform: "all",
name: "Amazon Transparent Ad Marketplace",
bug: "1713698",
file: "apstag.js",
matches: ["*://c.amazon-adsystem.com/aax2/apstag.js"],
},
{
id: "BmAuth",
platform: "all",

View File

@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "Web Compatibility Interventions",
"description": "Urgent post-release fixes for web compatibility.",
"version": "24.4.0",
"version": "24.5.0",
"applications": {
"gecko": {
@ -91,6 +91,7 @@
"web_accessible_resources": [
"shims/adsafeprotected-ima.js",
"shims/apstag.js",
"shims/bmauth.js",
"shims/chartbeat.js",
"shims/eluminate.js",

View File

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

View File

@ -0,0 +1,71 @@
/* 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 1713698 - Shim Amazon Transparent Ad Marketplace's apstag.js
*
* Some sites such as politico.com rely on Amazon TAM tracker to serve ads,
* breaking functionality like galleries if it is blocked. This shim helps
* mitigate major breakage in that case.
*/
if (!window.apstag?._getSlotIdToNameMapping) {
const _Q = window.apstag?._Q || [];
const newBid = config => {
return {
amznbid: "",
amzniid: "",
amznp: "",
amznsz: "0x0",
size: "0x0",
slotID: config.slotID,
};
};
window.apstag = {
_Q,
_getSlotIdToNameMapping() {},
bids() {},
debug() {},
deleteId() {},
fetchBids(cfg, cb) {
if (!Array.isArray(cfg?.slots)) {
return;
}
cb(cfg.slots.map(s => newBid(s)));
},
init() {},
punt() {},
renderImp() {},
renewId() {},
setDisplayBids() {},
targetingKeys: () => [],
thirdPartyData: {},
updateId() {},
};
window.apstagLOADED = true;
_Q.push = function(prefix, args) {
try {
switch (prefix) {
case "f":
window.apstag.fetchBids(...args);
break;
case "i":
window.apstag.init(...args);
break;
}
} catch (e) {
console.trace(e);
}
};
for (const cmd of _Q) {
_Q.push(cmd);
}
}