summaryrefslogtreecommitdiffstats
path: root/browser/extensions/webcompat/shims/adnexus-prebid.js
blob: f0f810f0e9941ce07e953277ef2ffbd3e80f9619 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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);
}