Chromium Code Reviews| Index: LayoutTests/http/tests/xmlhttprequest/getResponseHeader.html |
| diff --git a/LayoutTests/http/tests/xmlhttprequest/getResponseHeader.html b/LayoutTests/http/tests/xmlhttprequest/getResponseHeader.html |
| index 01b70a76dce25ba68ce091952333d2ad34ad6625..f5a3412d4bf2166ed6daa12b5b5565e0556cae65 100644 |
| --- a/LayoutTests/http/tests/xmlhttprequest/getResponseHeader.html |
| +++ b/LayoutTests/http/tests/xmlhttprequest/getResponseHeader.html |
| @@ -1,140 +1,65 @@ |
| +<!doctype html> |
| <html> |
| <head> |
| - <title>Check exception thrown by getReponseHeader </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.getResponseHeader()"); |
| + |
| +window.jsTestIsAsync = true; |
| var savedHeader = null; |
| var headerName="Content-Type"; |
|
tyoshino (SeeGerritForStatus)
2013/10/26 19:05:13
please insert a space on the right and left of =
|
| -var nullTests = new Array("SeT-COoKie", "sEt-coOkIE2", |
| - "xxx-mytest-headerabc", null, "Content-Type:"); |
| - |
| -function log (msg) { |
| - var paragraph = document.createElement("li"); |
| - paragraph.innerHTML=msg.replace(/\n/gm,"<br>"); |
| - document.getElementById("console").appendChild(paragraph); |
| -} |
| - |
| -function log4(status, rState, subState, msg) { |
| - log(status + " " + rState + " " + subState + ": " + msg); |
| -} |
| +var nullTests = [ "SeT-COoKie", |
| + "sEt-coOkIE2", |
|
tyoshino (SeeGerritForStatus)
2013/10/26 19:05:13
use spaces plz
|
| + "xxx-mytest-headerabc", |
| + null, |
| + "Content-Type:" ]; |
| -function log3(status, rState, msg) { |
| - log4(status, rState, headerName, msg); |
| -} |
| +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 headerValue; |
| +function testGetResponseHeader(xhr, headerName, expected) { |
| + shouldNotThrow("{state: " + xhr.readyState + "}; headerValue = xhr.getResponseHeader('" + headerName + "');"); |
| + if (headerValue !== expected) |
| + testFailed("Expected '" + expected + "', got: '" + headerValue + "'"); |
| + else |
| + testPassed("headerValue is " + expected); |
|
tyoshino (SeeGerritForStatus)
2013/10/26 19:05:13
this will be shorter if shouldBe is used though we
sof
2013/10/26 20:02:26
Done, but I don't particularly like this way of ex
tyoshino (SeeGerritForStatus)
2013/10/26 20:22:46
Yes. I agree it's weird... If you strongly prefer
|
| + return headerValue; |
| } |
| 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.getResponseHeader(headerName); |
| - if (rState != this.readyState) |
| - log3("UNCERTAIN", rState, "readyState changed while getting the header."); |
| - if (rState < 2) { |
| - log3("FAILED", rState, headerName + "=" + header); |
| - } else if (header) { |
| - if (savedHeader) |
| - if (savedHeader != header) { |
| - log3("FAILED", rState,headerName + " changed after it was first returned. Previous " + headerName |
| - + "=" + savedHeader + "; New " + headerName + "=" + header + "."); |
| - savedHeader = header; |
| - } |
| - else //savedHeader == header here; no need to reprint header |
| - log3("PASSED", rState, headerName); |
| - else {//first header value retrieved |
| - if (window.testRunner) |
| -//do not print the header's value for automated tests to avoid false failures. |
| - log3("PASSED", rState, "ResponseHeader(" + headerName + ") returned a value."); |
| - else |
| - log3("PASSED", rState, "getResponseHeader(" + headerName + ") returned: " + header + "."); |
| - savedHeader = header; |
| - } |
| - for (var i=0;i<nullTests.length;++i) { |
| - try { |
| - var str = this.getResponseHeader(nullTests[i]); |
| - if (str == null) |
| - log4("PASSED", rState, nullTests[i], "getResponseHeader(" + nullTests[i] + |
| - ") returned null."); |
| - else |
| - log4("FAILED", rState, nullTests[i], "getResponseHeader(" + nullTests[i] + |
| - ") returned \"" + str + "\""); |
| - } catch(e) { |
| - log4("FAILED", rState, nullTests[i], "getResponseHeader(" + nullTests[i] + ") threw exception:" + e); |
| - } |
| - } |
| - } |
| - else //header is null |
| - log3("FAILED", rState, "null " + headerName + " returned."); |
| - } catch (e) { |
| - if (rState < 2) |
| - log3("PASSED", rState, "exception thrown"); |
| - else |
| - log3("FAILED", rState, "exception thrown: " + e.message + "."); |
| + var result = testGetResponseHeader(this, headerName, rState <= XMLHttpRequest.OPENED ? null : "text/html"); |
| + if (result) { |
| + if (savedHeader) |
| + if (result !== savedHeader) |
| + testFailed("Expected '" + savedHeader + "', got: '" + result + "'"); |
| + else |
| + testPassed("header value is unchanged."); |
|
tyoshino (SeeGerritForStatus)
2013/10/26 19:05:13
ditto
|
| + |
| + savedHeader = result; |
| + |
| + for (var i = 0; i < nullTests.length; ++i) |
| + testGetResponseHeader(this, nullTests[i], null); |
| + } else { |
| + shouldBeGreaterThanOrEqual("XMLHttpRequest.OPENED", "xhr.readyState"); |
| } |
| - if ((rState == 4) && (window.testRunner)) |
| - testRunner.notifyDone(); |
| -} |
| -if (window.testRunner) { |
| - testRunner.waitUntilDone(); |
| - testRunner.dumpAsText(); |
| + if (rState == 4) |
| + finishJSTest(); |
| } |
| -function test() { |
| +function runTest() { |
| // Test for readyState = 0 |
| - try { |
| - var header = xhr.getResponseHeader(headerName); |
| - log3("FAILED", xhr.readyState, headerName + "=" + header + "."); |
| - } catch (e) { |
| - log3("PASSED", xhr.readyState, "exception thrown."); |
| - } |
| - try { |
| - xhr.open("GET","resources/1251.html", true); |
| - xhr.send(null); |
| - } catch(e) { |
| - log3("FAILED", "open/send", "exception thrown: " + e.message +"."); |
| - if (window.testRunner) |
| - testRunner.notifyDone(); |
| - } |
| + testGetResponseHeader(xhr, headerName, null); |
| + shouldNotThrow('xhr.open("GET","resources/1251.html", true);'); |
|
tyoshino (SeeGerritForStatus)
2013/10/26 19:05:13
space after "GET",
|
| + // Test for readyState = 1 |
| + testGetResponseHeader(xhr, headerName, null); |
| + shouldNotThrow("xhr.send(null);"); |
| } |
| +runTest(); |
| </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 the getResponseHeader method when readyState >= 2 |
| -(HEADERS_RECEIVED) returns a header value if the header exists.</p> |
| -<p>Assertion: Invoking the getResponseHeader method with the parameter |
| - satisfying the following conditions causes getResponseHeader |
| - to return null: |
| -<li>1a. The parameter case-insensitively matches Set-Cookie;</li> |
| -<li>1b. The parameter case-insensitively matches Set-Cookie2;</li> |
| -<li>2. The parameter does not match any header in the response;</li> |
| -<li>3a. The parameter is null (it is not a valid header name);</li> |
| -<li>3b. The parameter is "Content-Type:" (it is not a valid header name).</li> |
| - |
| -<script> |
| - if (!window.testRunner) |
| - document.write("<p>If the test passes one should see \ |
| -below the ruler the text \"passed\" in all capital letters, once for every ready state < 2, \ |
| -followed each time by a space and the readyState number and 6 times for every ready state >= 2.</p>\n\ |
| -<p>ReadyState numbers should be in ascending order 0 to 4.</p>\n\ |
| -<p>ReadyState numbers should be followed by a blank, the name of the header tested, colon a space and a message.</p>\ |
| -<p>The value of the " + headerName + " header should be printed for ready state 2.</p>"); |
| -</script> |
| - <hr> |
| - <p><ol id=console></ol></p> |
| -</body> |
| +<script src="../resources/js-test-post.js"></script> |
|
tyoshino (SeeGerritForStatus)
2013/10/26 19:05:13
put before </head>?
|
| </html> |