Firefox 23 will be released on August 6th. Here’s the list of changes that went into this version that can affect add-on compatibility. There is more information available in Firefox 23 for Developers, so you should read that too.
- [Update] Preferences are now limited to 1Mb in size. This limit might be further reduced in the future, since the preferences system isn’t mean for general storage, but only configuration.
- Consolidate Firefox search preferences. keyword.URL has been the bane of our support team since pretty much ever. It is changed by most unwanted add-ons, pointing to unwanted search engines, with highly unwanted results. With this bug fixed, the URL bar now uses the selected search engine from the search box as the keyword search. While this will be an annoyance to power users in the short term, it should be easy to override with an add-on.
- Turn on pref to block mixed active content. On AMO we have always forbidden extensions from injecting unsafe content when accessing safe domains. This change prevents add-ons from doing it at all. More info here.
- Remove StartDocumentLoad, EndDocumentLoad, FailDocumentLoad notifications. These are observer notifications that can be easily replaced by other more standard load events.
- Move services’ preferences.js into Toolkit as Preferences.jsm. If your add-on uses resource://services-common/preferences.js, you just need to switch to resource://gre/modules/Preferences.jsm.
- Use either content/devtools/* or content/browser/devtools/* for aliases. Some files were moved around. Of particular note, the debugger window is now at chrome://browser/content/devtools/debugger.xul.
- Remove support for createEvent(“AnimationEvent”), createEvent(“TransitionEvent”), initAnimationEvent, and initTransitionEvent.
- URI_SAFE_FOR_UNTRUSTED_CONTENT can’t be used in privileged about: pages. If your add-on includes a custom about: page, you can’t use this flag anymore if you also want to use XUL or access privileged code from it.
- Form history should use asynchronous storage API. The sanitize function in the Sanitizer object now returns a promise instead. Also, using autoCompleteSearch should be replaced by autoCompleteSearchAsync, which can be found in resource://gre/modules/FormHistory.jsm.
- Can’t un-set the clicktoplay flag on an nsIPluginTag. This makes nsIPluginTag.disabled and nsIPluginTag.clicktoplay readonly now.
- Clean up nsISidebar. This changes most of the nsISidebar and nsISidebarExternal interfaces. You can see the diff here.
- XPCNativeWrapper.unwrap should work for arbitrary inputs. Comment #16 sums it up very well. There’s a cleaner API in Components.utils that allow you to manipulate Xray wrappers.
Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 23, I’d like to know.
The automatic compatibility validation and upgrade for add-ons on AMO will happen in the coming week or so, so check your email if you have an add-on listed on our site with Firefox 22 compatibility.