browser_dbg_listworkers.js (2235B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 Services.prefs.setBoolPref("security.allow_eval_with_system_principal", true); 7 8 registerCleanupFunction(() => { 9 Services.prefs.clearUserPref("security.allow_eval_with_system_principal"); 10 }); 11 12 var TAB_URL = EXAMPLE_URL + "doc_listworkers-tab.html"; 13 var WORKER1_URL = "code_listworkers-worker1.js"; 14 var WORKER2_URL = "code_listworkers-worker2.js"; 15 16 add_task(async function test() { 17 const tab = await addTab(TAB_URL); 18 const target = await createAndAttachTargetForTab(tab); 19 20 let { workers } = await listWorkers(target); 21 is(workers.length, 0); 22 23 let onWorkerListChanged = waitForWorkerListChanged(target); 24 await SpecialPowers.spawn(tab.linkedBrowser, [WORKER1_URL], workerUrl => { 25 content.worker1 = new content.Worker(workerUrl); 26 }); 27 await onWorkerListChanged; 28 29 ({ workers } = await listWorkers(target)); 30 is(workers.length, 1); 31 is(workers[0].url, WORKER1_URL); 32 33 onWorkerListChanged = waitForWorkerListChanged(target); 34 await SpecialPowers.spawn(tab.linkedBrowser, [WORKER2_URL], workerUrl => { 35 content.worker2 = new content.Worker(workerUrl); 36 }); 37 await onWorkerListChanged; 38 39 ({ workers } = await listWorkers(target)); 40 is(workers.length, 2); 41 is(workers[0].url, WORKER1_URL); 42 is(workers[1].url, WORKER2_URL); 43 44 onWorkerListChanged = waitForWorkerListChanged(target); 45 await SpecialPowers.spawn(tab.linkedBrowser, [WORKER2_URL], () => { 46 content.worker1.terminate(); 47 }); 48 await onWorkerListChanged; 49 50 ({ workers } = await listWorkers(target)); 51 is(workers.length, 1); 52 is(workers[0].url, WORKER2_URL); 53 54 onWorkerListChanged = waitForWorkerListChanged(target); 55 await SpecialPowers.spawn(tab.linkedBrowser, [WORKER2_URL], () => { 56 content.worker2.terminate(); 57 }); 58 await onWorkerListChanged; 59 60 ({ workers } = await listWorkers(target)); 61 is(workers.length, 0); 62 63 await target.destroy(); 64 finish(); 65 }); 66 67 function listWorkers(targetFront) { 68 info("Listing workers."); 69 return targetFront.listWorkers(); 70 } 71 72 function waitForWorkerListChanged(targetFront) { 73 info("Waiting for worker list to change."); 74 return targetFront.once("workerListChanged"); 75 }