dom/tests/mochitest/ajax/mochikit/MochiKit/MochiKit.js

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 /***
     3 MochiKit.MochiKit 1.4
     5 See <http://mochikit.com/> for documentation, downloads, license, etc.
     7 (c) 2005 Bob Ippolito.  All rights Reserved.
     9 ***/
    11 if (typeof(MochiKit) == 'undefined') {
    12     MochiKit = {};
    13 }
    15 if (typeof(MochiKit.MochiKit) == 'undefined') {
    16     /** @id MochiKit.MochiKit */
    17     MochiKit.MochiKit = {};
    18 }
    20 MochiKit.MochiKit.NAME = "MochiKit.MochiKit";
    21 MochiKit.MochiKit.VERSION = "1.4";
    22 MochiKit.MochiKit.__repr__ = function () {
    23     return "[" + this.NAME + " " + this.VERSION + "]";
    24 };
    26 /** @id MochiKit.MochiKit.toString */
    27 MochiKit.MochiKit.toString = function () {
    28     return this.__repr__();
    29 };
    31 /** @id MochiKit.MochiKit.SUBMODULES */
    32 MochiKit.MochiKit.SUBMODULES = [
    33     "Base",
    34     "Iter",
    35     "Logging",
    36     "DateTime",
    37     "Format",
    38     "Async",
    39     "DOM",
    40     "Selector",
    41     "Style",
    42     "LoggingPane",
    43     "Color",
    44     "Signal",
    45     "Position",
    46     "Visual"
    47 ];
    49 if (typeof(JSAN) != 'undefined' || typeof(dojo) != 'undefined') {
    50     if (typeof(dojo) != 'undefined') {
    51         dojo.provide('MochiKit.MochiKit');
    52         dojo.require("MochiKit.*");
    53     }
    54     if (typeof(JSAN) != 'undefined') {
    55         (function (lst) {
    56             for (var i = 0; i < lst.length; i++) {
    57                 JSAN.use("MochiKit." + lst[i], []);
    58             }
    59         })(MochiKit.MochiKit.SUBMODULES);
    60     }
    61     (function () {
    62         var extend = MochiKit.Base.extend;
    63         var self = MochiKit.MochiKit;
    64         var modules = self.SUBMODULES;
    65         var EXPORT = [];
    66         var EXPORT_OK = [];
    67         var EXPORT_TAGS = {};
    68         var i, k, m, all;
    69         for (i = 0; i < modules.length; i++) {
    70             m = MochiKit[modules[i]];
    71             extend(EXPORT, m.EXPORT);
    72             extend(EXPORT_OK, m.EXPORT_OK);
    73             for (k in m.EXPORT_TAGS) {
    74                 EXPORT_TAGS[k] = extend(EXPORT_TAGS[k], m.EXPORT_TAGS[k]);
    75             }
    76             all = m.EXPORT_TAGS[":all"];
    77             if (!all) {
    78                 all = extend(null, m.EXPORT, m.EXPORT_OK);
    79             }
    80             var j;
    81             for (j = 0; j < all.length; j++) {
    82                 k = all[j];
    83                 self[k] = m[k];
    84             }
    85         }
    86         self.EXPORT = EXPORT;
    87         self.EXPORT_OK = EXPORT_OK;
    88         self.EXPORT_TAGS = EXPORT_TAGS;
    89     }());
    91 } else {
    92     if (typeof(MochiKit.__compat__) == 'undefined') {
    93         MochiKit.__compat__ = true;
    94     }
    95     (function () {
    96         if (typeof(document) == "undefined") {
    97             return;
    98         }
    99         var scripts = document.getElementsByTagName("script");
   100         var kXULNSURI = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
   101         var base = null;
   102         var baseElem = null;
   103         var allScripts = {};
   104         var i;
   105         for (i = 0; i < scripts.length; i++) {
   106             var src = scripts[i].getAttribute("src");
   107             if (!src) {
   108                 continue;
   109             }
   110             allScripts[src] = true;
   111             if (src.match(/MochiKit.js$/)) {
   112                 base = src.substring(0, src.lastIndexOf('MochiKit.js'));
   113                 baseElem = scripts[i];
   114             }
   115         }
   116         if (base === null) {
   117             return;
   118         }
   119         var modules = MochiKit.MochiKit.SUBMODULES;
   120         for (var i = 0; i < modules.length; i++) {
   121             if (MochiKit[modules[i]]) {
   122                 continue;
   123             }
   124             var uri = base + modules[i] + '.js';
   125             if (uri in allScripts) {
   126                 continue;
   127             }
   128             if (document.documentElement &&
   129                 document.documentElement.namespaceURI == kXULNSURI) {
   130                 // XUL
   131                 var s = document.createElementNS(kXULNSURI, 'script');
   132                 s.setAttribute("id", "MochiKit_" + base + modules[i]);
   133                 s.setAttribute("src", uri);
   134                 s.setAttribute("type", "application/x-javascript");
   135                 baseElem.parentNode.appendChild(s);
   136             } else {
   137                 // HTML
   138                 /*
   139                     DOM can not be used here because Safari does
   140                     deferred loading of scripts unless they are
   141                     in the document or inserted with document.write
   143                     This is not XHTML compliant.  If you want XHTML
   144                     compliance then you must use the packed version of MochiKit
   145                     or include each script individually (basically unroll
   146                     these document.write calls into your XHTML source)
   148                 */
   149                 document.write('<script src="' + uri +
   150                     '" type="text/javascript"></script>');
   151             }
   152         };
   153     })();
   154 }

mercurial