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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user