Skip to content

Commit

Permalink
Merge pull request web-platform-tests#967 from w3c/hallvors/sync-bloc…
Browse files Browse the repository at this point in the history
…ks-async

New test: sync request blocks async
  • Loading branch information
zcorpan committed Aug 18, 2014
2 parents e898c25 + 3382690 commit 752685a
Showing 1 changed file with 66 additions and 0 deletions.
66 changes: 66 additions & 0 deletions XMLHttpRequest/send-sync-blocks-async.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<!DOCTYPE html>
<html>
<head>
<!-- This behaviour is not explicitly spelled out in the spec.
It does say "queue tasks" under the "if the synchronous flag is unset" header in point 10 of the "send" algorithm.. -->
<link rel="help" href="http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-send()-method" data-tested-assertations="following-sibling::ol/li[10]/dl/dd/dl/dd[2]/p[3]" />
<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 = function()
{
test.step(function()
{
actual.push('async ' + xhr_async.readyState)
if(xhr_async.readyState === 4 && actual.indexOf('sync 4')>-1){
VerifyResult()
}

});
};
xhr_async.send()

setTimeout(function(){
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 = function()
{
test.step(function()
{
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>

0 comments on commit 752685a

Please sign in to comment.