blob: 7aaac03d2844751ee2aaa3f4ca27d4c8475c29f6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/**
* 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":
setTimeout("this.postMessage('expressionFinished');", 2000);
break;
default:
throw "Bad message: " + event.data;
}
}
addEventListener("message", messageListener, false);
|