no bug - Bumping Firefox l10n changesets r=release a=l10n-bump DONTBUILD CLOSED TREE
[gecko.git] / dom / workers / test / test_WorkerDebuggerGlobalScope.enterEventLoop.xhtml
blobd5cff95d390e7d0ee724b492db437b173d5ff12c
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 WorkerDebuggerGlobalScope.enterEventLoop"
7 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
8 onload="test();">
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"/>
14 <script type="application/javascript">
15 <![CDATA[
17 const WORKER_URL = "WorkerDebuggerGlobalScope.enterEventLoop_worker.js";
18 const CHILD_WORKER_URL = "WorkerDebuggerGlobalScope.enterEventLoop_childWorker.js";
19 const DEBUGGER_URL = BASE_URL + "WorkerDebuggerGlobalScope.enterEventLoop_debugger.js";
21 function test() {
22 (async function() {
23 SimpleTest.waitForExplicitFinish();
25 info("Create a worker that creates a child worker, wait for their " +
26 "debuggers to be registered, and initialize them.");
27 let promise = waitForMultiple([
28 waitForRegister(WORKER_URL, DEBUGGER_URL),
29 waitForRegister(CHILD_WORKER_URL, DEBUGGER_URL)
30 ]);
31 let worker = new Worker(WORKER_URL);
32 let [dbg, childDbg] = await promise;
34 info("Send a request to the child worker. This should cause the " +
35 "child worker debugger to enter a nested event loop.");
36 promise = waitForDebuggerMessage(childDbg, "paused");
37 worker.postMessage("child:ping");
38 await promise;
40 info("Send a request to the child worker debugger. This should cause " +
41 "the child worker debugger to enter a second nested event loop.");
42 promise = waitForDebuggerMessage(childDbg, "paused");
43 childDbg.postMessage("eval");
44 await promise;
46 info("Send a request to the child worker debugger. This should cause " +
47 "the child worker debugger to leave its second nested event " +
48 "loop. The child worker debugger should not send a response " +
49 "for its previous request until after it has left the nested " +
50 "event loop.");
51 promise = waitForMultiple([
52 waitForDebuggerMessage(childDbg, "resumed"),
53 waitForDebuggerMessage(childDbg, "evalled")
54 ]);
55 childDbg.postMessage("resume");
56 await promise;
58 info("Send a request to the child worker debugger. This should cause " +
59 "the child worker debugger to leave its first nested event loop." +
60 "The child worker should not send a response for its earlier " +
61 "request until after the child worker debugger has left the " +
62 "nested event loop.");
63 promise = waitForMultiple([
64 waitForDebuggerMessage(childDbg, "resumed"),
65 waitForWorkerMessage(worker, "child:pong")
66 ]);
67 childDbg.postMessage("resume");
68 await promise;
70 info("Send a request to the worker. This should cause the worker " +
71 "debugger to enter a nested event loop.");
72 promise = waitForDebuggerMessage(dbg, "paused");
73 worker.postMessage("ping");
74 await promise;
76 info("Terminate the worker. This should not cause the worker " +
77 "debugger to terminate as well.");
78 worker.terminate();
80 worker.onmessage = function () {
81 ok(false, "Worker should have been terminated.");
84 info("Send a request to the worker debugger. This should cause the " +
85 "worker debugger to enter a second nested event loop.");
86 promise = waitForDebuggerMessage(dbg, "paused");
87 dbg.postMessage("eval");
88 await promise;
90 info("Send a request to the worker debugger. This should cause the " +
91 "worker debugger to leave its second nested event loop. The " +
92 "worker debugger should not send a response for the previous " +
93 "request until after leaving the nested event loop.");
94 promise = waitForMultiple([
95 waitForDebuggerMessage(dbg, "resumed"),
96 waitForDebuggerMessage(dbg, "evalled")
97 ]);
98 dbg.postMessage("resume");
99 await promise;
101 info("Send a request to the worker debugger. This should cause the " +
102 "worker debugger to leave its first nested event loop. The " +
103 "worker should not send a response for its earlier request, " +
104 "since it has been terminated.");
105 promise = waitForMultiple([
106 waitForDebuggerMessage(dbg, "resumed"),
108 dbg.postMessage("resume");
109 await promise;
111 SimpleTest.finish();
112 })();
116 </script>
118 <body xmlns="http://www.w3.org/1999/xhtml">
119 <p id="display"></p>
120 <div id="content" style="display:none;"></div>
121 <pre id="test"></pre>
122 </body>
123 <label id="test-result"/>
124 </window>