OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="/js-test-resources/js-test.js"></script> | 4 <script src="/js-test-resources/js-test.js"></script> |
5 <script> | 5 <script> |
6 function loadScript(url, async, onload, onerror) { | 6 function loadScript(url, async, onload, onerror) { |
7 var script = document.createElement("script"); | 7 var script = document.createElement("script"); |
8 script.async = async; | 8 script.async = async; |
9 script.onload = onload; | 9 script.onload = onload; |
10 if (onerror) | 10 if (onerror) |
11 script.onerror = onerror; | 11 script.onerror = onerror; |
12 script.src = url; | 12 script.src = url; |
13 document.head.appendChild(script); | 13 document.head.appendChild(script); |
14 } | 14 } |
15 </script> | 15 </script> |
16 </head> | 16 </head> |
17 <body> | 17 <body> |
18 <script> | 18 <script> |
19 description("Slow scripts that fail to load should not dispatch multiple error e
vents"); | 19 description("Slow scripts that fail to load should not dispatch multiple error e
vents"); |
20 | 20 |
21 window.jsTestIsAsync = true; | 21 window.jsTestIsAsync = true; |
22 | 22 |
23 if (window.testRunner) { | 23 if (window.testRunner) { |
24 testRunner.dumpAsText(); | 24 testRunner.dumpAsText(); |
25 testRunner.waitUntilDone(); | 25 testRunner.waitUntilDone(); |
26 } | 26 } |
27 | 27 |
28 var firstOnErrorHandlerHasRun = false; | 28 var firstOnErrorHandlerCount = 0; |
| 29 var secondOnErrorHandlerCount = 0; |
| 30 function verifyAndFinish() { |
| 31 shouldBe("firstOnErrorHandlerCount", "1"); |
| 32 shouldBe("secondOnErrorHandlerCount", "1"); |
| 33 finishJSTest(); |
| 34 }; |
| 35 |
29 function failedFirst() { | 36 function failedFirst() { |
30 shouldBeFalse("firstOnErrorHandlerHasRun"); | 37 firstOnErrorHandlerCount++; |
31 firstOnErrorHandlerHasRun = true; | |
32 // Issue another script load so as to have the script runner | 38 // Issue another script load so as to have the script runner |
33 // revisit its script queue. This should not result in this | 39 // revisit its script queue. This should not result in this |
34 // onerror handler running again. | 40 // onerror handler running again. |
35 loadScript("resources/success.js?1", true); | 41 var continuation = secondOnErrorHandlerCount ? verifyAndFinish : undefined; |
| 42 loadScript("resources/success.js?1", true, continuation); |
36 } | 43 } |
37 | 44 |
38 var secondOnErrorHandlerHasRun = false; | |
39 function failedSecond() { | 45 function failedSecond() { |
40 shouldBeTrue("firstOnErrorHandlerHasRun"); | 46 secondOnErrorHandlerCount++; |
41 shouldBeFalse("secondOnErrorHandlerHasRun"); | 47 var continuation = firstOnErrorHandlerCount ? verifyAndFinish : undefined; |
42 secondOnErrorHandlerHasRun = true; | 48 loadScript("resources/success.js?2", true, continuation); |
43 loadScript("resources/success.js?2", true, finishJSTest); | |
44 } | 49 } |
45 | 50 |
46 function unexpectedLoad() { | 51 function unexpectedLoad() { |
47 testFailed("Script should not have loaded"); | 52 testFailed("Script should not have loaded"); |
48 finishJSTest(); | 53 finishJSTest(); |
49 } | 54 } |
50 | 55 |
51 loadScript("resources/success.js?3", false); | 56 loadScript("resources/success.js?3", false); |
52 loadScript("resources/slow-nonexisting-script.php?sleep=1", false, unexpectedLoa
d, failedFirst); | 57 loadScript("resources/slow-nonexisting-script.php?sleep=1", false, unexpectedLoa
d, failedFirst); |
53 loadScript("resources/slow-nonexisting-script.php?sleep=2", false, unexpectedLoa
d, failedSecond); | 58 loadScript("resources/slow-nonexisting-script.php?sleep=2", false, unexpectedLoa
d, failedSecond); |
54 </script> | 59 </script> |
55 </body> | 60 </body> |
56 </html> | 61 </html> |
OLD | NEW |