Firefox 29 will be released on April 29th. Here’s the list of changes that went into this version that can affect add-on compatibility. There is more information available in Firefox 29 for Developers, so you should read that too.
This is a big one. The Australis theme introduces major changes that all add-on developers should be aware of, but it’s nowhere nearly as dramatic as initially thought. We’ve already been blogging about it extensively, so please give these articles a read if you haven’t already:
- Australis for Add-on Developers – Part 1: Toolbars
- Australis for Add-on Developers – Part 2: CustomizableUI
- New Add-on SDK Australis UI features in Firefox 29
Notable changes include the removal of the add-on bar and the Firefox button on Windows, the introduction of the menu panel, and an overhaul in the toolbar customization system. Toolbars are no longer hidden for about: pages, there’s no small/large button setting anymore, and tabs are always on top.
Make sure you test your add-on extensively, paying special attention to button customization.
If you notice any problems in your add-ons related to Australis, please file a bug and add it as a dependency to one of these bugs:
- Add-on issues. This is for add-ons that haven’t been updated yet and are visually broken in Firefox 29 and above.
- Australis add-on bugs. Use this one if something is broken in your add-on and you believe it’s a bug in the new code.
- Make window._content chromeonly. This means _content is now only accessible from privileged scripts.
- Adopt Promises in mozIAsyncLivemarks. This applies to these functions: addLivemark, removeLivemark, getLivemark. While they still work as before, the callbacks will be eventually removed, so you should move to using the Promise now returned by the functions.
- Make cloneNode/importNode with the “deep” arg not passed default to shallow cloning.
- Support session restore with multiple processes. Some refactoring the session restore code, notably separating the content bits into another module.
Disallow enumeration of navigator.plugins. This has been pushed back a few versions.
- Fix the type of HTMLIFrameElement.sandbox. It’s no longer a string, but a list of strings.
- Remove bidi attributes in nsIMarkupDocumentViewer.
- Make nsIXPConnect noscript.
- Remove nsISecurityCheckedComponent.
- Provide a way to convert from a file path to a file:// URI (and vice-versa). Finally, shortcuts for this! They’re available as OS.Path.toFileURI, and OS.Path.fromFileURI.
- Bindings for lz4 (zlib).
Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 29, I’d like to know.
The automatic compatibility validation and upgrade for add-ons on AMO will happen soon, so keep an eye on your email if you have an add-on listed on our site with its compatibility set to Firefox 28.