blob: 31cc7bf496965817f116504f8a1564eab5a110bd [file] [log] [blame]
<html>
<head>
<title>Test XMLHttpRequest zero-length response handling (sync)</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<body>
<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=5924">bug 5924</a>
- zero-length responses to XMLHTTPRequest mishandled.</p>
<script>
if (window.testRunner)
testRunner.dumpAsText();
var console_messages = document.createElement("ul");
document.body.appendChild(console_messages);
function log(message)
{
var item = document.createElement("li");
item.appendChild(document.createTextNode(message));
console_messages.appendChild(item);
}
function get(url, async)
{
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (ex) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
}
log("after creation: " + stateName(req.readyState));
try {
log("ResponseText: " + prettyPrintText(req.responseText));
} catch (ex) {
log("Exception getting responseText: " + ex.message);
}
if (async)
req.onreadystatechange = processStateChange;
log("after setting onreadystatechange: " + stateName(req.readyState));
req.open('GET', url, async);
log("after open(): " + stateName(req.readyState));
try {
req.overrideMimeType('text/xml');
log("after overrideMimeType(): " + stateName(req.readyState));
} catch (ex) {
log("overrideMimeType(): " + ex);
}
req.send(null);
log("after send(): " + stateName(req.readyState));
if (!async && req.status != 200)
throw ("HTTP request failed, status: " + req.status);
return req;
}
function stateName(val) {
if (req.readyState == 0)
return "Uninitialized";
else if (req.readyState == 1)
return "Open";
else if (req.readyState == 2)
return "Sent";
else if (req.readyState == 3)
return "Receiving";
else if (req.readyState == 4)
return "Loaded";
else
return "???";
}
function prettyPrintText(text) {
if (text == null)
return text;
else
return '"' + text + '"';
}
function dumpResponse() {
try { log ("  Status: " + req.status); } catch (ex) { log("  Exception getting status: " + ex.message); }
try { log ("  StatusText: " + prettyPrintText(req.statusText)); } catch (ex) { log("  Exception getting StatusText: " + ex.message); }
try { log ("  ResponseText: " + prettyPrintText(req.responseText)); } catch (ex) { log("  Exception getting ResponseText: " + ex.message); }
try { log ("  ResponseXML: " + req.responseXML); } catch (ex) { log("  Exception getting ResponseXML: " + ex.message); }
try { log ("  ResponseXML serialized: " + (req.responseXML ? prettyPrintText(window.XMLSerializer ? (new XMLSerializer()).serializeToString(req.responseXML) : req.responseXML.xml) : "n/a")); } catch (ex) { log("  Exception serializing ResponseXML: " + ex.message); }
}
function processStateChange() {
log("onreadystatechange: " + stateName(req.readyState));
dumpResponse();
}
get('resources/zero-length.xml', false);
dumpResponse();
</script>
</body>
</html>