Firefox 20 will be released on April 2nd. Here’s the list of changes that went into this version that can affect add-on compatibility. There is more information available in Firefox 20 for Developers, so you should read that too.
General
- When doing lazy tab restoration, set the <browser>s in question to display:none. This helps reduce memory consumption by loading as little as possible for tabs that were session-restored but haven’t been selected by the user yet. However, this also means that the content of those tabs will be inaccessible to add-ons. You can check for unloaded tabs using tab.getAttribute(“pending”) or tab.linkedBrowser.getAttribute(“pending”).
- Port the bookmarks export service to JavaScript. Eliminates nsIPlacesImportExportService and moves the migration function to BookmarkHTMLUtils.jsm.
- Implement the Downloads Panel. While the Download Manager still exists, this new UI significantly changes the way downloads appear initially.
- Turn javascript.options.xml.chrome off by default. This is the next step in completely removing E4X support in Firefox.
- Redirects visits are not notified anymore through history observers. This means history observers will get some new unexpected notifications.
Private Browsing
Private Browsing Mode is changing to support private and non-private windows opened at the same time. This means that many XPCOM interfaces and other functions are changing to support it.
- Remove the global private browsing service. This removes nsIPrivateBrowsingService for all practical services. The interface is still there for backward compatibility purposes, but it’s completely empty, along with its observer notifications: private-browsing, private-browsing-transition-complete, private-browsing-cancel-vote, private-browsing-change-granted.
There’s more information about the new private browsing in these docs: Supporting PBM, and Updating add-ons broken by PB changes.
XPCOM
- |non editable element|.QueryInterface(Components.interfaces.nsIDOMNSEditableElement) does not throw anymore. If you were using QueryInterface to check for editable elements, this won’t work in 20. While this was fixed in 21 and above, it’s recommended that you use instanceof instead.
- Refactor imgTools::DecodeImageData. This deprecates the decodeImageData function in favor of the new decodeImage function in the same interface.
- Convert XMLSerializer and DOMParser to WebIDL bindings. Removes nsIDOMParserJS. See nsIDOMParser for alternatives.
- Remove support for image-sniffing-services. This removes the image-sniffing-services XPCOM category.
- Move EventSource to Paris bindings. Removes nsIEventSource.
New!
- Context menu is not shown for form buttons and select elements.
- Add a RemoveAllDownloads API to nsIDownloadHistory.
Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 20, I’d like to know.
The automatic compatibility validation and upgrade for add-ons on AMO will happen very soon, so check your email if you have an add-on listed on AMO.
John Nagle wrote on
Jorge Villalobos wrote on
John Nagle wrote on
Jorge Villalobos wrote on
Duncan Macdonald wrote on
Tony wrote on
provazek wrote on
Ivan Kashtanov wrote on
Drew Stoddard wrote on
Jorge Villalobos wrote on
Drew Stoddard wrote on
Joachim wrote on
Jorge Villalobos wrote on
Jessica wrote on
Jorge Villalobos wrote on