| <html> | |
| <head></head> | |
| <body> | |
| <p>Test bug 13141 : XMLHttpRequest should set readyState to 0 after abort() </p> | |
| <p>Updated for bug 16989: Add send() flag checks in XmlHttpRequest </p> | |
| <p>Should see "PASS" two times:</p> | |
| <div id="ans"></div> | |
| <script type="text/javascript"> | |
| function log(message) { | |
| document.getElementById("ans").appendChild(document.createTextNode(message)); | |
| document.getElementById("ans").appendChild(document.createElement("br")); | |
| } | |
| // Used to detect if a readystate event is dispatched | |
| function catchReadystateEventAbort() { | |
| log("FAILED (readystate event send)"); | |
| } | |
| function testAbortDoNotDispatchEvent(num) | |
| { | |
| var xhr; | |
| if (window.XMLHttpRequest) { | |
| xhr = new XMLHttpRequest(); | |
| } else { | |
| try { | |
| xhr = new ActiveXObject("Msxml2.XMLHTTP"); | |
| } catch (ex) { | |
| xhr = new ActiveXObject("Microsoft.XMLHTTP"); | |
| } | |
| } | |
| xhr.onreadystatechange = function () { | |
| if (this.readyState == num) { | |
| ++finishedTests; | |
| this.onreadystatechange = catchReadystateEventAbort; | |
| this.abort(); | |
| if (this.readyState == 0) | |
| log("PASS"); | |
| else | |
| log("FAILED"); | |
| } | |
| if (finishedTests == abortToDo.length && window.testRunner) | |
| testRunner.notifyDone(); | |
| } | |
| xhr.open("GET", "resources/1251.html", true); | |
| // We want to be able to test in the OPENED state with the send() flag to false | |
| // so do not call send in that case | |
| if (num != 1) | |
| xhr.send(null); | |
| } | |
| if (window.testRunner) { | |
| testRunner.dumpAsText(); | |
| testRunner.waitUntilDone(); | |
| } | |
| var finishedTests = 0; | |
| var abortToDo = ['1', '4']; | |
| for (i = 0; i < abortToDo.length; i++) | |
| testAbortDoNotDispatchEvent(abortToDo[i]); | |
| </script> | |
| </body> | |
| </html> |