Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
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">
19 </div>
20 <pre id="test">
21 <script class="testbody" language="javascript">
24 var messageCount = 0;
25 var intervalCount = 0;
27 var interval;
29 var worker;
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");
37 worker.terminate();
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");
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");
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");
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");
75 ok(worker.onmessage === messageListener,
76 "Correct listener after terminate");
78 worker.onmessage = function(event) { }
80 interval = setInterval(testCount, 1000);
81 }
82 }
84 function testCount() {
85 is(messageCount, 21, "Received another message after terminated!");
86 if (intervalCount++ == 5) {
87 clearInterval(interval);
88 SimpleTest.finish();
89 }
90 }
92 worker = new Worker("terminate_worker.js");
93 worker.onmessage = messageListener;
95 SimpleTest.waitForExplicitFinish();
97 </script>
98 </pre>
99 </body>
100 </html>