Firefox 38 will be released on May 12th. Here’s the list of changes that went into this version that can affect add-on compatibility. There is more information available in Firefox 38 for Developers, so you should also give it a look.
Update: also, make sure you check out this followup on 38 and 38.0.5.
- Revise NetUtil.jsm API.
asyncFetch2are now deprecated.
asyncFetchnow take an options object which should make it easier to exclude unneeded arguments. The updated documentation for
newChannelexplains in more detail.
promptForSaveToFilein favor of
nsIProtocolProxyFilter.applyFilter()should be handed channel or request instead of URI. This changes various interfaces related to network proxies.
asyncResolve2to allow both passing a channel and passing a URI. This followup change was introduced to soften the blow and unbreak some add-ons.
DispatchEvent()should be able to dispatch events without setting
mIsSynthesizedForTests. This removes
nsICompositionStringSynthesizer, and the methods
nsIDOMWindowUtils. It also introduces
nsIHttpActivityObservernot working well for monitoring HTTP activity. Certain low-level HTTP events weren’t being fired under some circumstances, which should be fixed now.
- Make a version of
nsIContentPolicythat doesn’t pass the node as a parameter. This introduces an e10s-safe version of
nsISimpleContentPolicy, which passes a browser element instead of a content node. For now the best documentation can be found in the new interface file.
- Allow resource protocol mappings in chrome.manifest files loaded dynamically. resource: URLs can now be declared through chrome.manifest in bootstrapped extensions.
Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 38, I’d like to know.
The automatic compatibility validation and upgrade for add-ons on AMO will probably happen early next month, so keep an eye on your email if you have an add-on listed on our site with its compatibility set to Firefox 37.