68 lines
2.1 KiB
HTML
68 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/protocol-test.js"></script>
|
|
<script>
|
|
let worker;
|
|
let expectingWorkerMessage = false;
|
|
|
|
function createWorker() {
|
|
log("PAGE: Creating the worker.");
|
|
worker = new Worker("resources/worker-1.js");
|
|
worker.postMessage("hello");
|
|
worker.onmessage = function(event) {
|
|
if (expectingWorkerMessage) {
|
|
log("PASS: Worker recovered.");
|
|
testRunner.notifyDone();
|
|
} else {
|
|
log("FAIL: Worker should have been paused!");
|
|
log(event.data);
|
|
testRunner.notifyDone();
|
|
}
|
|
}
|
|
}
|
|
|
|
function closeInspectorFrontendAndCompleteTest() {
|
|
log("PAGE: Closing the inspector.");
|
|
expectingWorkerMessage = true;
|
|
window.internals.closeDummyInspectorFrontend();
|
|
setTimeout(() => {
|
|
log("FAIL: Never received message!");
|
|
testRunner.notifyDone();
|
|
}, 1000);
|
|
}
|
|
|
|
function test()
|
|
{
|
|
let workerId;
|
|
|
|
let suite = ProtocolTest.createAsyncSuite("Worker.CreateAndTerminate");
|
|
|
|
suite.addTestCase({
|
|
name: "Worker.enable",
|
|
description: "Worker.enable informs the frontend of the two existing Workers",
|
|
test(resolve, reject) {
|
|
InspectorProtocol.awaitCommand({method: "Worker.enable", params: {}});
|
|
ProtocolTest.evaluateInPage("createWorker()");
|
|
InspectorProtocol.awaitEvent({event: "Worker.workerCreated"}).then((messageObject) => {
|
|
ProtocolTest.pass("Worker.workerCreated");
|
|
|
|
// Give the worker 50ms to prove it is waiting for Inspection initialization
|
|
// and is unable to message the page. Closing the inspector, the Worker should
|
|
// recover and resume execution.
|
|
setTimeout(() => {
|
|
ProtocolTest.evaluateInPage("closeInspectorFrontendAndCompleteTest()");
|
|
}, 50);
|
|
}).catch(reject);
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Tests that a Worker recovers and resumes if Web Inspector closes before sending Worker.initialized.</p>
|
|
</body>
|
|
</html>
|