test_WorkerDebugger_suspended.xhtml (2555B)
1 <?xml version="1.0"?> 2 <!-- 3 Any copyright is dedicated to the Public Domain. 4 http://creativecommons.org/publicdomain/zero/1.0/ 5 --> 6 <window title="Test for WorkerDebugger with suspended workers" 7 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 8 onload="test();"> 9 10 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> 11 <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/> 12 <script type="application/javascript" src="dom_worker_helper.js"/> 13 14 <script type="application/javascript"> 15 <![CDATA[ 16 17 const WORKER_URL = "WorkerDebugger_suspended_worker.js"; 18 const DEBUGGER_URL = BASE_URL + "WorkerDebugger_suspended_debugger.js"; 19 20 function test() { 21 (async function() { 22 SimpleTest.waitForExplicitFinish(); 23 24 info("Create a worker, wait for its debugger to be registered, and " + 25 "initialize it."); 26 let promise = waitForRegister(WORKER_URL, DEBUGGER_URL); 27 let worker = new Worker(WORKER_URL); 28 let dbg = await promise; 29 30 info("Send a request to the worker. This should cause both the " + 31 "worker and the worker debugger to send a response."); 32 promise = waitForMultiple([ 33 waitForWorkerMessage(worker, "worker"), 34 waitForDebuggerMessage(dbg, "debugger") 35 ]); 36 worker.postMessage("ping"); 37 await promise; 38 39 info("Suspend the workers for this window, and send another request " + 40 "to the worker. This should cause only the worker debugger to " + 41 "send a response."); 42 let windowUtils = window.windowUtils; 43 windowUtils.suspendTimeouts(); 44 function onmessage() { 45 ok(false, "The worker should not send a response."); 46 }; 47 worker.addEventListener("message", onmessage); 48 promise = waitForDebuggerMessage(dbg, "debugger"); 49 worker.postMessage("ping"); 50 await promise; 51 worker.removeEventListener("message", onmessage); 52 53 info("Resume the workers for this window. This should cause the " + 54 "worker to send a response to the previous request."); 55 promise = waitForWorkerMessage(worker, "worker"); 56 windowUtils.resumeTimeouts(); 57 await promise; 58 59 SimpleTest.finish(); 60 })(); 61 } 62 63 ]]> 64 </script> 65 66 <body xmlns="http://www.w3.org/1999/xhtml"> 67 <p id="display"></p> 68 <div id="content" style="display:none;"></div> 69 <pre id="test"></pre> 70 </body> 71 <label id="test-result"/> 72 </window>