1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-02-21 08:05:45 +01:00

Fix config.addon race and add guards against future breakage.

This commit is contained in:
Kris Maglione
2011-01-30 14:45:33 -05:00
parent 71ae0ca0cd
commit bff31e153d
3 changed files with 29 additions and 19 deletions

View File

@@ -232,6 +232,24 @@ var Addon = Class("Addon", {
}
});
["cancelUninstall", "findUpdates", "getResourceURI", "hasResource", "isCompatibleWith",
"uninstall"].forEach(function (prop) {
Addon.prototype[prop] = function proxy() this.addon[prop].apply(this.addon, arguments);
});
["aboutURL", "appDisabled", "applyBackgroundUpdates", "blocklistState", "contributors", "creator",
"description", "developers", "homepageURL", "iconURL", "id", "install", "installDate", "isActive",
"isCompatible", "isPlatformCompatible", "name", "operationsRequiringRestart", "optionsURL",
"pendingOperations", "pendingUpgrade", "permissions", "providesUpdatesSecurely", "releaseNotesURI",
"scope", "screenshots", "size", "sourceURI", "translators", "type", "updateDate", "userDisabled",
"version"].forEach(function (prop) {
Object.defineProperty(Addon.prototype, prop, {
get: function get_proxy() this.addon[prop],
set: function set_proxy(val) this.addon[prop] = val
});
});
var AddonList = Class("AddonList", {
init: function init(modules, types, filter) {
this.modules = modules;
@@ -561,24 +579,6 @@ var addonErrors = array.toObject([
endModule();
let iterator = properties(config.addon);
if ("nsIUpdateItem" in Ci)
iterator = iter(iterator, properties(config.addon.__proto__));
iter.forEach(iterator, function (prop) {
let desc = Object.getOwnPropertyDescriptor(config.addon, prop) ||
Object.getOwnPropertyDescriptor(config.addon.__proto__, prop);
if (!set.has(Addon.prototype, prop))
if (callable(desc.value))
Addon.prototype[prop] = function proxy() this.addon[prop].apply(this.addon, arguments);
else
Object.defineProperty(Addon.prototype, prop, {
get: function get_proxy() this.addon[prop],
set: function set_proxy(val) this.addon[prop] = val
});
});
} catch(e){ if (isString(e)) e = Error(e); dump(e.fileName+":"+e.lineNumber+": "+e+"\n" + e.stack); }
// vim: set fdm=marker sw=4 ts=4 et ft=javascript: