diff options
Diffstat (limited to 'dom/abort/tests/test_abort_controller_fetch.html')
-rw-r--r-- | dom/abort/tests/test_abort_controller_fetch.html | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/dom/abort/tests/test_abort_controller_fetch.html b/dom/abort/tests/test_abort_controller_fetch.html new file mode 100644 index 0000000000..2342ecda89 --- /dev/null +++ b/dom/abort/tests/test_abort_controller_fetch.html @@ -0,0 +1,80 @@ +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<!DOCTYPE HTML> +<html> +<head> + <title>Test AbortController in Fetch API</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<script class="testbody" type="text/javascript"> + +function testAbortedFetch() { + var ac = new AbortController(); + ac.abort(); + + fetch("slow.sjs", { signal: ac.signal }).then(() => { + ok(false, "Fetch should not return a resolved promise"); + }, e => { + is(e.name, "AbortError", "We have an abort error"); + }).then(next); +} + +function testFetchAndAbort() { + var ac = new AbortController(); + + var p = fetch("slow.sjs", { signal: ac.signal }); + ac.abort(); + + p.then(() => { + ok(false, "Fetch should not return a resolved promise"); + }, e => { + is(e.name, "AbortError", "We have an abort error"); + }).then(next); +} + +function testWorkerAbortedFetch() { + var w = new Worker("worker_abort_controller_fetch.js"); + w.onmessage = function(e) { + ok(e.data, "Abort + Fetch works in workers"); + next(); + }; + w.postMessage("testWorkerAbortedFetch"); +} + +function testWorkerFetchAndAbort() { + var w = new Worker("worker_abort_controller_fetch.js"); + w.onmessage = function(e) { + ok(e.data, "Abort + Fetch works in workers"); + next(); + }; + w.postMessage("testWorkerFetchAndAbort"); +} + +var steps = [ + // fetch + signaling + testAbortedFetch, + testFetchAndAbort, + testWorkerAbortedFetch, + testWorkerFetchAndAbort, +]; + +function next() { + if (!steps.length) { + SimpleTest.finish(); + return; + } + + var step = steps.shift(); + step(); +} + +SimpleTest.waitForExplicitFinish(); +next(); + +</script> +</body> +</html> |