summaryrefslogtreecommitdiffstats
path: root/browser/extensions/webcompat/shims/maxmind-geoip.js
blob: e5eb1e45a3c9726811f69fdc9cc52aa9cd9c4045 (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
69
/* 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 1754389 - Shim Maxmind GeoIP library
 *
 * Some sites rely on Maxmind's GeoIP library which gets blocked by ETP's
 * fingerprinter blocking. With the library window global not being defined
 * functionality may break or the site does not render at all. This shim
 * has it return the United States as the location for all users.
 */

if (!window.geoip2) {
  const continent = {
    code: "NA",
    geoname_id: 6255149,
    names: {
      de: "Nordamerika",
      en: "North America",
      es: "Norteamérica",
      fr: "Amérique du Nord",
      ja: "北アメリカ",
      "pt-BR": "América do Norte",
      ru: "Северная Америка",
      "zh-CN": "北美洲",
    },
  };

  const country = {
    geoname_id: 6252001,
    iso_code: "US",
    names: {
      de: "USA",
      en: "United States",
      es: "Estados Unidos",
      fr: "États-Unis",
      ja: "アメリカ合衆国",
      "pt-BR": "Estados Unidos",
      ru: "США",
      "zh-CN": "美国",
    },
  };

  const city = {
    names: {
      en: "",
    },
  };

  const callback = onSuccess => {
    requestAnimationFrame(() => {
      onSuccess({
        city,
        continent,
        country,
        registered_country: country,
      });
    });
  };

  window.geoip2 = {
    country: callback,
    city: callback,
    insights: callback,
  };
}