<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=313646 --> <head> <title>Test for Bug 313646</title> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=313646">Mozilla Bug 313646</a> <p id="display"></p> <div id="content" style="display: none"> </div> <pre id="test"> <script class="testbody" type="text/javascript"> /** Test for Bug 313646 **/ // dom/base/test/bug313646.txt SimpleTest.waitForExplicitFinish(); var count1 = 0; var count2 = 0; var count3 = 0; var count4 = 0; var innerXHRDone = 0; var req = new XMLHttpRequest(); req.onreadystatechange = function(evt) { ++window["count" + evt.target.readyState]; // Do something a bit evil, start a new sync XHR in // readyStateChange listener. var innerXHR = new XMLHttpRequest(); innerXHR.onreadystatechange = function(e) { if (e.target.readyState == 4) { ++innerXHRDone; } } innerXHR.open("GET","bug313646.txt", false); innerXHR.send(); } // make the synchronous request req.open("GET","bug313646.txt", false); req.send(); ok(count1, "XMLHttpRequest wasn't in state 1"); is(count2, 0, "XMLHttpRequest shouldn't have been in state 2"); is(count3, 0, "XMLHttpRequest shouldn't have been in state 3"); ok(count4, "XMLHttpRequest wasn't in state 4"); is(innerXHRDone, 2, "There should have been 2 inner XHRs."); SimpleTest.finish(); </script> </pre> </body> </html>