53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* Check basic breakpoint functionality.
|
|
*/
|
|
|
|
add_task(
|
|
threadFrontTest(async ({ threadFront, debuggee }) => {
|
|
info("Wait for the debugger statement to be hit");
|
|
const packet1 = await executeOnNextTickAndWaitForPause(
|
|
() => evaluateTestCode(debuggee),
|
|
threadFront
|
|
);
|
|
const source = await getSourceById(threadFront, packet1.frame.where.actor);
|
|
const location = { sourceUrl: source.url, line: debuggee.line0 + 3 };
|
|
|
|
threadFront.setBreakpoint(location, {});
|
|
|
|
const packet2 = await resumeAndWaitForPause(threadFront);
|
|
|
|
info("Paused at the breakpoint");
|
|
Assert.equal(packet2.frame.where.actor, source.actor);
|
|
Assert.equal(packet2.frame.where.line, location.line);
|
|
Assert.equal(packet2.why.type, "breakpoint");
|
|
|
|
info("Check that the breakpoint worked.");
|
|
Assert.equal(debuggee.a, 1);
|
|
Assert.equal(debuggee.b, undefined);
|
|
|
|
await threadFront.resume();
|
|
})
|
|
);
|
|
|
|
function evaluateTestCode(debuggee) {
|
|
/*
|
|
* Be sure to run debuggee code in its own HTML 'task', so that when we call
|
|
* the onDebuggerStatement hook, the test's own microtasks don't get suspended
|
|
* along with the debuggee's.
|
|
*/
|
|
do_timeout(0, () => {
|
|
// prettier-ignore
|
|
Cu.evalInSandbox(
|
|
"var line0 = Error().lineNumber;\n" +
|
|
"debugger;\n" + // line0 + 1
|
|
"var a = 1;\n" + // line0 + 2
|
|
"var b = 2;\n", // line0 + 3
|
|
debuggee
|
|
);
|
|
});
|
|
}
|