blob: ab9247eeb1d003a9ffa6eacb299098f793f98e3b [file] [log] [blame]
<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 (reasyState event send)" & "PASS" (in that order) three 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("PASS (readystate event send)");
}
// Called only for readyState == 1
function testAbortWithReadyStateEventLoading()
{
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (ex) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
// We use a slow page to test the LOADING state with the send() flag
// and we do not catch readyState event before send has been called
xhr.open("GET", "resources/endlessxml.php", true);
xhr.send(null);
++finishedTests;
xhr.onreadystatechange = catchReadystateEventAbort;
xhr.abort();
if (xhr.readyState == 0)
log("PASS");
else
log("FAILED");
if (finishedTests == abortToDo.length && window.testRunner)
testRunner.notifyDone();
}
// Called with num != 1
function testAbortWithReadyStateEvent(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);
xhr.send(null);
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
var finishedTests = 0;
var abortToDo = ['2', '3', '1'];
for (i = 0; i < abortToDo.length; i++)
if (abortToDo[i] == 1)
testAbortWithReadyStateEventLoading();
else
testAbortWithReadyStateEvent(abortToDo[i]);
</script>
</body>
</html>