test_workers_clone_error.js (1170B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 // Worker must be loaded from a chrome:// uri, not a file:// 5 // uri, so we first need to load it. 6 var WORKER_SOURCE_URI = "chrome://workers/content/worker.js"; 7 do_load_manifest("data/chrome.manifest"); 8 9 function talk_with_worker(worker) { 10 return new Promise((resolve, reject) => { 11 worker.onmessage = function (event) { 12 let success = true; 13 if (event.data == "OK") { 14 resolve(); 15 } else { 16 success = false; 17 reject(event); 18 } 19 Assert.ok(success); 20 worker.terminate(); 21 }; 22 worker.onerror = function (event) { 23 let error = new Error(event.message, event.filename, event.lineno); 24 worker.terminate(); 25 reject(error); 26 }; 27 28 try { 29 // eslint-disable-next-line no-eval 30 eval("/"); 31 } catch (e) { 32 worker.postMessage(new ClonedErrorHolder(e)); 33 } 34 }); 35 } 36 37 add_task(function test_chrome_worker() { 38 return talk_with_worker(new ChromeWorker(WORKER_SOURCE_URI)); 39 }); 40 41 add_task(function test_worker() { 42 return talk_with_worker(new Worker(WORKER_SOURCE_URI)); 43 });