tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

google-analytics-legacy.js (3362B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 // based on https://github.com/gorhill/uBlock/blob/6f49e079db0262e669b70f4169924f796ac8db7c/src/web_accessible_resources/google-analytics_ga.js
      6 
      7 "use strict";
      8 
      9 if (!window._gaq) {
     10  function noopfn() {}
     11 
     12  const gaq = {
     13    Na: noopfn,
     14    O: noopfn,
     15    Sa: noopfn,
     16    Ta: noopfn,
     17    Va: noopfn,
     18    _createAsyncTracker: noopfn,
     19    _getAsyncTracker: noopfn,
     20    _getPlugin: noopfn,
     21    push: a => {
     22      if (typeof a === "function") {
     23        a();
     24        return;
     25      }
     26      if (!Array.isArray(a)) {
     27        return;
     28      }
     29      if (
     30        typeof a[0] === "string" &&
     31        /(^|\.)_link$/.test(a[0]) &&
     32        typeof a[1] === "string"
     33      ) {
     34        window.location.assign(a[1]);
     35      }
     36      if (
     37        a[0] === "_set" &&
     38        a[1] === "hitCallback" &&
     39        typeof a[2] === "function"
     40      ) {
     41        a[2]();
     42      }
     43    },
     44  };
     45 
     46  const tracker = {
     47    _addIgnoredOrganic: noopfn,
     48    _addIgnoredRef: noopfn,
     49    _addItem: noopfn,
     50    _addOrganic: noopfn,
     51    _addTrans: noopfn,
     52    _clearIgnoredOrganic: noopfn,
     53    _clearIgnoredRef: noopfn,
     54    _clearOrganic: noopfn,
     55    _cookiePathCopy: noopfn,
     56    _deleteCustomVar: noopfn,
     57    _getName: noopfn,
     58    _setAccount: noopfn,
     59    _getAccount: noopfn,
     60    _getClientInfo: noopfn,
     61    _getDetectFlash: noopfn,
     62    _getDetectTitle: noopfn,
     63    _getLinkerUrl: a => a,
     64    _getLocalGifPath: noopfn,
     65    _getServiceMode: noopfn,
     66    _getVersion: noopfn,
     67    _getVisitorCustomVar: noopfn,
     68    _initData: noopfn,
     69    _link: noopfn,
     70    _linkByPost: noopfn,
     71    _setAllowAnchor: noopfn,
     72    _setAllowHash: noopfn,
     73    _setAllowLinker: noopfn,
     74    _setCampContentKey: noopfn,
     75    _setCampMediumKey: noopfn,
     76    _setCampNameKey: noopfn,
     77    _setCampNOKey: noopfn,
     78    _setCampSourceKey: noopfn,
     79    _setCampTermKey: noopfn,
     80    _setCampaignCookieTimeout: noopfn,
     81    _setCampaignTrack: noopfn,
     82    _setClientInfo: noopfn,
     83    _setCookiePath: noopfn,
     84    _setCookiePersistence: noopfn,
     85    _setCookieTimeout: noopfn,
     86    _setCustomVar: noopfn,
     87    _setDetectFlash: noopfn,
     88    _setDetectTitle: noopfn,
     89    _setDomainName: noopfn,
     90    _setLocalGifPath: noopfn,
     91    _setLocalRemoteServerMode: noopfn,
     92    _setLocalServerMode: noopfn,
     93    _setReferrerOverride: noopfn,
     94    _setRemoteServerMode: noopfn,
     95    _setSampleRate: noopfn,
     96    _setSessionTimeout: noopfn,
     97    _setSiteSpeedSampleRate: noopfn,
     98    _setSessionCookieTimeout: noopfn,
     99    _setVar: noopfn,
    100    _setVisitorCookieTimeout: noopfn,
    101    _trackEvent: noopfn,
    102    _trackPageLoadTime: noopfn,
    103    _trackPageview: noopfn,
    104    _trackSocial: noopfn,
    105    _trackTiming: noopfn,
    106    _trackTrans: noopfn,
    107    _visitCode: noopfn,
    108  };
    109 
    110  const gat = {
    111    _anonymizeIP: noopfn,
    112    _createTracker: noopfn,
    113    _forceSSL: noopfn,
    114    _getPlugin: noopfn,
    115    _getTracker: () => tracker,
    116    _getTrackerByName: () => tracker,
    117    _getTrackers: noopfn,
    118    aa: noopfn,
    119    ab: noopfn,
    120    hb: noopfn,
    121    la: noopfn,
    122    oa: noopfn,
    123    pa: noopfn,
    124    u: noopfn,
    125  };
    126 
    127  window._gat = gat;
    128 
    129  const aa = window._gaq || [];
    130  if (Array.isArray(aa)) {
    131    while (aa[0]) {
    132      gaq.push(aa.shift());
    133    }
    134  }
    135 
    136  window._gaq = gaq.qf = gaq;
    137 }