Labs/Jetpack/Reboot/JEP/105: Difference between revisions

From MozillaWiki
< Labs‎ | Jetpack‎ | Reboot‎ | JEP
Jump to navigation Jump to search
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.