4 Tests of DOM Worker Threads (Bug 437152)
7 <title>Test for DOM Worker Threads (Bug
437152)
</title>
8 <script type=
"text/javascript" src=
"/MochiKit/MochiKit.js"></script>
9 <script type=
"text/javascript" src=
"/tests/SimpleTest/SimpleTest.js"></script>
10 <link rel=
"stylesheet" type=
"text/css" href=
"/tests/SimpleTest/test.css" />
13 <a target=
"_blank" href=
"https://bugzilla.mozilla.org/show_bug.cgi?id=437152">DOM Worker Threads Bug
437152</a>
15 <div id=
"content" style=
"display: none">
19 <script class=
"testbody" type=
"text/javascript">
21 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
23 var prefs = Components.classes[
"@mozilla.org/preferences-service;1"].
24 getService(Components.interfaces.nsIPrefBranch);
25 //prefs.setIntPref(
"javascript.options.gczeal",
2);
27 var badWorkerScripts = [
29 "function messageListener(message, source) { " +
30 " for (var i = 0; i < 10) { } " +
35 "function messageListener(message, source) { " +
40 // Unhandled exception in body
41 "function messageListener(message, source) { " +
43 "throw new Error('Bah!'); " +
46 // Throwing message listener
47 "function messageListener(message, source) { " +
48 " throw 'Bad message: ' + message; " +
53 var expectedErrorCount = badWorkerScripts.length;
55 var pool = navigator.newWorkerPool();
57 pool.messageListener = function(message, source) {
58 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
60 prefs.setIntPref(
"javascript.options.gczeal",
0);
61 ok(false,
"Unexpected message");
65 var actualErrorCount =
0;
66 var failedWorkers = [];
68 pool.errorListener = function(error, source) {
69 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
71 if (failedWorkers.indexOf(source) != -
1) {
72 dump(
"Already seen worker: " + source +
"\n");
73 ok(false,
"Seen an extra error from this worker");
74 prefs.setIntPref(
"javascript.options.gczeal",
0);
79 failedWorkers.push(source);
82 if (actualErrorCount == expectedErrorCount) {
83 prefs.setIntPref(
"javascript.options.gczeal",
0);
88 for (var i =
0; i < expectedErrorCount; i++) {
89 var worker = pool.createWorker(badWorkerScripts[i]);
90 worker.postMessage(
"Hi");
93 SimpleTest.waitForExplicitFinish();