Labs/Jetpack/Reboot/JEP/105: Difference between revisions
Line 36: | Line 36: | ||
==== Declarative ==== | ==== Declarative ==== | ||
The first-run experience is coded inside of <code>manifest</code>, the feature's manifest, which is (not un-coincidentally) where the settings are placed. | The first-run experience is coded inside of <code>manifest.json</code>, the feature's manifest, which is (not un-coincidentally) where the settings are placed. | ||
<pre class="brush:js;"> | <pre class="brush:js;"> |
Revision as of 23:54, 5 February 2010
JEP 105 - Life-cycle
- Champion: Aza Raskin - aza@mozilla.com
- Status: Accepted/In-Queue
- Bug Ticket:
- Type: API
- Difficulty: 4
Proposal
This JEP describes an API for handling the life-cycle of Jetpacks. In particular, it gives a Jetpack methods for registering event handlers for various install and uninstall states.
In addition to the event handlers, it provides a more declarative format.
Events
All methods of an add-on introspecting and interacting with its environmental metas using the Jetpack API live in the "me" module.
The event handlers can be used as follows:
me = require("me"); me.onFirstRun( function ) me.onInstall( function ) me.onUninstall( function )
The me.onFirstRun
gets called on the first run of an extension. If an extension is uninstalled and reinstalled (and the original data wasn't removed via a purge event) then the callback(s) passed to onFirstRun
aren't called.
The rest of the event handlers should be self-explanatory.
Because Jetpacks are easily installed and uninstalled, the concepts of disabling/enabling an extension have been removed.
Declarative
The first-run experience is coded inside of manifest.json
, the feature's manifest, which is (not un-coincidentally) where the settings are placed.
manifest = { firstRunPage: stringOrXml, uninstallPage: stringOrXml }
Difficulty
Rating: Easy
Key Issues
- enable/disable?
Dependencies & Requirements
- Dependent on JEP 106
Internal Methods
- What methods, mechanisms, or resources does this provide internally within the Jetpack platform code.
Minimum Base API Methods
me = require("me"); me.onInstall(function); me.onUninstall(function);
Everything else is sugar.