diff --git a/common/modules/addons.jsm b/common/modules/addons.jsm index 741c07e9..2e52a9aa 100644 --- a/common/modules/addons.jsm +++ b/common/modules/addons.jsm @@ -492,127 +492,7 @@ var Addons = Module("addons", { } }); -if (!services.has("extensionManager")) - Components.utils.import("resource://gre/modules/AddonManager.jsm", this); -else - var AddonManager = { - PERM_CAN_UNINSTALL: 1, - PERM_CAN_ENABLE: 2, - PERM_CAN_DISABLE: 4, - PERM_CAN_UPGRADE: 8, - - getAddonByID: function (id, callback) { - callback = callback || util.identity; - addon = services.extensionManager.getItemForID(id); - if (addon) - addon = this.wrapAddon(addon); - return callback(addon); - }, - - wrapAddon: function wrapAddon(addon) { - addon = Object.create(addon.QueryInterface(Ci.nsIUpdateItem)); - - ["aboutURL", "creator", "description", "developers", - "homepageURL", "installDate", "optionsURL", - "releaseNotesURI", "updateDate"].forEach(function (item) { - memoize(addon, item, function (item) this.getProperty(item)); - }); - - update(addon, { - - get permissions() 1 | (this.userDisabled ? 2 : 4), - - appDisabled: false, - - getProperty: function getProperty(property) { - let resource = services.rdf.GetResource("urn:mozilla:item:" + this.id); - - if (resource) { - let target = services.extensionManager.datasource.GetTarget(resource, - services.rdf.GetResource("http://www.mozilla.org/2004/em-rdf#" + property), true); - - if (target && target instanceof Ci.nsIRDFLiteral) - return target.Value; - } - - return ""; - }, - - installLocation: Class.Memoize(function () services.extensionManager.getInstallLocation(this.id)), - getResourceURI: function getResourceURI(path) { - let file = this.installLocation.getItemFile(this.id, path); - return services.io.newFileURI(file); - }, - - get isActive() this.getProperty("isDisabled") != "true", - - uninstall: function uninstall() { - services.extensionManager.uninstallItem(this.id); - }, - - get userDisabled() this.getProperty("userDisabled") === "true", - set userDisabled(val) { - services.extensionManager[val ? "disableItem" : "enableItem"](this.id); - } - }); - - return addon; - }, - - getAddonsByTypes: function (types, callback) { - let res = []; - for (let [, type] in Iterator(types)) - for (let [, item] in Iterator(services.extensionManager - .getItemList(Ci.nsIUpdateItem["TYPE_" + type.toUpperCase()], {}))) - res.push(this.wrapAddon(item)); - - if (callback) - util.timeout(function () { callback(res); }); - return res; - }, - - getInstallForFile: function (file, callback, mimetype) { - callback({ - addListener: function () {}, - install: function () { - services.extensionManager.installItemFromFile(file, "app-profile"); - } - }); - }, - - getInstallForURL: function (url, callback, mimetype) { - util.assert(false, _("error.unavailable", config.host, services.runtime.version)); - }, - - observers: [], - addAddonListener: function (listener) { - observer.listener = listener; - function observer(subject, topic, data) { - if (subject instanceof Ci.nsIUpdateItem) - subject = AddonManager.wrapAddon(subject); - - if (data === "item-installed") - listener.onInstalling(subject, true); - else if (data === "item-uninstalled") - listener.onUnistalling(subject, true); - else if (data === "item-upgraded") - listener.onInstalling(subject, true); - else if (data === "item-enabled") - listener.onEnabling(subject, true); - else if (data === "item-disabled") - listener.onDisabling(subject, true); - } - services.observer.addObserver(observer, "em-action-requested", false); - this.observers.push(observer); - }, - removeAddonListener: function (listener) { - this.observers = this.observers.filter(function (observer) { - if (observer.listener !== listener) - return true; - services.observer.removeObserver(observer, "em-action-requested"); - }); - } - }; +Components.utils.import("resource://gre/modules/AddonManager.jsm", this); endModule(); diff --git a/common/modules/base.jsm b/common/modules/base.jsm index a3494b8b..abdd25ff 100644 --- a/common/modules/base.jsm +++ b/common/modules/base.jsm @@ -20,13 +20,6 @@ let { __lookupGetter__, __lookupSetter__, __defineGetter__, __defineSetter__, if (typeof XPCSafeJSObjectWrapper === "undefined") this.XPCSafeJSObjectWrapper = XPCNativeWrapper; -if (!XPCNativeWrapper.unwrap) - XPCNativeWrapper.unwrap = function unwrap(obj) { - if (hasOwnProperty.call(obj, "wrappedJSObject")) - return obj.wrappedJSObject; - return obj; - }; - let getGlobalForObject = Cu.getGlobalForObject || function (obj) obj.__parent__; function require(module, target) JSMLoader.load(module, target); @@ -208,7 +201,6 @@ function debuggerProperties(obj) { * @returns {Generator} */ function prototype(obj) - /* Temporary hack: */ typeof obj === "xml" || obj.__proto__ !== obj.__proto__ ? null : obj.__proto__ || Object.getPrototypeOf(obj) || XPCNativeWrapper.unwrap(obj).__proto__ || Object.getPrototypeOf(XPCNativeWrapper.unwrap(obj));