Updating add-ons for Firefox 8
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.
Do you need to do anything at all?
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.
Development process note
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.
Interfaces have been merged
As part of our ongoing effort to streamline Gecko's internals, a few interfaces have been merged together:
nsIDOMWindowInternal
has been merged intonsIDOMWindow
. ThensIDOMWindowInternal
interface still exists, but is empty, and will be removed entirely in Firefox 9. You should update any code that relies on the existence ofnsIDOMWindowInternal
to look fornsIDOMWindow
instead.- All of the sub-interfaces of
nsISelection
have been merged into the basensISelection
interface. If by some chance you were previously looking fornsISelection2
ornsISelection3
, you should update your code.
Date handling improved
Now that the JavaScript Date
object can parse ISO 8601 dates, the ISO8601DateUtils.jsm
code module has been removed. If you were using this code module, you should update your code to use the methods on Date
instead.
DOM changes
There have been a couple of changes in the DOM that impact add-ons:
Selection changes
In the past, Document.getSelection()
was returning a stringified version of the selection instead of the Selection
object itself. This was non-standard behavior, and has been corrected.
Potential name conflicts
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.
Security changes
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 "security.ssl2.
"