Index: LayoutTests/http/tests/xmlhttprequest/getAllResponseHeaders.html |
diff --git a/LayoutTests/http/tests/xmlhttprequest/getAllResponseHeaders.html b/LayoutTests/http/tests/xmlhttprequest/getAllResponseHeaders.html |
index f371f0a4918185528d777fa2d94b6d81b4e09047..3cb9dde872dc64b245f7da88ed3ecb3d108c88b9 100644 |
--- a/LayoutTests/http/tests/xmlhttprequest/getAllResponseHeaders.html |
+++ b/LayoutTests/http/tests/xmlhttprequest/getAllResponseHeaders.html |
@@ -1,118 +1,69 @@ |
+<!doctype html> |
<html> |
<head> |
- <title>Check exception thrown by getAllResponseHeaders and some |
- characteristics of the return value</title> |
+<title>Testing XMLHttpRequest.getReponseHeader behavior</title> |
+<script src="../resources/js-test-pre.js"></script> |
<script type="text/javascript"> |
+description("Test the required behavior of XMLHttpRequest.getAllResponseHeaders()"); |
-function log (msg) { |
- var paragraph = document.createElement("li"); |
- paragraph.innerHTML=msg.replace(/\n/gm,"<br>"); |
- document.getElementById("console").appendChild(paragraph); |
-} |
+window.jsTestIsAsync = true; |
-var xhr; |
+var xhr = new XMLHttpRequest(); |
-if (window.XMLHttpRequest) { |
- xhr = new XMLHttpRequest(); |
-} else { |
- try { |
- xhr = new ActiveXObject("Msxml2.XMLHTTP"); |
- } catch (ex) { |
- xhr = new ActiveXObject("Microsoft.XMLHTTP"); |
- } |
+var savedHeaders = null; |
+ |
+var headerValues; |
+function testGetAllResponseHeaders(xhr, expectEmpty) { |
+ shouldNotThrow("{state: " + xhr.readyState + "}; headerValues = xhr.getAllResponseHeaders();"); |
+ if (expectEmpty && headerValues !== "") |
+ testFailed("Expected the empty string, got: '" + headerValues + "'"); |
+ else |
+ testPassed("headerValues is " + (!expectEmpty ? "not " : "") + "the empty string"); |
+ return headerValues; |
} |
-var savedHeader = null; |
+var responseHeaders; |
xhr.onreadystatechange = function() { |
var rState = this.readyState; |
- // We expect an INVALID_STATE_ERR exception for readyState < 2 |
- // and no exception for readyState >= 2 |
- try { |
- var header = this.getAllResponseHeaders(); |
- if (rState != this.readyState) |
- log("UNCERTAIN " + rState + ": readyState changed while getting headers."); |
- if (rState < 2) { |
- log("FAILED " + rState + ": headerlist=" + header); |
- } else if (header) |
- if (savedHeader) |
- if (savedHeader != header) { |
- log("FAILED " + rState + |
-": headerlist changed after it was first returned. Previous header list:\n" |
-+ savedHeader + "\n New headerlist:\n" + header); |
- savedHeader = header; |
- } |
- else //savedHeader == header here; no need to reprint header |
- log("PASSED " + rState); |
- else {//first header list retrieved |
- if (/^Set-Cookie:|^Set-Cookie2:/im.test(header)) |
- log("FAILED " + rState + |
-": /^Set-Cookie:|^Set-Cookie2:/ matches. getAllResponseHeaders returned:\n" + header); |
- else if (window.testRunner) |
-//do not print list for automated tests to avoid false failures. |
- log("PASSED " + rState + |
-": getAllResponseHeaders returned what looks like a conforming headerlist."); |
+ responseHeaders = testGetAllResponseHeaders(this, rState <= XMLHttpRequest.OPENED); |
+ if (responseHeaders) { |
+ if (savedHeaders) { |
+ shouldBe("responseHeaders", "savedHeaders"); |
+ } else { |
+ if (/^Set-Cookie:|^Set-Cookie2:/im.test(responseHeaders)) { |
+ testFailed("Did not expect to find a Set-Cookie{2} header, got: '" + responseHeaders + "'"); |
+ } else { |
+ // Do not print list for automated tests to avoid false failures. |
+ if (self.testRunner) |
+ testPassed("Header values appears to be conforming."); |
else |
- log("PASSED " + rState + |
-": getAllResponseHeaders returned:\n" + header); |
- savedHeader = header; |
+ testPassed("Header values appears ok: " + JSON.stringify(headerValues)); |
} |
- else //header is null |
- log("FAILED " + rState + ": null header list returned"); |
- } catch (e) { |
- if (rState < 2) { |
- log("PASSED " + rState); |
- } else { |
- log("FAILED " + rState + ": EXCEPTION THROWN: " + e.message + "."); |
} |
+ savedHeaders = responseHeaders; |
+ } else { |
+ if (rState > XMLHttpRequest.OPENED) |
+ testFailed("In ready state " + rState + ", unexpected empty value."); |
+ else if (responseHeaders !== "") |
+ testFailed("In ready state " + rState + ", expected the empty string, got: " + JSON.stringify(responseHeaders) + "."); |
+ else |
+ testPassed("getAllResponseHeaders() result is empty in ready state " + rState + "."); |
} |
- if ((rState == 4) && (window.testRunner)) |
- testRunner.notifyDone(); |
+ |
+ if (rState == XMLHttpRequest.DONE) |
+ finishJSTest(); |
} |
-function test() { |
- if (window.testRunner) { |
- testRunner.waitUntilDone(); |
- testRunner.dumpAsText(); |
- } |
+function runTest() { |
// Test for readyState = 0 |
- try { |
- var header = xhr.getAllResponseHeaders(); |
- log("FAILED " + xhr.readyState + ": header=" + header); |
- } catch (e) { |
- log("PASSED " + xhr.readyState); |
- } |
- try { |
- xhr.open("GET","resources/1251.html", true); |
- xhr.send(null); |
- } catch(e) { |
- log("FAILED open/send: EXCEPTION THROWN: " + e.message +"."); |
- if (window.testRunner) |
- testRunner.notifyDone(); |
- } |
+ testGetAllResponseHeaders(xhr, true); |
+ shouldNotThrow('xhr.open("GET", "resources/1251.html", true);'); |
+ // Test for readyState = 1 |
+ testGetAllResponseHeaders(xhr, true); |
+ shouldNotThrow("xhr.send(null);"); |
} |
+runTest(); |
</script> |
+<script src="../resources/js-test-post.js"></script> |
</head> |
-<body onload="test()"> |
- |
-<p>Test page for <a href="http://bugs.webkit.org/show_bug.cgi?id=15356">bug 15356</a> |
-and <a href="http://bugs.webkit.org/show_bug.cgi?id=29121">bug 29121</a></p> |
-<p>Assertion: Invoking getAllResponseHeaders method when readyState >= 2 |
-(HEADERS_RECEIVED) should return a conforming list of headers.</p> |
-<script> |
- if (!window.testRunner) |
- document.write("<p>If the test passes one should see \ |
-below the ruler the text \"passed\" in all capital letters, 5 times, \ |
-followed each time by a space and the readyState number.</p>\n\ |
-<p>ReadyStatenumbers should be in ascending order 0 to 4.</p>\n\ |
-<p>A conforming list of response headers should also be printed.</p>\n\ |
-<p>A conforming list of headers:</p> \ |
- <li> contains one header per line.</li> \ |
- <li> has header names and header values separated by a COLON and \ |
-a SPACE.</li>\ |
- <li> does not contain any headers that match (case-insensitively) \ |
-Set-Cookie or Set-Cookie2</li>"); |
- </script> |
- <hr> |
- <p><ol id=console></ol></p> |
-</body> |
</html> |