el Add-on Manager es responsable de manejar todos los add-ons instalados en la aplicación. A traves de la informacion de la APIs acerca de todos los add-ons instalados puede ser recuperado y nuevos add-ons pueden ser instalados. Las APIs son diseñadas para ser genericas y soportar diferentes tipos de add-ons.
Muchas funciones en la interfaz de Add-on Manager operan de manera asincrona retornando resultados a traves de devoluciones de llamadas que se pasan a las funciones . Estas devoluciones pueden ser llamadas inmediatamente, mientras la funcion inicial se esta ejecutando o apenas despues de su ejecución dependiendo de cuando la informacion requerida este disponible.
Accediendo add-ons Instalados
la informacion acerca de add-ons instalados puede ser recuperada a traves de main AddonManager
API. Todas sus funciones son asincronas, significando que una funcion de devolucion de llamada debe ser pasada para recibir las instancias de Addon
. La devolucion de llamada puede solamente ser llamada despues de la funcion de retorno de la API . Por ejemplo:
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAllAddons(function(aAddons) {
// Here aAddons is an array of Addon
objects
});
// This code will execute before the code inside the callback
Notificaciones acerca de cambios de add-ons instalados se envian a cualquier AddonListener
registrado. Deben ser registrados a traves del metodo AddonManager.addAddonListener()
.
Instalando Nuevos add-ons
Nuevos add-ons pueden ser instalados usando los metodos AddonManager.getInstallForFile()
o AddonManager.getInstallForURL()
del objeto AddonManager
. Estos pasaran una instancia de AddonInstall
al invocador, el cual puede ser usado para instaladar add-ons:
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getInstallForURL("https://www.foo.com/test.xpi", function(aInstall) {
// aInstall is an instance of AddonInstall
aInstall.install();
}, "application/x-xpinstall");
El progreso de AddonInstall
puede ser monitoreado usando InstallListener
. Un escucha puede ser registrado por el uso especifico de un metodo AddonInstall.addListener()
o por todas las instalaciones usando el metodo AddonManager.addInstallListener()
.
Encontrando updates
Add-ons pueden ser chekeados por updates usando el metodo Addon.findUpdates()
. Debe pasarse como parametro un UpdateListener
para recibir informacion acerca de la compatibilidad asi como tambien la informacion acerca la nueva actualizacion. Cualquier nueva actualizacion es retornada como un AddonInstall
el cual esta listo para ser descargado e instalado.
Detectando cambios en los add-ons
Tambien puedes conseguir una lista de add-ons que al iniciar fueron modificados de varias maneras. El metodo AddonManager.getStartupChanges()
permite encontrar que add-ons fueron instalados, eliminados, modificados, habilitados o deshabilitados al iniciar la aplicacion.
Por ejemplo, para saber los add-ons que fueron deshabilitados al iniciar la aplicacion se utilizaria:
Components.utils.import("resource://gre/modules/AddonManager.jsm"); let addonIDs = AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_DISABLED); if (addonIDs.length > 0) { // addonIDs is now an array of the add-on IDs that have been disabled alert("Note: " + addonIDs.length + " add-ons have been disabled."); }