<html>
<script>
function testInvalidHeaderName() {
    var result = 'FAILURE';

    var req = new XMLHttpRequest();
    req.open('GET', window.location, true)
    
    try {
        req.setRequestHeader("host:", "example.com");
    } catch (e) {
        if (e.code == DOMException.SYNTAX_ERR)
            result = 'SUCCESS';
    }
    
    debug('testInvalidHeaderName: ' + result);    
}

function testInvalidHeaderValues() {
    var result = 'FAILURE';
    var successCount = 0;

    var req = new XMLHttpRequest();
    req.open('GET', window.location, true)
    
    try {
        req.setRequestHeader("X-Hack", "Test\r\nHost: www.example.com\r\n\r\nGET / HTTP/1.1");
    } catch (e) {
        if (e.code == DOMException.SYNTAX_ERR)
            successCount++;
    }

    try {
        req.setRequestHeader("X-Hack", "Test\nHost: www.example.com\n\nGET / HTTP/1.1");
    } catch (e) {
        if (e.code == DOMException.SYNTAX_ERR)
            successCount++;
    }

    try {
        req.setRequestHeader("X-Hack", "Test\rHost: www.example.com\r\rGET / HTTP/1.1");
    } catch (e) {
        if (e.code == DOMException.SYNTAX_ERR)
            successCount++;
    }
    
    if (successCount == 3)
        result = 'SUCCESS';
        
    debug('testInvalidHeaderValues: ' + result);    
}

function debug(str) {
    var console = document.getElementById('console');
    var li = document.createElement('li');
    li.appendChild(document.createTextNode(str));
    console.appendChild(li);
}

function runTest() {
    if (window.testRunner)
        testRunner.dumpAsText();

    testInvalidHeaderName();
    testInvalidHeaderValues();
}
</script>
<body onload="runTest()">
    This tests that setting invalid header names, values and using an invalid method causes XMLHttpRequest to throw the appropriate exceptions.
</body>
<ul id="console">
</ul>
</html>
