Index: LayoutTests/fast/workers/worker-error-handler-window.html |
diff --git a/LayoutTests/fast/workers/worker-error-handler-window.html b/LayoutTests/fast/workers/worker-error-handler-window.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7da8711bae5d149886687eaff323daad81f79f14 |
--- /dev/null |
+++ b/LayoutTests/fast/workers/worker-error-handler-window.html |
@@ -0,0 +1,60 @@ |
+<!DOCTYPE html> |
+<html> |
+<body> |
+<p>Testing worker error handler invocation order.</p> |
+<div id="result"></div> |
+<script type="text/javascript"> |
+var windowErrorHandlerInvoked = false; |
+var workerErrorHandlerInvoked = false; |
+var workerGlobalScopeErrorHandlerInvoked = false; |
+function log(message) |
+{ |
+ document.getElementById("result").innerHTML += message + "</br>"; |
+} |
+ |
+if (window.testRunner) { |
+ testRunner.dumpAsText(); |
+ testRunner.waitUntilDone(); |
+} |
+ |
+window.onerror = function (e) { |
+ windowErrorHandlerInvoked = true; |
+ log("PASS: Window error handler invoked."); |
+ setTimeout(checkErrorStatus(), 100); |
+} |
+ |
+var worker = new Worker('resources/worker-error-handler-worker.js'); |
+worker.postMessage("Start"); |
+ |
+worker.onmessage = function(evt) { |
+ if (evt.data == "DONE") { |
+ } |
+ else if (evt.data == "workerGlobalScopeErrorHandlerInvoked") { |
+ workerGlobalScopeErrorHandlerInvoked = true; |
+ log("PASS: WorkerGlobalScope error handler invoked."); |
+ } |
+} |
+worker.onerror = function (e) { |
+ workerErrorHandlerInvoked = true; |
+ log("PASS: Worker error handler invoked."); |
+ // Letting the error event propogate, now it should |
+ // be handled by the window.onerror error handler. |
+ return false; |
+} |
+ |
+ |
+function checkErrorStatus() { |
+ if(workerGlobalScopeErrorHandlerInvoked |
+ && windowErrorHandlerInvoked && workerErrorHandlerInvoked) { |
+ log("TEST PASS."); |
+ } |
+ else { |
+ log("TEST FAIL.") |
+ } |
+ log("DONE.") |
+ if (window.testRunner) |
+ testRunner.notifyDone(); |
+} |
+</script> |
+</body> |
+</html> |