Firefox 7 was moved to the Aurora channel a little over a week ago, and we’re preparing to run the automated compatibility upgrade for all add-ons on AMO that are already compatible with Firefox 6. If you want to benefit from these compatibility bumps, your add-on should have a maximum compatibility of 6.* at present. If no compatibility problems are detected, we will automatically increase it to 7.* when the validation is run.
Our analysis of the bug fixes for Firefox 7 has produced the following list of notable changes for add-on developers. They are mostly XPCOM interface removals, some of them currently in use by add-ons listed on AMO. Please have a look and update your add-on code accordingly:
- The encode and decode methods in nsIJSON have been removed. Bug 645922. This fix affects a very large portion of add-ons, so there’s an effort aiming to revert it. Either way, we strongly recommend you to use the global JSON object and the parse and stringify functions instead of the XPCOM component.
- (Updated) The nsINavHistoryObserver and nsINavBoorkmarkObserver interfaces have changed to better accommodate Firefox Sync. Bug 633266. Several of its methods have a new parameter (a GUID). Since add-ons are normally in the observer position, this just means you get more data, so no change is necessary. Binary consumers will need to update the function signatures, though.
- (Updated) A number of methods have been removed from the nsIDOMFile interface, notably getDataAsURL and getAsBinary. Bug 661876. Equivalent functions are available in other objects, like FileReader.
- A few other interfaces were removed: nsIDOM3Node (bug 659053), nsIDOM3TypeInfo (bug 660539), schemaTypeInfo (bug 660539), nsIDOMNSDocument (bug 658906), and nsIDOMDocumentStyle (bug 658904).
More details can be found in Firefox 7 for Developers, as well as some new features that really exciting to have:
- It is now possible to unload JS modules, making them a more viable option for restartless add-ons. Bug 481603.
- Inline preferences. You can now display your preferences panel inside the Add-ons Manager, instead of using a separate window. While there are limitations to what you can do with this, it should work fine for a large subset of add-ons. Plus, it also works for restartless add-ons, which is a big win.
If there are any other compatibility troubles you have run into while testing on Firefox 7 that hasn’t been mentioned here, please leave a comment below.
Firefox 8
It’s still early to worry about Firefox 8, but there are a couple of big changes coming your way that I thought I should mention as soon as possible:
- The nsIDOMWindowInternal interface will be removed. Bug 670235. Judging by the patch, you should be doing QI to nsIDOMWindow instead.
- There is work being done to implement an incremental GC for the JS engine. This could potentially affect add-ons with binary components that use the JSAPI to create a custom JSClass and
objects of that class, and the objects of the custom class have a custom GC trace function. It sounds fairly specific to actually be common, but I just want to throw this out there in case anybody is affected by it. You can contact me if you need more information about this.
Firefox 8 for developers is already available and should be growing in length in the following weeks.
Kyle Huey wrote on
Jorge Villalobos wrote on
Kyle Huey wrote on
Neil Rashbrook wrote on
Jorge Villalobos wrote on
Matthew Tuck wrote on
Jorge Villalobos wrote on
Jeferson H. wrote on
Wladimir Palant wrote on
Kohei Yoshino wrote on
Jorge Villalobos wrote on
Steve Jackson wrote on
Katie Kalata wrote on
Katie Kalata wrote on
Jorge Villalobos wrote on
Anh wrote on
Einard wrote on
Einard wrote on
Jim wrote on
Joe Y. wrote on
Mar wrote on
Paul wrote on
Rick wrote on
phil wrote on
simon wrote on
john b wrote on
Jorge Villalobos wrote on
Jorge Villalobos wrote on
jeff wrote on
Jorge Villalobos wrote on