diff options
Diffstat (limited to 'devtools/client/shared/test/browser_dbg_listworkers.js')
-rw-r--r-- | devtools/client/shared/test/browser_dbg_listworkers.js | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/devtools/client/shared/test/browser_dbg_listworkers.js b/devtools/client/shared/test/browser_dbg_listworkers.js new file mode 100644 index 0000000000..fcdcf8e5dd --- /dev/null +++ b/devtools/client/shared/test/browser_dbg_listworkers.js @@ -0,0 +1,75 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +Services.prefs.setBoolPref("security.allow_eval_with_system_principal", true); + +registerCleanupFunction(() => { + Services.prefs.clearUserPref("security.allow_eval_with_system_principal"); +}); + +var TAB_URL = EXAMPLE_URL + "doc_listworkers-tab.html"; +var WORKER1_URL = "code_listworkers-worker1.js"; +var WORKER2_URL = "code_listworkers-worker2.js"; + +add_task(async function test() { + const tab = await addTab(TAB_URL); + const target = await createAndAttachTargetForTab(tab); + + let { workers } = await listWorkers(target); + is(workers.length, 0); + + let onWorkerListChanged = waitForWorkerListChanged(target); + await SpecialPowers.spawn(tab.linkedBrowser, [WORKER1_URL], workerUrl => { + content.worker1 = new content.Worker(workerUrl); + }); + await onWorkerListChanged; + + ({ workers } = await listWorkers(target)); + is(workers.length, 1); + is(workers[0].url, WORKER1_URL); + + onWorkerListChanged = waitForWorkerListChanged(target); + await SpecialPowers.spawn(tab.linkedBrowser, [WORKER2_URL], workerUrl => { + content.worker2 = new content.Worker(workerUrl); + }); + await onWorkerListChanged; + + ({ workers } = await listWorkers(target)); + is(workers.length, 2); + is(workers[0].url, WORKER1_URL); + is(workers[1].url, WORKER2_URL); + + onWorkerListChanged = waitForWorkerListChanged(target); + await SpecialPowers.spawn(tab.linkedBrowser, [WORKER2_URL], workerUrl => { + content.worker1.terminate(); + }); + await onWorkerListChanged; + + ({ workers } = await listWorkers(target)); + is(workers.length, 1); + is(workers[0].url, WORKER2_URL); + + onWorkerListChanged = waitForWorkerListChanged(target); + await SpecialPowers.spawn(tab.linkedBrowser, [WORKER2_URL], workerUrl => { + content.worker2.terminate(); + }); + await onWorkerListChanged; + + ({ workers } = await listWorkers(target)); + is(workers.length, 0); + + await target.destroy(); + finish(); +}); + +function listWorkers(targetFront) { + info("Listing workers."); + return targetFront.listWorkers(); +} + +function waitForWorkerListChanged(targetFront) { + info("Waiting for worker list to change."); + return targetFront.once("workerListChanged"); +} |