This is a regression.
I've been using getBaseDomainFromHost on domains like .foo.com
This worked in Firefox 3.6
In Firefox 4 it returns an error
Error: uncaught exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIEffectiveTLDService.getBaseDomainFromHost]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: chrome://optouttester2/content/optouttester.js :: <TOP_LEVEL> :: line 35" data: no]
This is with the latest nightly.
Michael, would you be willing to narrow down a regression range?
I just tested beta 1 and it failed there. So it happened early.
Fails in 3.7 alpha 1.
I've double and triple checked and it definitely works in FF 3.6.
In comparing FF 3.6 to FF4, Code was added to do this:
203 // sanity check the string we're about to look up: it should not begin with
204 // a '.'; this would mean the hostname began with a '.' or had an
205 // embedded '..' sequence.
206 if (*currDomain == '.')
207 return NS_ERROR_INVALID_ARG;
Unfortunately there is no blame on that file.
It was done here:
Hmm. That change looks quite purposeful. Dan?
Why would you expect it to succeed? It's not a valid host. You have to strip leading dots off before you pass it into the service, see http://mxr.mozilla.org/mozilla-central/source/netwerk/cookie/nsCookieService.cpp#3018.
I'd expect it to succeed.
It's common to get hosts with leading . from cookies.
The other thing is that Firefox 3.6 set an expectation that it would succeed.
It was changed for FF 4.
At the bare minimum, the docs should be updated to note the change in behavior from FF3.6 to FF 4.
Past performance is no guarantee of future results. :)
Good point though, we can doc it.
Also noted on Firefox 4 for developers.