]> git.donarmstrong.com Git - dactyl.git/blobdiff - common/modules/main.jsm
Import r6923 from upstream hg supporting Firefox up to 22.0a1
[dactyl.git] / common / modules / main.jsm
index ffc89ee8e5d25f643bc291a79fa4ca12c4d37ea0..41ef16cf570cfcf40a260d4abbb934bf158bcbe6 100644 (file)
@@ -1,16 +1,15 @@
-// Copyright (c) 2009-2011 by Kris Maglione <maglione.k@gmail.com>
+// Copyright (c) 2009-2012 Kris Maglione <maglione.k@gmail.com>
 //
 // This work is licensed for reuse under an MIT license. Details are
 // given in the LICENSE.txt file included with this file.
-/* use strict */
+"use strict";
 
 try {
 
-Components.utils.import("resource://dactyl/bootstrap.jsm");
 defineModule("main", {
     exports: ["ModuleBase"],
     require: ["config", "overlay", "services", "util"]
-}, this);
+});
 
 var BASE = "resource://dactyl-content/";
 
@@ -91,20 +90,13 @@ var Modules = function Modules(window) {
     Module.list = [];
     Module.constructors = {};
 
-    const create = window.Object.create || (function () {
-        window.__dactyl_eval_string = "(function (proto) ({ __proto__: proto }))";
-        JSMLoader.loadSubScript(BASE + "eval.js", window);
-
-        let res = window.__dactyl_eval_result;
-        delete window.__dactyl_eval_string;
-        delete window.__dactyl_eval_result;
-        return res;
-    })();
+    const create = window.Object.create.bind(window.Object);
 
 
     const BASES = [BASE, "resource://dactyl-local-content/"];
 
-    const jsmodules = { NAME: "jsmodules" };
+    jsmodules = Cu.createObjectIn(window);
+    jsmodules.NAME = "jsmodules";
     const modules = update(create(jsmodules), {
         yes_i_know_i_should_not_report_errors_in_these_branches_thanks: [],
 
@@ -130,7 +122,7 @@ var Modules = function Modules(window) {
                 }
             }
             try {
-                require(jsmodules, script);
+                require(script, jsmodules);
             }
             catch (e) {
                 util.dump("Loading script " + script + ":");
@@ -150,7 +142,7 @@ var Modules = function Modules(window) {
                                                              wantXrays: false });
 
             // Hack:
-            sandbox.Object = jsmodules.Object;
+            // sandbox.Object = jsmodules.Object;
             sandbox.File = jsmodules.File;
             sandbox.Math = jsmodules.Math;
             sandbox.__proto__ = proto || modules;
@@ -181,7 +173,12 @@ overlay.overlayWindow(Object.keys(config.overlays), function _overlay(window) ({
 
         defineModule.time("load", null, function _load() {
             config.modules.global
-                  .forEach(function (name) defineModule.time("load", name, require, null, modules.jsmodules, name));
+                  .forEach(function (name) {
+                      if (!isArray(name))
+                          defineModule.time("load", name, require, null, name, modules.jsmodules);
+                      else
+                          lazyRequire(name[0], name.slice(1), modules.jsmodules);
+                  });
 
             config.modules.window
                   .forEach(function (name) defineModule.time("load", name, modules.load, modules, name));