| <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> |