The 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.5 release features initial support for localization and mobile support, and upgrades the codebase to use the Mozilla Public License 2.0.
Obtain the SDK in your favorite compression format:
Then unpack the archive, open the addon-sdk-1.5/README.txt file, and follow its instructions.
In Firefox 11 (currently the Firefox Beta release) we removed the nsIDOMNSElement, which is heavily used in the SDK. We've updated the SDK to handle this change, but this means that add-ons built with earlier versions of the SDK will not work with Firefox 11.
So if you have add-ons built with earlier versions of the SDK, you'll need to repack them using this version of the SDK.
To repack using the SDK:
- download, install, and activate this version of the SDK (1.5)
- rebuild your add-on using
- publish the new XPI to https://addons.mozilla.org/firefox/
To repack using the Builder:
- go to your add-on
- under "Libraries", choose version 1.5 of "Addon Kit"
- save the add-on
- upload it to AMO
Major Changes Since 1.4
We've landed the first stage of support for the new native version of Firefox Mobile.
It's still experimental, and not all APIs are supported yet, but we're working on adding them in future releases.
We've landed the first stage of localization support.
At the moment it's only possible to localize strings in your main add-on code: you can't localize strings which appear in content scripts or HTML. But we're working on adding support for this.
We've updated the codebase to use the new version of the Mozilla Public License.
Major Bug Fixes
We've fixed some memory leaks:
Cannot scroll panel on OS X. This is a platform bug: it is fixed in Firefox 11 but still exists in Firefox 10.
If your add-on has a long name, and the path to your Firefox profile is long enough, then the XPI installation process would try to create an intermediate file with a name longer than the maximum supported length on some Windows systems. If that happens you may get an error like:
"<your add-on> could not be installed because Firefox cannot modify the needed file"
This is now fixed, because we no longer unpack the XPI completely. See bug 638742 for details.
See the complete list of known issues and requests for enhancement. We've listed some of the issues you're most likely to encounter separately below.
Some keyboard events are fired twice on some elements inside a panel.
Panel created with Jetpack "panel" API won't close on loss of focus if drop-down menu has focus.
Selection Context Menu Item throws error on right-click of form button.
Specified panel width ignored when Firefox is maximized.
Permission denied to access property '__isXrayWrapperProxy' is sometimes thrown in content scripts.
Items of context-menu module appear only after successful page load. While the page is still loading they don't appear.
This behavior is by design because the worker for an item-window pair is created when the window finishes loading. Until a worker is created, context-menu can't tell whether the item should be shown or not, so the item isn't shown until the worker is created.
If context-menu supported contentScriptWhen like page-mod does, this could probably be done by setting it to "start". Right now consumers are effectively locked in to "ready".
Access to Full Screen API blocked from context-menu API.
passwords.search() function "crashes" with some profiles.
If you change location in a content script using:
Nothing happens, instead, `location` attribute is just replaced by a string.
If a page-mod matches a page, its content scripts get attached to every iframe in the page, and this can have a bad effect on performance if the script is large and the page contains many iframes.
Although this behaviour is intentional, there should be an option to make content scripts only run on the topmost frame of a page.
When an html select element (e.g. a drop-down menu) in web content inside a panel has focus, clicking *outside* the panel does not close the panel.
If you create a context menu item for the selection type, and right-click a form button, the context menu does not appear and an error is logged. It's not yet clear whether this is specific to form buttons or not.
The tab array is not reordered to match the on-screen order of the tabs after a tab move event takes place.
The SDK automatically includes a dependency on the packages supplied with the SDK such as
api-utils. This means that you can
require() modules in the SDK such as
widget without having to specify
addon-kit as a dependency.
However, if you do add any dependencies to
package.json, then the SDK will no longer add
api-utils automatically, and you must add them manually if you want to include their modules.
The SDK will give an error if your package name contains spaces or Unicode characters.
If your add-on stores data using the simple-storage API, the data is not cleaned up when your add-on is uninstalled.
If an add-on is uninstalled while it's disabled, it's not notified of uninstall. If the add-on needs to do some special cleanup on uninstall, like removing persistent storage such as a file, this won't be possible if it has been disabled.
By default, widgets are placed on the add-on bar, and given a height to match the height of that bar. If the user moves the widget to a different toolbar, and that toolbar has a different height, the widget's height is not updated accordingly.
A widget containing HTML content gets no icon in the Customize Toolbar Window.
When a user removes a widget from the toolbar its
detach event does not get sent.
Selection events for a page are not sent if the page did not fully load (for example, because the user stopped the page loading).
If you have copy of mozrunner installed on your system, the
cfx test command may not work correctly.
There is a workaround for this.