Add-on Compatibility for Firefox 9

Firefox 9 was recently pushed to the Aurora channel, so it’s time again to round up all bugs that could be breaking add-on compatibility. This time around I found very few bugs that I would consider troubling, but there are plenty of minor ones worth mentioning. As usual, you should also check Firefox 9 for Developers for additional information.

Without further ado, here they are.

Possible Add-on Compatibility Changes

  • Semicolon in URI path handled incorrectly. While this removes a fairly obscure feature of URIs, it changes nsIURL and other related components, which many add-ons rely on. nsIURL.param was removed, and one argument was removed from nsIURLParser.parsePath.
  • Cleanup/remove geo.wifi.* preferences. The preferences geo.wifi.uri and geo.wifi.protocol were removed, and the URI is now hardcoded in NetworkGeolocationProvider.js. I asked in the bug what the reason behind this change is, but I haven’t received any replies yet. Update: a comment in the bug has clarified that the preference is still being honored. The change is that this preference won’t have a default value and therefore won’t appear in about:config. It is still possible to set its value using the pref service, or creating a new string preference in about:config with the right name. Add-ons reading this preference still need to update their code if they aren’t expecting any exceptions when reading it without setting it first.
  • Remove Navigator.taintEnabled(). This method doesn’t do anything useful, but since it is Netscape-specific, it has been used in browser detection scripts, and some of those made their way into add-ons. Calling this method should throw an exception starting with Firefox 9.
  • Move nodePrincipal and baseURIObject onto XrayWrapper and remove from nsDOMClassInfo. This one should only affect add-ons that try to access the baseURIObject, nodePrincipal, and documentURIObject properties on a DOM Node from an unprivileged script that has requested XPConnect privileges using enablePrivilege. Since we have been discouraging enablePrivilege usage on AMO for quite a while, I don’t expect any of the add-ons we host to be affected.
  • Improve responsiveness of history removals. This removes a couple of deprecated methods from nsIBrowserHistory: registerOpenPage and unregisterOpenPage.
  • Nuke nsIGlobalHistory3. Removes nsIGlobalHistory3, which shouldn’t have much use for add-ons anyway.
  • Remember spell check setting per site. Removed nsIEditorSpellCheck.saveDefaultDictionary.

The list of compatibility validation bugs is here, if you’re interested. They should be fixed this week and pushed to the site on Thursday. I intend to run the bulk compatibility upgrade on Friday, but it could be delayed until next week if anything else comes up.

Possible Binary Compatibility Changes

These are some changes that I thought were notable and could interest binary XPCOM add-on developers. They are, for the most part, changes to IDL interfaces that won’t break JS callers, like new methods and attributes.

While you will always need to recompile your components, this list might save you some time if you run into compilation issues.

Other Notable Changes

Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 9, I’d like to know.

Remember, the compatibility bump to Firefox 9 will happen later this week. If you want your add-on to qualify for this, it should be compatible with 8.*. We have moved as many add-ons as we could to 8.*, but it is possible that your add-on is compatible and hasn’t been marked as compatible by our tools. If this is your case, you still have a few days to upgrade your compatibility on AMO or upload a new version.

16 comments on “Add-on Compatibility for Firefox 9”

  1. Kohei Yoshino wrote on

    Japanese translation: https://dev.mozilla.jp/2011/10/compatibility-for-firefox-9/

    1. Jorge Villalobos wrote on

      Thanks!

      1. Kathryn Encinas wrote on

        My Firefox window no longer has the little orange FIREFOX button in the upper left corner of the browser. Why? Where did it go? Now I can’t change the theme from the Halloween haunted houses to something else. That stinks! I don’t want black & orange HAUNTED HOUSES all year long! Please let me know how to change the situation. Thanks, Kathy

        1. Amy Tsay wrote on

          Hi Kathryn, this might help you: http://support.mozilla.com/en-US/kb/how-do-i-get-firefox-button?s=orange+button&r=0&as=s#os=win&browser=fx9

  2. Julien wrote on

    Hi,

    my addon breaks on Firefox 9.

    You cannot scroll with scroll mouse button, only with scroll bar.

    My addon page:
    https://addons.mozilla.org/en-US/firefox/addon/bamboo-feed-reader/

    (try to scroll on the feed item list)

    1. Jorge Villalobos wrote on

      Yes, I just confirmed this problem on Mac OS X, using the trackpad. I haven’t looked into your code, but I would bet the problem has to do with focus, since the arrow buttons don’t work either. If you could produce a minimal testcase that produces this error, we can look into what changed and see if it’s a Firefox bug or a bug in your add-on.

      1. Julien wrote on

        I done a simplified test case:
        http://fray.developpez.com/testcase.xpi

        just add the button to the toolbar to test it.

        1. Jorge Villalobos wrote on

          I filed this bug with your testcase. Thanks!

          1. Jorge Villalobos wrote on

            It looks like the solution in your case is to use a panel instead of a menupopup. Since the menupopup element has its own scrollable area, it conflicts with the scrollable container, causing the problem you’re experiencing. As explained in the bug, you’re misusing menupopup, and this was exposed after a bug fix in Firefox 9.

  3. Charles wrote on

    Hi,
    the stable version (1.5.4) of the rss reader Brief
    https://addons.mozilla.org/firefox/addon/brief/

    was broken for many users with the update to Fx 9.0.1 because, it seems,
    (http://brief.mozdev.org/drupal/node/1169#comment-5700)

    to the removal(?) of nsIDOMNSUIEvent. I don’t sure if something related to this is mentioned in the list above. Is it? With the developer actually missing in action (busy) , the only option is to update to a beta of a mayor new version (1.6), that is not to everyone’s taste. In the previous link is mentioned a possible one-line code-fix for the stable version. You can, Jorge, or somebody else can at least to see it and confirm it?

    1. Jorge Villalobos wrote on

      I’m looking into it, thanks for the notice.

    2. Jorge Villalobos wrote on

      You were correct, Charles. As said in this bug, there was a big cleanup task that wasn’t properly broken down and some parts made it in 9 without me noticing them. nsIDOMNSUIEvent and nsIDOMNSMouseEvent were both removed in 9.

  4. Dawn R. wrote on

    Hello. My client wants a add-on, AVG LinkScanner, removed, not just disabled. I have re-started Firefox in Safe Mode trying to do it, but couldn’t see a way to do this. Yes, I have told them it is disabled, but they don’t care, they want it removed. Any way I can do this? Thanks.

  5. Elmo R. wrote on

    I just installed Firefox 9.0.1 on Windows 7. I noticed that the scroll wheel on the mouse doesn’t work on any page. The arrows do, however, work fine for scrolling up/down, but not left/right.

  6. Alan T. wrote on

    Bug I noticed– for some reason, my add-ons aren’t appearing in the about:addons.
    I have turned off add-on compatibility checking for firefox 9 through about:config, and my add-ons are working, but -nothing- shows up in the about:addons so I can’t manage them. Help?

    1. Jorge Villalobos wrote on

      First, make sure that you have selected the Extensions pane. If that doesn’t fix the problem, try opening the Error Console (in the Web Developer menu) and then opening about:addons. Do you see any errors being reported?
      Finally, it could be a faulty add-on or theme. In that case, you should open Firefox in Safe Mode and disable add-ons and themes one at a time to try to identify the culprit.