| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../../resources/js-test.js"></script> |
| <script> |
| function loadScript(url, async, onload, onerror) { |
| var script = document.createElement("script"); |
| script.async = async; |
| script.onload = onload; |
| if (onerror) |
| script.onerror = onerror; |
| script.src = url; |
| document.head.appendChild(script); |
| } |
| </script> |
| </head> |
| <body> |
| <script> |
| description("Script that fails to load should not dispatch multiple error events"); |
| |
| window.jsTestIsAsync = true; |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| var numberOfTimesOnErrorHandlerHasRun = 0; |
| function step2() { |
| shouldBeZero("numberOfTimesOnErrorHandlerHasRun"); |
| numberOfTimesOnErrorHandlerHasRun++; |
| // Issue another script load so as to have the script runner |
| // revisit its script queue. It must not include the sync script |
| // that triggered the dispatch of an error event and the running of |
| // this handler. |
| loadScript("resources/script-load.js", true, finishJSTest); |
| } |
| |
| function unexpectedLoad() { |
| testFailed("Script should not have loaded"); |
| finishJSTest(); |
| } |
| |
| loadScript("non-existing.js", false, unexpectedLoad, step2); |
| </script> |
| </body> |
| </html> |