<!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>
