This article provides information on steps you need to take in order to update your existing add-on for compatibility with Firefox 8. See Firefox 8 for developers for a complete list of everything that changed in Firefox 8.
If your add-on is distributed on addons.mozilla.org (AMO), it's been checked by an automated compatibility verification tool. Add-ons that don't use APIs that changed in Firefox 8, and have no binary components (which need to be recompiled for every major Firefox release), have automatically been updated on AMO to indicate that they work in Firefox 8.
So you should start by visiting AMO and looking to see if your add-on needs any work done at all.
Note: You should still test your add-on on Firefox 8, even if it's been automatically upgraded. There are edge cases that may not be automatically detected.
Once you've confirmed that you need to make changes, come on back to this page and read on.
It's worth noting that during startup, Firefox 8 now checks for third-party add-ons on its first startup, and presents a user interface letting users decide whether or not to enable them. If you drop your add-on into the profile directory in order to test it, Firefox won't enable it automatically on the first startup, but will show this interface instead.
You can avoid this by setting the preference
extensions.autoDisableScopes to 14. This should only be done for development and testing purposes.
As part of our ongoing effort to streamline Gecko's internals, a few interfaces have been merged together:
nsIDOMWindowInternalhas been merged into
nsIDOMWindowInternalinterface still exists, but is empty, and will be removed entirely in Firefox 9. You should update any code that relies on the existence of
nsIDOMWindowInternalto look for
- All of the sub-interfaces of
nsISelectionhave been merged into the base
nsISelectioninterface. If by some chance you were previously looking for
nsISelection3, you should update your code.
There have been a couple of changes in the DOM that impact add-ons:
When the DOM File API was added, a new global called
File was added; this can conflict with objects in your scripts. If you have any globals called
File, you should rename them.
Similarly, a new global,
ChromeWorker, was introduced to support allowing Workers to be used from chrome code. If by some chance you have any globals with this name, you should rename them.
Support for SSL 2.0 has been removed. This shouldn't affect any current add-ons. However, for reference, some very old code was removed, as well as support for the preferences
security.enable_ssl2 (which is false by default), and all preferences starting with "