Firefox 14 has been in beta for a while now, so this blog post is a bit overdue. Here’s an almost comprehensive list of the changes that went into Firefox 14 that can affect add-on compatibility. There is more information available in Firefox 14 for Developers, so you should read that too.
- Implement new identity block design. The identity box had a major overhaul, and theme developers must take note and make the necessary adjustments. A broken identity box is one of the most common causes for theme rejection during review.
- Implement the (new) Downloads Panel – disabled. Another major overhaul is coming; this time it’s the Download Manager. The new code is present in Firefox 14 but it has been hidden behind a preference because it isn’t ready for prime-time. Theme developers and add-on devs who overlay the Download Manager should make note of this and start looking into the upcoming changes. It looks like the new panel won’t make it before Firefox 16. Its status page is the best way to stay up to date with this feature.
- Make toolbar buttons borderless in the default state. Another theme change, this can affect add-on developers with toolbar buttons, on Windows. Make sure you test that your buttons still look good in all states!
- Set the tabsontop attribute on the navigation toolbar and simplify CSS selectors. Another potentially useful one for theme devs.
- Re-implement bookmarks.html parsing using the HTML5 parser. This removes importHTMLFromFile and importHTMLFromURI from nsIPlacesImportExportService. You should use the equivalent functions in the BookmarkHTMLUtils module instead.
- Deprecate and remove old style GUIDs in Places. We have been talking about this for a while, and we notified all affected developers in advance, so hopefully this won’t come as a surprise. If you are just learning about this and you use the Bookmarks and History services, this is for you.
- Ensure we properly handle redirecting and error visits. Another change in Places, this removes error pages from the history, and removes the redirectsMode flag along with them.
- Expose sanitizer flags for sanitized fragment parsing. This adds the parseFragment method to nsIParserUtils, which should be favored over the equivalent in nsIScriptableUnescapeHTML.
- Deprecate MozBlobBuilder. MozBlobBuilder and BlobBuilder are now deprecated. You should use the Blob constructor instead.
- Remove geolocation address. The address attribute in geolocation data has been dropped.
- Merge nsILocalFile and nsIFile interfaces. nsILocalFile is still there! It’s just no longer serving any other purpose than being a compatibility shim. If you are not supporting any Firefox versions older than 14, then you should just use nsIFile instead.
- Get rid of ImportHTMLFromFileToFolder. Removed from nsIPlacesImportExportService.
- Get rid nsIAccessible innerHTML method. This method always returned the element’s own innerHTML value, so it didn’t server any purpose by itself.
- Remove useless queryCommandText/execCommandShowHelp methods. Removed from nsIDOMHTMLDocument.
- getFaviconURLForPage and getFaviconDataForPage should always invoke nsIFaviconDataCallback. The onFaviconDataAvailable function was renamed to onComplete and its behavior changed slightly.
- Implement mutation events replacement. They were initially introduced with a moz prefix, but that was dropped and fixed in time. So now we have a good replacement to mutation events. The replacement is called DOM Mutation Observers, and the documentation is still sparse. It should also be noted that these observers should be used only when strictly necessary, given that they can significantly slow down event processing in a page.
- Make it easier for extensions to overlay the customize toolbar window. This adds some useful ids to the customization panel.
Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 14, I’d like to know.
We will be doing an automatic compatibility validation and upgrading for add-ons on AMO that are compatible with Firefox 13, sometime in the next 2 weeks.