Test the required behavior of XMLHttpRequest.getAllResponseHeaders()

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS {state: 0}; headerValues = xhr.getAllResponseHeaders(); did not throw exception.
PASS headerValues is the empty string
PASS {state: 1}; headerValues = xhr.getAllResponseHeaders(); did not throw exception.
PASS headerValues is the empty string
PASS getAllResponseHeaders() result is empty in ready state 1.
PASS xhr.open("GET", "resources/1251.html", true); did not throw exception.
PASS {state: 1}; headerValues = xhr.getAllResponseHeaders(); did not throw exception.
PASS headerValues is the empty string
PASS xhr.send(null); did not throw exception.
PASS {state: 2}; headerValues = xhr.getAllResponseHeaders(); did not throw exception.
PASS headerValues is not the empty string
PASS Header values appears to be conforming.
PASS {state: 3}; headerValues = xhr.getAllResponseHeaders(); did not throw exception.
PASS headerValues is not the empty string
PASS responseHeaders is savedHeaders
PASS {state: 4}; headerValues = xhr.getAllResponseHeaders(); did not throw exception.
PASS headerValues is not the empty string
PASS responseHeaders is savedHeaders
PASS successfullyParsed is true

TEST COMPLETE

