mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 12:51:09 +02:00
62 lines
2 KiB
JavaScript
62 lines
2 KiB
JavaScript
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
|
/* vim: set sts=2 sw=2 et tw=80: */
|
|
"use strict";
|
|
|
|
XPCOMUtils.defineLazyModuleGetter(this, "AddonManager",
|
|
"resource://gre/modules/AddonManager.jsm");
|
|
|
|
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 (e) {
|
|
reject(e);
|
|
}
|
|
}));
|
|
},
|
|
},
|
|
};
|
|
});
|