Labs/Jetpack/Reboot/JEP/105
JEP 105 - Life-cycle
- Champion: Aza Raskin - aza@mozilla.com
- Peeps: Dietrich Ayala, Myk Melez
- Status: Implementation in Progress
- Bug Ticket: bug 549324
- Type: API
Proposal
This JEP describes an API for handling the life-cycle of add-ons. In particular, it provides callback APIs for responding to various install and uninstall events.
API
All methods involving introspection and interaction with an add-on's environment live in the "self" module.
let self = require("self"); self.onInstall( function ) self.onUpgrade( function ) self.onEnable( function ) self.onDisable( function ) self.onUninstall( function )
The onInstall
gets called on the first run of an extension. If an extension is uninstalled and reinstalled it gets called again (as the act of uninstalling removes all data associated with the add-on). onUpgrade
get's called when an extension is upgraded.
Nothing is passed to the onInstall
handler. An object which contains version info for the add-on prior to being updated gets passed to onUpgrade
.
The onUninstall
handler is called when the add-on is uninstalled, giving add-ons the opportunity to clean up files, preferences, annotations or to flip the bird at the user on the way out.
Now that an add-on can be enabled and disabled without an application restart, add-ons should cleanly stop work (shut down page-workers, kill timers,
close streams) when they're disabled. They can do this via the onDisable
handler. Conversely an add-on can kick it's services back into gear when it's enabled with the onEnable
handler.
Use Cases
- Show a welcome page/tutorial when you install an add-on.
- Show a set of tooltips for the UI that an extension has added, in vivo to the interface.
- Give a survey when you uninstall an add-on.
- Clean up preferences, files, annotations, when you uninstall an add-on.