<html>
<head>
<title>Test case for bug 36156</title>
</head>
<body>
<p> Test case for <a href="https://bugs.webkit.org/show_bug.cgi?id=36156"> bug 36156</a>: XHR 'progress' event code assumes wrongly that expectedLength >= 0</p>
<p> Verify that the progress event total property is 0 when the expected overall length can't be computed.<p>
<p>PASS should appear below:</p>
<p id=console></p>
<script type="text/javascript">
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function log(message)
{
    document.getElementById('console').appendChild(document.createTextNode(message + '\n'));
}

function test()
{
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "resources/chunked-transfer.py", true);

    xhr.onprogress = function(e) {
        if (e.loaded == 4 && e.total == 0 && !e.lengthComputable)
            log("PASS");
        else if (e.total != 0 && !e.lengthComputable)
            log("FAIL: XMLHttpRequestProgressEvent lengthComputable=false but total is non-zero: " + e.total);
    }

    xhr.onreadystatechange = function(e) {
        if (xhr.readyState == xhr.DONE) 
        {
            if (window.testRunner)
                testRunner.notifyDone();
        }
    }

    xhr.send();
}

test();
</script>
</body>
