<html>
<body>
<p>Test that setRequestHeader encodes header values as latin-1</p>
<pre id=result>FAIL: script didn't run or raised an unexpected exception.</pre>
<script>
    if (window.testRunner)
        testRunner.dumpAsText();

    function log(msg) {
        document.getElementById("result").textContent += msg + "\n";
    }
    document.getElementById("result").textContent = "";

    try {
        req = new XMLHttpRequest;
        req.open("GET", "resources/latin1-test.cgi", false);

        req.setRequestHeader("CUSTOM-HEADER", "\xd5K");

        exceptionThrown = false;
        try {
            req.setRequestHeader("X-SNOWMAN", "\u2603");
        } catch(e) {
            exceptionThrown = true;
        }
        if (exceptionThrown)
            log("PASSED: non-latin-1 header value throws");
        else
            log("FAILED: latin-1 header value accepted");

        req.send("");
        if (req.responseText.indexOf("HTTP_CUSTOM_HEADER: %D5K") >= 0)
            log("PASSED: header bytes preserved as latin-1");
        else
            log("FAILED: header bytes not preserved as latin-1");

        if (req.getResponseHeader("Custom-Header") == "\xd5K")
            log("PASSED: response header interpreted correctly");
        else
            log("FAILED: response header interpreted incorrectly");

	// TODO(davidben): Test req.statusText too. Unfortunately, lighttpd
	// doesn't seem to forward the HTTP status text from the CGI script's
	// status header.
    } catch (ex) {
        log("FAILED: " + ex);
    }
</script>
</body>
</html>
