1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-07 23:04:17 +01:00

More bootstrap work.

--HG--
branch : bootstrapped
This commit is contained in:
Kris Maglione
2010-12-24 09:21:14 -05:00
parent 062a2d8ece
commit baecb996c3
12 changed files with 204 additions and 25 deletions

View File

@@ -126,7 +126,7 @@ defineModule.dump = function dump_() {
msg = util.objectToString(msg);
return msg;
}).join(", ");
let name = loaded.services ? services["dactyl:"].name : "dactyl";
let name = loaded.services && loaded.prefs && services["dactyl:"] ? services["dactyl:"].name : "dactyl";
dump(String.replace(msg, /\n?$/, "\n")
.replace(/^./gm, name + ": $&"));
}
@@ -179,8 +179,8 @@ defineModule("base", {
"call", "callable", "ctypes", "curry", "debuggerProperties", "defineModule",
"deprecated", "endModule", "forEach", "isArray", "isGenerator",
"isinstance", "isObject", "isString", "isSubclass", "iter", "iterAll",
"keys", "memoize", "octal", "properties", "set", "update", "values",
"withCallerGlobal"
"keys", "memoize", "octal", "properties", "require", "set", "update",
"values", "withCallerGlobal"
],
use: ["services", "util"]
});

View File

@@ -8,8 +8,7 @@ try {
Components.utils.import("resource://dactyl/base.jsm");
defineModule("services", {
exports: ["Services", "services"],
use: ["util"]
exports: ["AddonManager", "Services", "services"]
});
/**
@@ -72,6 +71,9 @@ const Services = Module("Services", {
this.addClass("Xmlhttp", "@mozilla.org/xmlextras/xmlhttprequest;1", Ci.nsIXMLHttpRequest);
this.addClass("ZipReader", "@mozilla.org/libjar/zip-reader;1", Ci.nsIZipReader, "open");
this.addClass("ZipWriter", "@mozilla.org/zipwriter;1", Ci.nsIZipWriter);
if (!this.extensionManager)
Components.utils.import("resource://gre/modules/AddonManager.jsm");
},
_create: function (classes, ifaces, meth, init, args) {
@@ -85,7 +87,7 @@ const Services = Module("Services", {
return res;
}
catch (e) {
util.dump("Service creation failed for '" + classes + "': " + e + "\n");
dump("dactyl: Service creation failed for '" + classes + "': " + e + "\n");
return null;
}
},
@@ -105,8 +107,12 @@ const Services = Module("Services", {
if (name in this && ifaces && !this.__lookupGetter__(name) && !(this[name] instanceof Ci.nsISupports))
throw TypeError();
this.__defineGetter__(name, function () {
let res = self._create(class_, ifaces, meth);
if (!res)
return null;
delete this[name];
return this[name] = self._create(class_, ifaces, meth);
return this[name] = res;
});
},
@@ -140,10 +146,6 @@ const Services = Module("Services", {
get: function (name) this[name],
}, {
}, {
init: function (dactyl, modules) {
if (!modules.AddonManager && !this.get("extensionManager"))
Components.utils.import("resource://gre/modules/AddonManager.jsm", modules);
},
javascript: function (dactyl, modules) {
modules.JavaScript.setCompleter(this.get, [function () [[k, v] for ([k, v] in Iterator(services)) if (v instanceof Ci.nsISupports)]]);
modules.JavaScript.setCompleter(this.create, [function () [[c, ""] for (c in services.classes)]]);