summaryrefslogtreecommitdiffstats
path: root/dom/base/test/file_bug503481b_inner.html
blob: 6b34bc47b69b54751038418faebeed28ea0c0c42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!DOCTYPE HTML>
<html>
<head>
<!-- Async script that isn't preloaded -->
<script async src="file_bug503481.sjs?blockOn=R&body=runFirst();"></script>
<script>
firstRan = false;
secondRan = false;
thirdRan = false;
forthRan = false;
function runFirst() {
  firstRan = true;
}
function runThird() {
  parent.is(forthRan, false, "forth should still be blocked");
  unblock("T");
  thirdRan = true;
}
function runForth() {
  forthRan = true;
}

function done() {
  parent.is(firstRan, true, "first should have run by onload");
  parent.is(secondRan, true, "second should have run by onload");
  parent.is(thirdRan, true, "third should have run by onload");
  parent.is(forthRan, true, "forth should have run by onload");
  parent.SimpleTest.finish();
}

var reqs = [];
function unblock(s) {
  xhr = new XMLHttpRequest();
  xhr.open("GET", "file_bug503481.sjs?unblock=" + s);
  xhr.send();
  reqs.push(xhr);
}


parent.is(firstRan, false, "First async script shouldn't have run");
unblock("R");
</script>

<!-- test that inline async isn't actually async -->
<script async>
secondRan = true;
</script>
<script>
parent.is(secondRan, true, "Second script shouldn't be async");
</script>

<!-- test that setting both defer and async treats the script as async -->
<script defer async src="file_bug503481.sjs?blockOn=S&body=runThird();"></script>
<script>
parent.is(thirdRan, false, "third should not have run yet");
unblock("S");
</script>
<script src="file_bug503481.sjs?blockOn=T&body=runForth();"></script>

</head>

<body onload="done()">