3 <title>Test XMLHttpRequest zero-length response handling (sync)
</title>
4 <meta http-equiv=
"content-type" content=
"text/html;charset=utf-8">
6 <p>Test for
<a href=
"http://bugs.webkit.org/show_bug.cgi?id=5924">bug
5924</a>
7 - zero-length responses to XMLHTTPRequest mishandled.
</p>
10 if (window
.testRunner
)
11 testRunner
.dumpAsText();
13 var console_messages
= document
.createElement("ul");
14 document
.body
.appendChild(console_messages
);
18 var item
= document
.createElement("li");
19 item
.appendChild(document
.createTextNode(message
));
20 console_messages
.appendChild(item
);
23 function get(url
, async
)
25 if (window
.XMLHttpRequest
) {
26 req
= new XMLHttpRequest();
29 req
= new ActiveXObject("Msxml2.XMLHTTP");
31 req
= new ActiveXObject("Microsoft.XMLHTTP");
35 log("after creation: " + stateName(req
.readyState
));
38 log("ResponseText: " + prettyPrintText(req
.responseText
));
40 log("Exception getting responseText: " + ex
.message
);
44 req
.onreadystatechange
= processStateChange
;
46 log("after setting onreadystatechange: " + stateName(req
.readyState
));
48 req
.open('GET', url
, async
);
49 log("after open(): " + stateName(req
.readyState
));
51 req
.overrideMimeType('text/xml');
52 log("after overrideMimeType(): " + stateName(req
.readyState
));
54 log("overrideMimeType(): " + ex
);
58 log("after send(): " + stateName(req
.readyState
));
60 if (!async
&& req
.status
!= 200)
61 throw ("HTTP request failed, status: " + req
.status
);
66 function stateName(val
) {
67 if (req
.readyState
== 0)
68 return "Uninitialized";
69 else if (req
.readyState
== 1)
71 else if (req
.readyState
== 2)
73 else if (req
.readyState
== 3)
75 else if (req
.readyState
== 4)
81 function prettyPrintText(text
) {
85 return '"' + text
+ '"';
88 function dumpResponse() {
89 try { log (" Status: " + req
.status
); } catch (ex
) { log(" Exception getting status: " + ex
.message
); }
90 try { log (" StatusText: " + prettyPrintText(req
.statusText
)); } catch (ex
) { log(" Exception getting StatusText: " + ex
.message
); }
91 try { log (" ResponseText: " + prettyPrintText(req
.responseText
)); } catch (ex
) { log(" Exception getting ResponseText: " + ex
.message
); }
92 try { log (" ResponseXML: " + req
.responseXML
); } catch (ex
) { log(" Exception getting ResponseXML: " + ex
.message
); }
93 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
); }
96 function processStateChange() {
97 log("onreadystatechange: " + stateName(req
.readyState
));
101 get('resources/zero-length.xml', false);