Firefox 9 was recently pushed to the Aurora channel, so it’s time again to round up all bugs that could be breaking add-on compatibility. This time around I found very few bugs that I would consider troubling, but there are plenty of minor ones worth mentioning. As usual, you should also check Firefox 9 for Developers for additional information.
Without further ado, here they are.
Possible Add-on Compatibility Changes
- Semicolon in URI path handled incorrectly. While this removes a fairly obscure feature of URIs, it changes nsIURL and other related components, which many add-ons rely on. nsIURL.param was removed, and one argument was removed from nsIURLParser.parsePath.
- Cleanup/remove geo.wifi.* preferences.
The preferences geo.wifi.uri and geo.wifi.protocol were removed, and the URI is now hardcoded in NetworkGeolocationProvider.js. I asked in the bug what the reason behind this change is, but I haven’t received any replies yet.Update: a comment in the bug has clarified that the preference is still being honored. The change is that this preference won’t have a default value and therefore won’t appear in about:config. It is still possible to set its value using the pref service, or creating a new string preference in about:config with the right name. Add-ons reading this preference still need to update their code if they aren’t expecting any exceptions when reading it without setting it first. - Remove Navigator.taintEnabled(). This method doesn’t do anything useful, but since it is Netscape-specific, it has been used in browser detection scripts, and some of those made their way into add-ons. Calling this method should throw an exception starting with Firefox 9.
- Move nodePrincipal and baseURIObject onto XrayWrapper and remove from nsDOMClassInfo. This one should only affect add-ons that try to access the baseURIObject, nodePrincipal, and documentURIObject properties on a DOM Node from an unprivileged script that has requested XPConnect privileges using enablePrivilege. Since we have been discouraging enablePrivilege usage on AMO for quite a while, I don’t expect any of the add-ons we host to be affected.
- Improve responsiveness of history removals. This removes a couple of deprecated methods from nsIBrowserHistory: registerOpenPage and unregisterOpenPage.
- Nuke nsIGlobalHistory3. Removes nsIGlobalHistory3, which shouldn’t have much use for add-ons anyway.
- Remember spell check setting per site. Removed nsIEditorSpellCheck.saveDefaultDictionary.
The list of compatibility validation bugs is here, if you’re interested. They should be fixed this week and pushed to the site on Thursday. I intend to run the bulk compatibility upgrade on Friday, but it could be delayed until next week if anything else comes up.
Possible Binary Compatibility Changes
These are some changes that I thought were notable and could interest binary XPCOM add-on developers. They are, for the most part, changes to IDL interfaces that won’t break JS callers, like new methods and attributes.
While you will always need to recompile your components, this list might save you some time if you run into compilation issues.
- Implement document.scripts. Adds nsIDOMHTMLDocument.scripts.
- Provide a way to play the “ding” system sound used to indicate typing too many characters in a text field on Windows. Adds nsISound.EVENT_EDITOR_MAX_LEN.
- Add support for fave icons on jump list uri entries. Adds nsIJumpListShortcut.iconImageUri.
Other Notable Changes
- Crash nsTHashtable with HTTPS everywhere extension. There’s a long discussion in this bug that should be interesting to those whose extensions have to filter or redirect web requests in sophisticated ways. You should be aware that URIs are assumed immutable in some parts of the Mozilla code, even though they technically aren’t. Changing URI instances mid-flight is the reason behind this crash. A fix was issued and will also be included in Firefox 8.
- Add contentDisposition{Filename} properties to nsIChannel. This folds some attributes related to content disposition from specialized channels into the more generic nsIChannel. Since other channel classes inherit from nsIChannel, the change should not cause problems with existing code.
- Add-ons are failing to install. If you use the same profile to test Firefox 9 and earlier versions, there’s a chance that add-on installation will fail after testing on 9 and going back to an earlier version. Fixes already exist for Firefox 8 and Firefox 9, and they should become available soon.
mouseenter and mouseleave events are not supported. This implements those 2 events.Update: This is being reverted.- Checkbox inside a prefwindow doesn’t affect the preference when it has a command.
Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 9, I’d like to know.
Remember, the compatibility bump to Firefox 9 will happen later this week. If you want your add-on to qualify for this, it should be compatible with 8.*. We have moved as many add-ons as we could to 8.*, but it is possible that your add-on is compatible and hasn’t been marked as compatible by our tools. If this is your case, you still have a few days to upgrade your compatibility on AMO or upload a new version.
Kohei Yoshino
wrote on
:
Jorge Villalobos
wrote on
:
Kathryn Encinas
wrote on
:
Amy Tsay
wrote on
:
Julien
wrote on
:
Jorge Villalobos
wrote on
:
Julien
wrote on
:
Jorge Villalobos
wrote on
:
Jorge Villalobos
wrote on
:
Charles
wrote on
:
Jorge Villalobos
wrote on
:
Jorge Villalobos
wrote on
:
Dawn R.
wrote on
:
Elmo R.
wrote on
:
Alan T.
wrote on
:
Jorge Villalobos
wrote on
: