1
0
Fork 0
firefox/dom/workers/test/threadTimeouts_worker.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

45 lines
1.1 KiB
JavaScript

/**
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
var gTimeoutId;
var gTimeoutCount = 0;
var gIntervalCount = 0;
function timeoutFunc() {
if (++gTimeoutCount > 1) {
throw new Error("Timeout called more than once!");
}
postMessage("timeoutFinished");
}
function intervalFunc() {
if (++gIntervalCount == 2) {
postMessage("intervalFinished");
}
}
function messageListener(event) {
switch (event.data) {
case "startTimeout":
gTimeoutId = setTimeout(timeoutFunc, 2000);
clearTimeout(gTimeoutId);
gTimeoutId = setTimeout(timeoutFunc, 2000);
break;
case "startInterval":
gTimeoutId = setInterval(intervalFunc, 2000);
break;
case "cancelInterval":
clearInterval(gTimeoutId);
postMessage("intervalCanceled");
break;
case "startExpression":
// eslint-disable-next-line no-implied-eval
setTimeout("this.postMessage('expressionFinished');", 2000);
break;
default:
throw "Bad message: " + event.data;
}
}
addEventListener("message", messageListener, false);