diff options
Diffstat (limited to 'testing/web-platform/tests/xhr/send-sync-blocks-async.htm')
-rw-r--r-- | testing/web-platform/tests/xhr/send-sync-blocks-async.htm | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/testing/web-platform/tests/xhr/send-sync-blocks-async.htm b/testing/web-platform/tests/xhr/send-sync-blocks-async.htm new file mode 100644 index 0000000000..74f08a59d6 --- /dev/null +++ b/testing/web-platform/tests/xhr/send-sync-blocks-async.htm @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <title>XMLHttpRequest: sync requests should block events on pending async requests</title> +</head> + +<body> + <div id="log"></div> + + <script type="text/javascript"> + var test = async_test(); + + var expect = ['sync 4', 'async 2', 'async 3', 'async 4'] + var actual = [] + + test.step(function() + { + var xhr_async = new XMLHttpRequest() + xhr_async.open('GET', 'resources/delay.py?ms=1000', true) // first launch an async request, completes in 1 second + xhr_async.onreadystatechange = test.step_func(() => { + actual.push('async ' + xhr_async.readyState) + if(xhr_async.readyState === 4 && actual.indexOf('sync 4')>-1){ + VerifyResult() + } + }); + xhr_async.send() + + test.step_timeout(() => { + var xhr_sync = new XMLHttpRequest(); + xhr_sync.open('GET', 'resources/delay.py?ms=2000', false) // here's a sync request that will take 2 seconds to finish + xhr_sync.onreadystatechange = test.step_func(() => { + actual.push('sync ' + xhr_sync.readyState) + if(xhr_sync.readyState === 4 && actual.indexOf('async 4')>-1){ + VerifyResult() + } + }); + xhr_sync.send() + }, 10); + + function VerifyResult() + { + test.step(function() + { + assert_array_equals(actual, expect); + test.done(); + }); + }; + }); + </script> +</body> +</html> |