Closed Bug 437651 Opened 16 years ago Closed 10 years ago

moneycentral.msn.com - Doesn't display MSN Money stock quote data in Gecko 1.9 browsers (Firefox 3, Camino 2)

Categories

(Web Compatibility :: Desktop, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: robarnold, Unassigned)

References

()

Details

(Keywords: regression)

1. I go to http://moneycentral.msn.com/investor/home.asp# 2. I look at the "Quote watchlist" panel. Already there is a difference between Firefox and IE: IE has 3 prepopulated entries. 3. I enter a stock symbol into the text field (Ex: ADBE, MSFT, JAVA, GOOG) and click Add. 4. The button disables itself and the text field clears. In my error console I see an exception was thrown: NS_ERROR_NOT_AVAILABLE at http://shared.live.com/~Live.GadgetFramework/~11.5.2008/AtlasCompat.js on line 62. What I expected: the symbol I entered should have appeared under "My Watchlist" along with some ui bits in the same row.
I can confirm this on OSX. I tried FF2 and got the expected results (including the prepopulated entries). I used FF3 and got the problem Rob had. Also, spoofing the user agent for FF2 results in the same issue with the same error.
OS: Windows Vista → All
Keywords: regression
So... I'm trying to follow the steps in comment 0. 1) Load http://moneycentral.msn.com/investor/home.asp# 2) Look for "Quote Watchlist" and click that link. 3) From the resulting screen, select the "view" option (not the "demo" option). But now I don't see a button labeled "Add"... In fact, the only textfield I ever see for entering stock symbols is the one next to the "Get Quote" button. (Using Minefield from a few weeks back on Linux). I suppose they might be browser-sniffing in a particularly stupid way (e.g. looking for Firefox) and serving different content... Whoever can actually reproduce this should breakpoint in nsXMLHttpRequest::GetStatus (in both Firefox 3 and Firefox 2) and see what the callstacks look like and why it throws in 3 but not 2.
Step 2 is wrong: don't click the link. The problem occurs on the page I linked to.
The page you linked to doesn't have any buttons labeled "Add" or anything with "Quote watchlist" in it other than that link.
After talking on IRC with Boris, it seems this site is sniffing the user agent for Firefox, so users of Minefield need to spoof their user agent in order to reproduce.
Brief summary: In Firefox 3, we fire an onreadystatechange handler that tries to get the status. Sadly, we're in readystate _1_, so of course it throws. I can't tell where the code lives, because trying to dump the JS stack asserts and dies in the JS engine. Sad. I don't get any attempt at all to get the status in Firefox 2. So really, there are two paths forward: 1) Try to dig into the site and understand why it's running different code in the two cases. 2) Try nightly builds (with UA spoofed to Firefox 2, say), and find a regression range.
Product: Firefox → Core
QA Contact: general → general
with a ff2 ua on linux, 2006-05-05-04 works, 2006-05-06-04 doesn't. Note that the default watch list appears in these older builds.
the default watch list appears in the 2007-06-17-04 build but does not in the 2007-06-17-04 build.
Bob, those last two build ids are identical...
oops. make that 2007-06-18-04.
Ah, I see what happened here. The relevant code is in http://shared.live.com/~Live.GadgetFramework/~11.5.2008/liveframework.js on line 2118 and lines 2140 through 2150. Line 2118: xml.onreadystatechange = doCallback; Lines 2140 through 2150: function doCallback(p_blnForce) { if (xml && (p_blnForce || 4==xml.readyState)) { xml.onreadystatechange = Function.emptyFunction; if (o.timer) clearTimeout(o.timer); Finished(xml,o); xml = o = null; } } Basically, this code overloads the onreadystatechange handler to do other cleanup (sometimes explicitly calling it with a |true| argument). This used to work because in Firefox 2 this handler never gets an argument when called from our code. But in Firefox 3 onreadystatechange is an EventListener, which means it gets the Event object passed to the method. Thus in Firefox 3 the conditional in doCallback always has p_blInForce testing true, so we call Finished() even though we're just starting the request, and then things start accessing .status, etc, and die. The behavior here changed in bug 198595, but we do want the new behavior, and it's what the W3C XHR spec will require. So this is evangelism. Just testing the type of the argument to make sure it's not an Event should be enough. Or factoring the body of that function out so that the readystate event handler calls it with false. Or any other change along those lines.
Assignee: nobody → english-us
Component: General → English US
Product: Core → Tech Evangelism
QA Contact: general → english-us
Version: Trunk → unspecified
Blocks: 198595
Hardware: PC → All
Summary: Firefox 3 Release Candidate 2 doesn't display MSN Money stock quote data → moneycentral.msn.com - Doesn't display MSN Money stock quote data in Gecko 1.9 browsers (Firefox 3, Camino 2)
> The page you requested can't be found I guess the page is now http://investing.money.msn.com/stock-market-quotes The default watchlist seems to be working.
Assignee: english-us → nobody
Status: NEW → RESOLVED
Closed: 10 years ago
Component: English US → Desktop
Resolution: --- → WORKSFORME
Product: Tech Evangelism → Web Compatibility
You need to log in before you can comment on or make changes to this bug.