O Gerenciador de Add-on (Add-on Manager) é responsável por gerenciar todos os add-ons instalados no aplicativo. Através de suas APIs, informação sobre todos os add-ons instalados pode ser recuperada e novos add-ons podem ser instalados. As APIs foram projetadas para serem genéricas e suportar muitos tipos diferentes de add-ons.
Muitas funções na interface do Gerenciador de Add-on operam de modo assíncrono, retornando os resultados através de callbacks (funções de retrochamadas) passadas para as funções. As callbacks podem ser chamadas imediatamente enquanto as funções iniciais ainda estão em execução ou pouco tempo após, dependendo de quando os dados da requisição se tornem disponíveis.
Acessando os add-ons instalados
Informação sobre os add-ons instalados podem ser recuperadas através da API principal AddonManager
. Todas as suas funções são assíncronas, isso significa que uma função de callback deve ser passada para receber as instâncias de Addon
. A função de callback pode muito bem ser chamada somente após a função da API retornar. Por exemplo:
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAllAddons(function(aAddons) {
// Aqui aAddons é um array de objetos Addon
});
// Esse código será executado antes do código dentro da callback
Notificações sobre mudanças nos add-ons instalados são dispachadas para quaisquer AddonListener
s. registrado Eles devem ser registrados através do método AddonManager.addAddonListener()
.
Instalando novos add-ons
Novos add-ons podem ser instalados usando os métodos AddonManager.getInstallForFile()
ou AddonManager.getInstallForURL()
do objeto AddonManager
. Essas passsarão uma instância de AddonInstall
para a função de callback, que pode, então, ser usada para instalar o add-on:
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getInstallForURL("https://www.foo.com/test.xpi", function(aInstall) {
// aInstall é uma instância de AddonInstall
aInstall.install();
}, "application/x-xpinstall");
O progresso de AddonInstall
pode ser monitorado usando um InstallListener
. Um listener pode ser registgrado quer para uma instalação em particular usando o método AddonInstall.addListener()
ou para todas as instalações usando o método AddonManager.addInstallListener()
.
Encontrando atualizações
Pode-se verificar a existência de atualizações para Add-ons usando o método Addon.findUpdates()
. Deve-se lhe passar um UpdateListener
para receber informações sobre compatibilidade e informação de nova atualização. Qualquer atualização disponível é retornada como um AddonInstall
, pronto para ser baixado e instalado.
Detectando mudanças nos add-ons
(Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4)Você também pode conseguir listas de add-ons que, na inicialização, foram modificados de diversos modos. O método AddonManager.getStartupChanges()
lhe permite descobir quais add-ons foram instalados, removidos, atualizados, habilitados ou desabilitados durante a inicialização do aplicativo.
Por exemplo, para dar uma olhada nos add-ons que foram desabilitados durante a inicialização:
Components.utils.import("resource://gre/modules/AddonManager.jsm"); let addonIDs = AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_DISABLED); if (addonIDs.length > 0) { // addonIDs agora é um array das IDs dos add-on que foram desabilitados alert("Nota: " + addonIDs.length + " add-ons foram desabilitados."); }