Firefox 22 will be released on June 25th. Here’s the list of changes that went into this version that can affect add-on compatibility. There is more information available in Firefox 22 for Developers, so you should read that too.
Update: please read this update for one more compatibility issue that was just discovered.
- Add-ons that set default zoom level will give unexpected results when Firefox becomes hidpi-aware on Windows. Add-ons that use nsIMarkupDocumentViewer.fullZoom will most likely see unexpected results under certain circumstances.
- Make getUserData and setUserData ChromeOnly. Those functions will no longer be available for content, only from privileged code.
- FillInHTMLTooltip should move into XBL binding. This is no longer a global function in browser.js.
There is much more Places code cleanup happening in 22, so that file system access happens asynchronously. Read the documentation of Places utilities for alternatives of these functions and objects.
- Remove deprecated synchronous favicons APIs. From nsIFaviconService, the following methods were removed: setFaviconUrlForPage, setAndLoadFaviconForPage, setFaviconData, setFaviconDataFromDataURL, getFaviconData, getFaviconDataAsDataURL, getFaviconForPage, and getFaviconImageForPage.
- Stop implementing nsIGlobalHistory2. nsIBrowserHistory no longer extends nsIGlobalHistory2, so it doesn’t implement addURI, isVisited or setPageTitle anymore.
- Move markPageAsXXX methods to nsINavHistoryService. They were moved from nsIBrowserHistory to nsINavHistoryService.
- Remove nsINavHistoryService::AddVisit.
- Remove deprecated nsILivemarkService interface.
- Stop defining |Components| object in content scopes. The Components object will no longer be available from content, with a few exceptions (DOM interface constants), which are mentioned in bug 429070.
- Remove nsISupportsArray usage from nsITreeView. This changes the signatures and return types for the following functions: getRowProperties, getCellProperties, getColumnProperties. These functions now return a whitespace delimited list.
- Remove the dummy PrivateBrowsing service. Removes nsIPrivateBrowsingService entirely, which was just left as a temporary compatibility shim.
- attributes should be defined on Element and not Node. attributes
and hasAttributes(see comments below) are now members of Element, instead of Node.
- Fold NSPR and NSS into mozjs (for Windows) or libxul (for other platforms). If your add-on has binary components or you build against Mozilla code for other reasons, this is possibly important. I’ve already been contacted a couple of times about failed builds because of this.
- Give both version numbers to bootstrap methods when an addon is down/upgraded. If your add-ons is bootstrapped, this gives you better information when performing an add-on upgrade.
Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 22, I’d like to know.
The automatic compatibility validation and upgrade for add-ons on AMO will happen soon, so check your email if you have an add-on listed on our site.