canmove, Confirmed users
2,056
edits
m (→Notable Changes: replaced manual links to bugs w/ the 'bug' macro) |
|||
(10 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
== About | == About == | ||
Add-on SDK is a software development kit that provides a set of tools and APIs for building, testing, and packaging Firefox add-ons. | |||
The 1.0b1 release is the first beta release of the SDK. It includes many changes from the previous version of the software, the most notable of which are listed below. Effective this release, the kit has also been renamed from Jetpack SDK to Add-on SDK. | |||
== Installation == | == Installation == | ||
Line 10: | Line 12: | ||
* [https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-1.0b1.zip addon-sdk-1.0b1.zip] | * [https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-1.0b1.zip addon-sdk-1.0b1.zip] | ||
Then unpack the archive, open the <tt>addon-sdk-1.0b1/README.txt</tt> file, and follow its instructions. | |||
== Notable Changes == | == Notable Changes == | ||
=== New Features === | |||
* | * The <code>cfx init</code> command constructs the basic directory structure of an add-on to make it easy to start building one. ({{bug|566814}}) | ||
* It is now possible to use an ID in one of the two [https://developer.mozilla.org/en/install_manifests#id traditional formats used by Mozilla add-ons], which is useful when migrating a traditional XUL add-on to the SDK. ({{bug|604499}}) | |||
* Add-ons created using the SDK can now easily specify an icon to represent them in Firefox's Add-on Manager and other places. Simply drop a PNG file named <code>icon.png</code> into the root of your add-on's package directory. ({{bug|588119}}) | |||
=== Electrolysis === | |||
' | [[Electrolysis]] (E10S) is a project to load and render/execute browser UI, web content, plugins, and add-ons in separate processes. We are in the process of modifying the SDK's add-on loader to load SDK-based add-ons in separate processes. | ||
* | * The Widget API has been redesigned to be E10S-compatible. ({{bug|569479}}) | ||
** Events related to web content, and direct access to Widget content, has been removed from the API. | |||
** Support for interacting with Widget content via [https://jetpack.mozillalabs.com/sdk/latest/docs/#guide/web-content content scripts] has been added to the API. | |||
** The <code>image</code> property of the Widget API has been renamed to <code>contentURL</code> to make its interface consistent with that of other APIs that use content scripts. | |||
* The Tabs module has been redesigned to to be E10S-compatible. ({{bug|593908}}) | |||
* Experimental support for loading add-ons in separate processes has been added to the SDK. An add-on will be executed in a separate process if the <code>--e10s</code> option is passed to the <code>cfx</code> tool. The feature is not yet documented in the SDK documentation, but the documentation for the [http://github.com/toolness/jetpack-e10s/#readme proof-of-concept implementation] remains largely accurate. ({{bug|567703}}) | |||
=== Object Construction and Destruction === | |||
Object construction and destruction has been simplified for a number of APIs that create persistent user interface elements or data structures. It is no longer necessary to both construct an object and add it to a registry of such objects via an <code>add()</code> method call in order for the object to persist. Such objects now persist by default for the life of the browsing session (or until the add-on is disabled/uninstalled), and to destroy them you call their <code>destroy()</code> method instead of removing them from an object registry via a <code>remove()</code> method call. | |||
The new behavior applies to the following objects: | |||
* | * Panel | ||
* | * Page (from the Page Worker API) | ||
* | * Widget | ||
* Menu, MenuItem, MenuSeparator (from the Context Menu API) | |||
* | * PageMod | ||
=== Event Handling === | |||
The way add-on code registers listeners for events generated by API objects has changed. When constructing an object like a Panel, it remains possible to register event listeners by passing the constructor an option (like <code>onShow</code> for Panel objects). After construction, however, and for preexisting objects like the set of tabs exported by the Tabs API, you register a listener by calling the object's <code>on</code> method, passing it the name of the event and the listener function. | |||
The value of the <code>this</code> object in event listeners has been made consistent. It is the object that emitted the event. For example, when a Panel object emits a <code>show</code> event, the value of the <code>this</code> object in its listeners is the Panel object. | |||
=== <code>cfx</code> Tool === | |||
* | * The undocumented <code>xpcom</code> command has been removed, along with its associated options <code>--srcdir</code> and <code>--objdir</code>. ({{bug|614568}}) | ||
* | * The <code>--dep-tests</code> option has been renamed to <code>--dependencies</code>. ({{bug|614129}}) | ||
* | * The shortcuts for some options have been removed or changed. ({{bug|614129}}) | ||
* | ** Shortcuts removed: | ||
* | *** <code>-p</code> for <code>--pkgdir</code> | ||
* | *** <code>-k</code> for <code>--extra-packages</code> | ||
* | *** <code>-t</code> for <code>--templatedir</code> | ||
* | *** <code>-r</code> for <code>--use-server</code> | ||
* | *** <code>-u</code> for <code>--update-url</code> | ||
* | *** <code>-l</code> for <code>--update-link</code> | ||
* | *** <code>-d</code> for <code>--dep-tests</code> | ||
*** <code>-x</code> for <code>--times</code> | |||
** Shortcuts changed: | |||
*** <code>-P</code> to <code>-p</code> for <code>--profiledir</code> | |||
*** <code>-F</code> to <code>-f</code> for <code>--filter</code> | |||
* The <code>sdocs</code>, <code>testcfx</code>, <code>testpkgs</code>, and <code>testex</code> commands and the <code>--logfile</code>, <code>--profile-memory</code>, <code>--e10s</code>, <code>--keydir</code>, <code>--addons</code>, and <code>--test-runner-pkg</code> options have been explicitly identified as ''internal'' (intended for use by developers working on the SDK itself) and might be changed or removed in the future. ({{bug|614128}}, {{bug|614130}}) | |||
* The <code>develop</code> command and <code>--use-server</code> option have been explicitly identified as ''experimental'' and might be changed or removed in the future. ({{bug|614130}}) | |||
=== Miscellaneous API === | |||
* | * The <code>Tab.location</code> property has been renamed to <code>Tab.url</code>, and its data type has changed to <code>string</code>. ({{bug|612678}}) | ||
* | * The data type of the <code>contentURL</code> property of Page, Panel, and Widget objects has changed to <code>string</code>. | ||
* The <code>Tab.thumbnail</code> property has been replaced by a <code>Tab.getThumbnail()</code> method. ({{bug|612681}}) | |||
* | * The <code>contentScriptURL</code> property of several objects has been renamed to <code>contentScriptFile</code>. ({{bug|612716}}) | ||
* | * The Windows API's <code>openWindow()</code> method has been renamed to <code>open()</code>, and its <code>onReady</code> option has been removed. ({{bug|612758}}, {{bug|612685}}) | ||
* | * Boolean properties have been prefixed with "is", including the Private Browsing API's <code>isActive</code>, the Selection API's <code>isContiguous</code>, and <code>Tab.isPinned</code>. ({{bug|612733}}, {{bug|612735}}, {{bug|615164}}) | ||
* Private Browsing activation and deactivation is now exposed via <code>activate()</code> and <code>deactivate()</code> methods. | |||
* Tab pinning and unpinning is now exposed via <code>pin()</code> and <code>unpin()</code> methods. | |||
* The localization (l10n) API has been removed. ({{bug|612770}}) | |||
* | |||
* | |||
=== Miscellaneous === | |||
* | * The <code>jetpack-core</code> package has been renamed to <code>api-utils</code>. ({{bug|613348}}) | ||
* Add-ons created with the SDK are now marked as compatible with Firefox 4.0b7 and the latest Firefox 4.0b8pre nightlies. ({{bug|613341}}) | |||
* | |||
A complete list of changes is available in the [http:// | A complete list of changes is available in the [http://github.com/mozilla/addon-sdk/ source code repository]. | ||
== Known Issues == | == Known Issues == | ||
* A variety of tests are failing intermittently. | * Although the SDK is not compatible with Firefox 3.6, <code>cfx test</code> and <code>cfx run</code> may use Firefox 3.6 by default if you have it installed. To work around the problem, specify the location of the Firefox 4.0 beta binary with the <code>--binary</code> option. | ||
* A variety of tests are failing intermittently. ({{bug|606351}}) | |||
Also see the [https://bugzilla.mozilla.org/buglist.cgi?order=Bug%20Number&bug_status=__open__& | Also see the [https://bugzilla.mozilla.org/buglist.cgi?order=Bug%20Number&bug_status=__open__&product=Add-on%20SDK complete list of known issues and requests for enhancement]. | ||
== Feedback and Bug Reports == | == Feedback and Bug Reports == | ||
We'd love to hear any feedback you have regarding this release! You can post it to the [http://groups.google.com/group/mozilla-labs-jetpack discussion | We'd love to hear any feedback you have regarding this release! You can post it to the [http://groups.google.com/group/mozilla-labs-jetpack discussion group] or [https://bugzilla.mozilla.org/enter_bug.cgi?product=Add-on%20SDK&version=1.0b1 report a bug]. |