| <!DOCTYPE html> |
| <title>Uncaught error in shared worker should not propagate to window</title> |
| <link rel="help" href="https://html.spec.whatwg.org/multipage/workers.html#runtime-script-errors-2"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="support/SharedWorker-create-common.js"></script> |
| <script> |
| // Suppress the default handling of the error event so that a failure |
| // manifests as a failed test and not a harness error. |
| setup({ allow_uncaught_exception: true }); |
| |
| async_test(function(t) { |
| addEventListener("error", t.unreached_func("error event fired")); |
| var worker = createWorker(); |
| worker.postMessage("throw"); |
| worker.postMessage("ping"); |
| var pongs = 0; |
| worker.onmessage = function(evt) { |
| // Wait for response from ping - that's how we know we have thrown the exception. |
| if (evt.data == "PASS: Received ping message") { |
| pongs++; |
| if (pongs == 1) { |
| // Send another "ping" message and wait for the response before |
| // ending the test, so that any error propagation that is now |
| // in flight will have finished. |
| worker.postMessage("ping"); |
| } else { |
| t.done(); |
| } |
| } |
| }; |
| }); |
| </script> |