mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-07-15 03:29:01 +00:00
101 lines
3.9 KiB
JavaScript
101 lines
3.9 KiB
JavaScript
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();
|
|
});
|
|
}
|