Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
// Tests that clicking on a function in a source-mapped file displays its
// original source in the debugger. See Bug 1433373.
"use strict";
requestLongerTimeout(5);
const TEST_URI =
"test/browser/" +
"test-click-function-to-mapped-source.html";
const TEST_ORIGINAL_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_ORIGINAL_URI);
await waitForSelectedLocation(dbg, 9);
const pendingLocation = dbg.selectors.getPendingSelectedLocation();
const { url, line, column } = pendingLocation;
is(url, TEST_ORIGINAL_URI, "Debugger is open at the expected file");
is(line, 9, "Debugger is open at the expected line");
// If we loaded the original file, we'd have column 12 for the function's
// start position, but 9 is correct for the location in the source map.
is(column, 9, "Debugger is open at the expected column");
});