66 lines
1.9 KiB
HTML
66 lines
1.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
let testWorker = null;
|
|
|
|
function createWorker() {
|
|
testWorker = new Worker("resources/worker-echo.js");
|
|
testWorker.addEventListener("message", (event) => {
|
|
let {echo, data} = event.data;
|
|
console.assert(echo, data);
|
|
TestPage.dispatchEventToFrontend(data);
|
|
});
|
|
testWorker.postMessage("WorkerCreated");
|
|
}
|
|
|
|
function terminateWorker() {
|
|
testWorker.postMessage("WorkerTerminated");
|
|
testWorker.terminate();
|
|
testWorker = null;
|
|
}
|
|
|
|
function test()
|
|
{
|
|
InspectorTest.addEventListener("WorkerTerminated", (event) => {
|
|
InspectorTest.fail("Should not dispatch any events after a Worker is terminated.");
|
|
});
|
|
|
|
Promise.resolve()
|
|
.then(() => {
|
|
InspectorTest.log("Creating worker...");
|
|
return Promise.all([
|
|
InspectorTest.awaitEvent("WorkerCreated"),
|
|
InspectorTest.evaluateInPage(`createWorker()`),
|
|
]);
|
|
})
|
|
.then(() => {
|
|
InspectorTest.log("Terminating worker...");
|
|
return InspectorTest.evaluateInPage(`terminateWorker()`);
|
|
})
|
|
.then(() => {
|
|
InspectorTest.log("Creating worker...");
|
|
return Promise.all([
|
|
InspectorTest.awaitEvent("WorkerCreated"),
|
|
InspectorTest.evaluateInPage(`createWorker()`),
|
|
]);
|
|
})
|
|
.then(() => {
|
|
InspectorTest.log("Terminating worker...");
|
|
return InspectorTest.evaluateInPage(`terminateWorker()`);
|
|
})
|
|
.then(() => {
|
|
InspectorTest.pass("Should not crash.");
|
|
})
|
|
.finally(() => {
|
|
InspectorTest.completeTest();
|
|
});
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Test to ensure that any queued messages are not dispatched after terminate is called, which would cause a crash due to the InjectedScript throwing a TerminatedExecutionError when it's evaluated.</p>
|
|
</body>
|
|
</html>
|