Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
// Tests that clicking on a function displays its source in the debugger. See Bug 1050691.
"use strict";
requestLongerTimeout(5);
const TEST_URI =
"test/browser/" +
"test-click-function-to-source.html";
const TEST_SCRIPT_URI =
"test/browser/" +
"test-click-function-to-source.js";
add_task(async function () {
const hud = await openNewTabAndConsole(TEST_URI);
info("Log a function");
const onLoggedFunction = waitForMessageByType(
hud,
"function foo",
".console-api"
);
SpecialPowers.spawn(gBrowser.selectedBrowser, [], function () {
content.wrappedJSObject.foo();
});
const { node } = await onLoggedFunction;
const jumpIcon = node.querySelector(".jump-definition");
ok(jumpIcon, "A jump to definition button is rendered, as expected");
info("Click on the jump to definition button.");
jumpIcon.click();
info("Wait for the Debugger panel to open.");
const toolbox = hud.toolbox;
await toolbox.getPanelWhenReady("jsdebugger");
const dbg = createDebuggerContext(toolbox);
await waitForSelectedSource(dbg, TEST_SCRIPT_URI);
const pendingLocation = dbg.selectors.getPendingSelectedLocation();
const { line, column } = pendingLocation;
is(line, 9, "Debugger is open at the expected line");
is(column, 12, "Debugger is open at the expected column");
});