chromium/third_party/blink/web_tests/http/tests/xmlhttprequest/request-encoding2.html

<html>
<head>
<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=34653">bug 34653</a>:
XMLHttpRequest should force to send content-type as charset equals UTF-8.</p>
<div id=result1>FAIL: script didn't run to completion.</div>
<div id=result2>FAIL: script didn't run to completion.</div>
<div id=result3>FAIL: script didn't run to completion.</div>
<div id=result4>FAIL: script didn't run to completion.</div>
<script>

    function test1() {
        // Test when content-type is not set.
        req = new XMLHttpRequest;
        req.open("POST", "print-content-type.cgi", false);

        req.send("");

        document.getElementById("result1").firstChild.data = "Test1 (setRequestHeader was not called):";
        if (req.responseText == "application/xml\n")
            document.getElementById("result1").firstChild.data += " SUCCESS";
        else
            document.getElementById("result1").firstChild.data += " FAILURE: '" + req.responseText + "'";
    }

    function test2() {
        // Test when content-type is set without charset.
        req = new XMLHttpRequest;
        req.open("POST", "print-content-type.cgi", false);

        req.setRequestHeader("Content-Type", "application/xml");
        req.send("");

        document.getElementById("result2").firstChild.data = "Test2 (setRequestHeader was called without a charset):";
        if (req.responseText == "application/xml\n")
            document.getElementById("result2").firstChild.data += " SUCCESS";
        else
            document.getElementById("result2").firstChild.data += " FAILURE: '" + req.responseText + "'";
    }

    function test3() {
        // Test when content-type is set with non-UTF-8 charset.
        req = new XMLHttpRequest;
        req.open("POST", "print-content-type.cgi", false);

        req.setRequestHeader("Content-Type", "application/xml; charset=KOI8-R");
        req.send("");

        document.getElementById("result3").firstChild.data = "Test3 (setRequestHeader was called with a non-UTF8 charset):";
        if (req.responseText == "application/xml; charset=UTF-8\n")
            document.getElementById("result3").firstChild.data += " SUCCESS";
        else
            document.getElementById("result3").firstChild.data += " FAILURE: '" + req.responseText + "'";
    }

    function test4() {
        // Test when content-type is set with multiple charsets and other attributes.
        req = new XMLHttpRequest;
        req.open("POST", "print-content-type.cgi", false);

        req.setRequestHeader("Content-Type", "application/xml; charset=KOI8-R; charset=UTF-8; charset=iso-8859-1; KOI8-R");
        req.send("");

        document.getElementById("result4").firstChild.data = "Test4 (setRequestHeader was called with multiple charsets and other attributes):";
        if (req.responseText == "application/xml; charset=UTF-8; charset=UTF-8; charset=UTF-8; KOI8-R\n")
            document.getElementById("result4").firstChild.data += " SUCCESS";
        else
            document.getElementById("result4").firstChild.data += " FAILURE: '" + req.responseText + "'";
    }

    if (window.testRunner)
        testRunner.dumpAsText();

    test1();
    test2();
    test3();
    test4();

</script>
</body>
</html>