X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=common%2Fmodules%2Fmain.jsm;h=41ef16cf570cfcf40a260d4abbb934bf158bcbe6;hb=8b6fcae7eaa413bc62d645d2d0c99835c47265e6;hp=ffc89ee8e5d25f643bc291a79fa4ca12c4d37ea0;hpb=5ebd29f56d17f62011cdd596b1d351947ee534ff;p=dactyl.git diff --git a/common/modules/main.jsm b/common/modules/main.jsm index ffc89ee..41ef16c 100644 --- a/common/modules/main.jsm +++ b/common/modules/main.jsm @@ -1,16 +1,15 @@ -// Copyright (c) 2009-2011 by Kris Maglione +// Copyright (c) 2009-2012 Kris Maglione // // 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));