diff options
Diffstat (limited to 'test/wpt/tests/xhr/response-data-progress.htm')
-rw-r--r-- | test/wpt/tests/xhr/response-data-progress.htm | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/wpt/tests/xhr/response-data-progress.htm b/test/wpt/tests/xhr/response-data-progress.htm new file mode 100644 index 0000000..78e7494 --- /dev/null +++ b/test/wpt/tests/xhr/response-data-progress.htm @@ -0,0 +1,52 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>XMLHttpRequest: progress events grow response body size</title> + <meta name="timeout" content="long"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <link rel="help" href="https://xhr.spec.whatwg.org/#the-send()-method" data-tested-assertations="following::a[contains(@href,'#make-progress-notifications')]/.. following::a[contains(@href,'#make-progress-notifications')]/../following:p[1]" /> + <link rel="help" href="https://xhr.spec.whatwg.org/#make-progress-notifications" data-tested-assertations=".." /> + <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-onprogress" data-tested-assertations="/../.." /> + <link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-progress" data-tested-assertations="/../.." /> +</head> + +<div id="log"></div> + +<script> + +function doTest(test, expectedLengthComputable, expectedTotal, url) { + var client = new XMLHttpRequest(); + var lastSize = 0; + + client.onprogress = test.step_func(function(e) { + assert_equals(e.total, expectedTotal); + assert_equals(e.lengthComputable, expectedLengthComputable); + + var currentSize = client.responseText.length; + + if (lastSize > 0 && currentSize > lastSize) { + // growth from a positive size to bigger! + test.done(); + } + + lastSize = currentSize; + }); + + client.onreadystatechange = test.step_func(function() { + if (client.readyState === 4) { + assert_unreached("onprogress not called multiple times, or response body did not grow."); + } + }); + + client.open("GET", url); + client.send(null); + return client; +} + +async_test(function () { doTest(this, false, 0, "resources/trickle.py?count=6&delay=150"); }, + document.title + ', unknown content-length'); +async_test(function () { doTest(this, true, 78, "resources/trickle.py?count=6&delay=150&specifylength=1"); }, + document.title + ', known content-length'); +</script> |