|
1 /* |
|
2 * worker_helper.js |
|
3 * bug 764234 tests |
|
4 */ |
|
5 function runTestInWorker(files) { |
|
6 function workerRun() { |
|
7 var tests = []; |
|
8 var asserts; |
|
9 test = function(func, msg) { |
|
10 asserts = []; |
|
11 tests.push({asserts: asserts, msg: msg}); |
|
12 } |
|
13 assert_equals = function(result, expected, msg) { |
|
14 asserts.push(["assert_equals", result, expected, msg]); |
|
15 }; |
|
16 assert_true = function(condition, msg) { |
|
17 asserts.push(["assert_true", condition, msg]); |
|
18 }; |
|
19 assert_unreached = function(condition, msg) { |
|
20 asserts.push(["assert_unreached", condition, msg]); |
|
21 }; |
|
22 onmessage = function(event) { |
|
23 importScripts.apply(self, event.data); |
|
24 runTest(); |
|
25 postMessage(tests); |
|
26 }; |
|
27 } |
|
28 |
|
29 var url = URL.createObjectURL(new Blob([ |
|
30 runTest.toString(), "\n\n", |
|
31 "(", workerRun.toString(), ")();" |
|
32 ])); |
|
33 var worker = new Worker(url); |
|
34 var base = location.toString().replace(/\/[^\/]*$/,"/"); |
|
35 worker.postMessage(files.map(function(f) { return base + f; })); |
|
36 worker.onmessage = function(event) { |
|
37 URL.revokeObjectURL(url); |
|
38 event.data.forEach(function(t) { |
|
39 test(function() { |
|
40 t.asserts.forEach(function(a) { |
|
41 func = a.shift(); |
|
42 self[func].apply(self, a); |
|
43 }); |
|
44 }, "worker " + t.msg); |
|
45 }); |
|
46 done(); |
|
47 }; |
|
48 } |