forked from mirrors/gecko-dev
Differential Revision: https://phabricator.services.mozilla.com/D42300 --HG-- extra : moz-landing-system : lando
67 lines
1.9 KiB
JavaScript
67 lines
1.9 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* Tests the behavior of the debugger statement.
|
|
*/
|
|
|
|
// Import helpers for the workers
|
|
/* import-globals-from helper_workers.js */
|
|
Services.scriptloader.loadSubScript(
|
|
"chrome://mochitests/content/browser/devtools/client/shared/test/helper_workers.js",
|
|
this
|
|
);
|
|
|
|
const TAB_URL = TEST_URI_ROOT + "doc_inline-debugger-statement.html";
|
|
|
|
add_task(async () => {
|
|
const tab = await addTab(TAB_URL);
|
|
const target = await TargetFactory.forTab(tab);
|
|
await target.attach();
|
|
const { client } = target;
|
|
|
|
const threadFront = await testEarlyDebuggerStatement(client, tab, target);
|
|
await testDebuggerStatement(client, tab, threadFront);
|
|
|
|
await target.destroy();
|
|
});
|
|
|
|
async function testEarlyDebuggerStatement(client, tab, targetFront) {
|
|
const onPaused = function(packet) {
|
|
ok(false, "Pause shouldn't be called before we've attached!");
|
|
};
|
|
|
|
// using the DebuggerClient to listen to the pause packet, as the
|
|
// threadFront is not yet attached.
|
|
client.on("paused", onPaused);
|
|
|
|
// This should continue without nesting an event loop and calling
|
|
// the onPaused hook, because we haven't attached yet.
|
|
callInTab(tab, "runDebuggerStatement");
|
|
|
|
client.off("paused", onPaused);
|
|
|
|
// Now attach and resume...
|
|
const [, threadFront] = await targetFront.attachThread();
|
|
await threadFront.resume();
|
|
ok(true, "Pause wasn't called before we've attached.");
|
|
|
|
return threadFront;
|
|
}
|
|
|
|
async function testDebuggerStatement(client, tab, threadFront) {
|
|
const onPaused = new Promise(resolve => {
|
|
threadFront.on("paused", async packet => {
|
|
await threadFront.resume();
|
|
ok(true, "The pause handler was triggered on a debugger statement.");
|
|
resolve();
|
|
});
|
|
});
|
|
|
|
// Reach around the debugging protocol and execute the debugger statement.
|
|
callInTab(tab, "runDebuggerStatement");
|
|
|
|
return onPaused;
|
|
}
|