Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / http / tests / xmlhttprequest / zero-length-response-sync.html
blob31cc7bf496965817f116504f8a1564eab5a110bd
1 <html>
2 <head>
3 <title>Test XMLHttpRequest zero-length response handling (sync)</title>
4 <meta http-equiv="content-type" content="text/html;charset=utf-8">
5 <body>
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>
8 <script>
10 if (window.testRunner)
11 testRunner.dumpAsText();
13 var console_messages = document.createElement("ul");
14 document.body.appendChild(console_messages);
16 function log(message)
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();
27 } else {
28 try {
29 req = new ActiveXObject("Msxml2.XMLHTTP");
30 } catch (ex) {
31 req = new ActiveXObject("Microsoft.XMLHTTP");
35 log("after creation: " + stateName(req.readyState));
37 try {
38 log("ResponseText: " + prettyPrintText(req.responseText));
39 } catch (ex) {
40 log("Exception getting responseText: " + ex.message);
43 if (async)
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));
50 try {
51 req.overrideMimeType('text/xml');
52 log("after overrideMimeType(): " + stateName(req.readyState));
53 } catch (ex) {
54 log("overrideMimeType(): " + ex);
57 req.send(null);
58 log("after send(): " + stateName(req.readyState));
60 if (!async && req.status != 200)
61 throw ("HTTP request failed, status: " + req.status);
63 return req;
66 function stateName(val) {
67 if (req.readyState == 0)
68 return "Uninitialized";
69 else if (req.readyState == 1)
70 return "Open";
71 else if (req.readyState == 2)
72 return "Sent";
73 else if (req.readyState == 3)
74 return "Receiving";
75 else if (req.readyState == 4)
76 return "Loaded";
77 else
78 return "???";
81 function prettyPrintText(text) {
82 if (text == null)
83 return text;
84 else
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));
98 dumpResponse();
101 get('resources/zero-length.xml', false);
102 dumpResponse();
103 </script>
104 </body>
105 </html>