dom/workers/test/test_terminate.html

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:db9b5424345c
1 <!--
2 Any copyright is dedicated to the Public Domain.
3 http://creativecommons.org/publicdomain/zero/1.0/
4 -->
5 <!DOCTYPE HTML>
6 <html>
7 <!--
8 Tests of DOM Worker terminate feature
9 -->
10 <head>
11 <title>Test for DOM Worker Navigator</title>
12 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
13 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
14 </head>
15 <body>
16 <p id="display"></p>
17 <div id="content" style="display: none">
18
19 </div>
20 <pre id="test">
21 <script class="testbody" language="javascript">
22
23
24 var messageCount = 0;
25 var intervalCount = 0;
26
27 var interval;
28
29 var worker;
30
31 function messageListener(event) {
32 is(event.data, "Still alive!", "Correct message!");
33 if (messageCount++ == 20) {
34 ok(worker.onmessage === messageListener,
35 "Correct listener before terminate");
36
37 worker.terminate();
38
39 var exception = false;
40 try {
41 worker.addEventListener("message", messageListener, false);
42 }
43 catch (e) {
44 exception = true;
45 }
46 is(exception, false, "addEventListener didn't throw after terminate");
47
48 exception = false;
49 try {
50 worker.removeEventListener("message", messageListener, false);
51 }
52 catch (e) {
53 exception = true;
54 }
55 is(exception, false, "removeEventListener didn't throw after terminate");
56
57 exception = false;
58 try {
59 worker.postMessage("foo");
60 }
61 catch (e) {
62 exception = true;
63 }
64 is(exception, false, "postMessage didn't throw after terminate");
65
66 exception = false;
67 try {
68 worker.terminate();
69 }
70 catch (e) {
71 exception = true;
72 }
73 is(exception, false, "terminate didn't throw after terminate");
74
75 ok(worker.onmessage === messageListener,
76 "Correct listener after terminate");
77
78 worker.onmessage = function(event) { }
79
80 interval = setInterval(testCount, 1000);
81 }
82 }
83
84 function testCount() {
85 is(messageCount, 21, "Received another message after terminated!");
86 if (intervalCount++ == 5) {
87 clearInterval(interval);
88 SimpleTest.finish();
89 }
90 }
91
92 worker = new Worker("terminate_worker.js");
93 worker.onmessage = messageListener;
94
95 SimpleTest.waitForExplicitFinish();
96
97 </script>
98 </pre>
99 </body>
100 </html>

mercurial