|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 Components.utils.import("resource://gre/modules/Promise.jsm"); |
|
5 |
|
6 let WORKER_SOURCE_URI = "chrome://test_lz4/content/worker_lz4.js"; |
|
7 do_load_manifest("data/chrome.manifest"); |
|
8 |
|
9 function run_test() { |
|
10 run_next_test(); |
|
11 } |
|
12 |
|
13 |
|
14 add_task(function() { |
|
15 let worker = new ChromeWorker(WORKER_SOURCE_URI); |
|
16 let deferred = Promise.defer(); |
|
17 worker.onmessage = function(event) { |
|
18 let data = event.data; |
|
19 switch (data.kind) { |
|
20 case "do_check_true": |
|
21 try { |
|
22 do_check_true(data.args[0]); |
|
23 } catch (ex) { |
|
24 // Ignore errors |
|
25 } |
|
26 return; |
|
27 case "do_test_complete": |
|
28 deferred.resolve(); |
|
29 worker.terminate(); |
|
30 break; |
|
31 case "do_print": |
|
32 do_print(data.args[0]); |
|
33 } |
|
34 }; |
|
35 worker.onerror = function(event) { |
|
36 let error = new Error(event.message, event.filename, event.lineno); |
|
37 worker.terminate(); |
|
38 deferred.reject(error); |
|
39 }; |
|
40 worker.postMessage("START"); |
|
41 return deferred.promise; |
|
42 }); |
|
43 |