blob: 83877c8f6127f1e5e1e706b30bbfb5e140ed3a02 [file] [log] [blame]
<html>
<head>
<title> Test case for bug 18655 </title>
</head>
<body>
<p> Test case for Bug <a href="https://bugs.webkit.org/show_bug.cgi?id=18655">18655</a>: [XHR] onProgress event
needs to be dispatched according to what the specification states </p>
<p> This test verify that we "dispatch a progress event called progress about
every 50ms or for every byte received, whichever is least frequent".</p>
<p> You should see a sequence of 5 PASSED. </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));
document.getElementById("console").appendChild(document.createElement("br"));
}
var testsCompleted = 0;
function test(iteration, delay, compare, testDescription)
{
var count = 0;
var sawReadyStateDONE = false;
function onProgress(e) {
++count;
if (sawReadyStateDONE)
log("FAILED: saw 'progress' event after readystate 'DONE' event for " + testDescription);
}
function onReadyState(e) {
if (this.readyState == 4) {
sawReadyStateDONE = true;
var passed = compare(count, iteration);
log(passed ? "PASSED" : "FAILED (count was " + count + ") for " + testDescription);
++testsCompleted;
if (testsCompleted == 5) {
if (window.testRunner)
testRunner.notifyDone();
}
}
}
var req = new XMLHttpRequest();
req.onprogress = onProgress;
req.onreadystatechange = onReadyState;
req.open("GET", "resources/download-with-delay.php?iteration=" + iteration + "&delay=" + delay, true);
req.send(null);
}
try {
// Number of chunks to send, delay between chunks
var strictTests = [ 2, 80,
1, 1000,
2, 50 ];
function compareStrict(count, iteration)
{
return count == iteration;
}
var i = 0;
while (strictTests.length) {
var iteration = strictTests.shift();
var delay = strictTests.shift();
test(iteration, delay, compareStrict, "strict test " + ++i);
}
// Number of chunks to send, delay between chunks
var throttledTests = [ 5, 20,
6, 30 ];
function compareThrottled(count, iteration)
{
return count < iteration;
}
i = 0;
while(throttledTests.length) {
var iteration = throttledTests.shift();
var delay = throttledTests.shift();
test(iteration, delay, compareThrottled, "throttled test " + ++i);
}
} catch(e) {
log("FAILED: exception raised: " + e.message);
}
</script>
</body>
</html>