test_terminate.html (2285B)
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 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); 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); 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(msg) { } 79 80 interval = setInterval(testCount, 1000); 81 } 82 } 83 84 function testCount() { 85 is(messageCount, 20, "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>