From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../browser_dbg_WorkerActor.attachThread.js | 100 +++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js (limited to 'devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js') diff --git a/devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js b/devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js new file mode 100644 index 000000000..34e59a418 --- /dev/null +++ b/devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js @@ -0,0 +1,100 @@ +var TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html"; +var WORKER_URL = "code_WorkerActor.attachThread-worker.js"; + +function test() { + Task.spawn(function* () { + DebuggerServer.init(); + DebuggerServer.addBrowserActors(); + + let client1 = new DebuggerClient(DebuggerServer.connectPipe()); + yield connect(client1); + let client2 = new DebuggerClient(DebuggerServer.connectPipe()); + yield connect(client2); + + let tab = yield addTab(TAB_URL); + let { tabs: tabs1 } = yield listTabs(client1); + let [, tabClient1] = yield attachTab(client1, findTab(tabs1, TAB_URL)); + let { tabs: tabs2 } = yield listTabs(client2); + let [, tabClient2] = yield attachTab(client2, findTab(tabs2, TAB_URL)); + + yield listWorkers(tabClient1); + yield listWorkers(tabClient2); + yield createWorkerInTab(tab, WORKER_URL); + let { workers: workers1 } = yield listWorkers(tabClient1); + let [, workerClient1] = yield attachWorker(tabClient1, + findWorker(workers1, WORKER_URL)); + let { workers: workers2 } = yield listWorkers(tabClient2); + let [, workerClient2] = yield attachWorker(tabClient2, + findWorker(workers2, WORKER_URL)); + + let location = { line: 5 }; + + let [, threadClient1] = yield attachThread(workerClient1); + let sources1 = yield getSources(threadClient1); + let sourceClient1 = threadClient1.source(findSource(sources1, + EXAMPLE_URL + WORKER_URL)); + let [, breakpointClient1] = yield setBreakpoint(sourceClient1, location); + yield resume(threadClient1); + + let [, threadClient2] = yield attachThread(workerClient2); + let sources2 = yield getSources(threadClient2); + let sourceClient2 = threadClient2.source(findSource(sources2, + EXAMPLE_URL + WORKER_URL)); + let [, breakpointClient2] = yield setBreakpoint(sourceClient2, location); + yield resume(threadClient2); + + let packet = yield source(sourceClient1); + let text = (yield new Promise(function (resolve) { + let request = new XMLHttpRequest(); + request.open("GET", EXAMPLE_URL + WORKER_URL, true); + request.send(); + request.onload = function () { + resolve(request.responseText); + }; + })); + is(packet.source, text); + + postMessageToWorkerInTab(tab, WORKER_URL, "ping"); + yield Promise.all([ + waitForPause(threadClient1).then((packet) => { + is(packet.type, "paused"); + let why = packet.why; + is(why.type, "breakpoint"); + is(why.actors.length, 1); + is(why.actors[0], breakpointClient1.actor); + let frame = packet.frame; + let where = frame.where; + is(where.source.actor, sourceClient1.actor); + is(where.line, location.line); + let variables = frame.environment.bindings.variables; + is(variables.a.value, 1); + is(variables.b.value.type, "undefined"); + is(variables.c.value.type, "undefined"); + return resume(threadClient1); + }), + waitForPause(threadClient2).then((packet) => { + is(packet.type, "paused"); + let why = packet.why; + is(why.type, "breakpoint"); + is(why.actors.length, 1); + is(why.actors[0], breakpointClient2.actor); + let frame = packet.frame; + let where = frame.where; + is(where.source.actor, sourceClient2.actor); + is(where.line, location.line); + let variables = frame.environment.bindings.variables; + is(variables.a.value, 1); + is(variables.b.value.type, "undefined"); + is(variables.c.value.type, "undefined"); + return resume(threadClient2); + }), + ]); + + terminateWorkerInTab(tab, WORKER_URL); + yield waitForWorkerClose(workerClient1); + yield waitForWorkerClose(workerClient2); + yield close(client1); + yield close(client2); + finish(); + }); +} -- cgit v1.2.3