diff options
Diffstat (limited to 'toolkit/components/webextensions/ext-management.js')
-rw-r--r-- | toolkit/components/webextensions/ext-management.js | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/toolkit/components/webextensions/ext-management.js b/toolkit/components/webextensions/ext-management.js deleted file mode 100644 index 59a7959d7..000000000 --- a/toolkit/components/webextensions/ext-management.js +++ /dev/null @@ -1,109 +0,0 @@ -/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ -/* vim: set sts=2 sw=2 et tw=80: */ -"use strict"; - -const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; - -XPCOMUtils.defineLazyGetter(this, "strBundle", function() { - const stringSvc = Cc["@mozilla.org/intl/stringbundle;1"].getService(Ci.nsIStringBundleService); - return stringSvc.createBundle("chrome://global/locale/extensions.properties"); -}); -XPCOMUtils.defineLazyModuleGetter(this, "AddonManager", - "resource://gre/modules/AddonManager.jsm"); -XPCOMUtils.defineLazyServiceGetter(this, "promptService", - "@mozilla.org/embedcomp/prompt-service;1", - "nsIPromptService"); - -function _(key, ...args) { - if (args.length) { - return strBundle.formatStringFromName(key, args, args.length); - } - return strBundle.GetStringFromName(key); -} - -function installType(addon) { - if (addon.temporarilyInstalled) { - return "development"; - } else if (addon.foreignInstall) { - return "sideload"; - } else if (addon.isSystem) { - return "other"; - } - return "normal"; -} - -extensions.registerSchemaAPI("management", "addon_parent", context => { - let {extension} = context; - return { - management: { - getSelf: function() { - return new Promise((resolve, reject) => AddonManager.getAddonByID(extension.id, addon => { - try { - let m = extension.manifest; - let extInfo = { - id: extension.id, - name: addon.name, - shortName: m.short_name || "", - description: addon.description || "", - version: addon.version, - mayDisable: !!(addon.permissions & AddonManager.PERM_CAN_DISABLE), - enabled: addon.isActive, - optionsUrl: addon.optionsURL || "", - permissions: Array.from(extension.permissions).filter(perm => { - return !extension.whiteListedHosts.pat.includes(perm); - }), - hostPermissions: extension.whiteListedHosts.pat, - installType: installType(addon), - }; - if (addon.homepageURL) { - extInfo.homepageUrl = addon.homepageURL; - } - if (addon.updateURL) { - extInfo.updateUrl = addon.updateURL; - } - if (m.icons) { - extInfo.icons = Object.keys(m.icons).map(key => { - return {size: Number(key), url: m.icons[key]}; - }); - } - - resolve(extInfo); - } catch (err) { - reject(err); - } - })); - }, - - uninstallSelf: function(options) { - return new Promise((resolve, reject) => { - if (options && options.showConfirmDialog) { - let message = _("uninstall.confirmation.message", extension.name); - if (options.dialogMessage) { - message = `${options.dialogMessage}\n${message}`; - } - let title = _("uninstall.confirmation.title", extension.name); - let buttonFlags = promptService.BUTTON_POS_0 * promptService.BUTTON_TITLE_IS_STRING + - promptService.BUTTON_POS_1 * promptService.BUTTON_TITLE_IS_STRING; - let button0Title = _("uninstall.confirmation.button-0.label"); - let button1Title = _("uninstall.confirmation.button-1.label"); - let response = promptService.confirmEx(null, title, message, buttonFlags, button0Title, button1Title, null, null, {value: 0}); - if (response == 1) { - return reject({message: "User cancelled uninstall of extension"}); - } - } - AddonManager.getAddonByID(extension.id, addon => { - let canUninstall = Boolean(addon.permissions & AddonManager.PERM_CAN_UNINSTALL); - if (!canUninstall) { - return reject({message: "The add-on cannot be uninstalled"}); - } - try { - addon.uninstall(); - } catch (err) { - return reject(err); - } - }); - }); - }, - }, - }; -}); |