forked from mirrors/gecko-dev
This will prevent opening any links with the ":\d+" suffix anytime devtools were opened in the past. Differential Revision: https://phabricator.services.mozilla.com/D185826
74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const TEST_URI =
|
|
"http://example.com/browser/devtools/client/webconsole/" +
|
|
"test/browser/test-eval-sources.html";
|
|
|
|
// Test that stack/message links in console API and error messages originating
|
|
// from eval code go to a source in the debugger. This should work even when the
|
|
// console is opened first.
|
|
add_task(async function () {
|
|
const hud = await openNewTabAndConsole(TEST_URI);
|
|
const toolbox = gDevTools.getToolboxForTab(gBrowser.selectedTab);
|
|
|
|
let messageNode = await waitFor(() => findErrorMessage(hud, "BAR"));
|
|
await clickFirstStackElement(hud, messageNode, true);
|
|
|
|
const dbg = toolbox.getPanel("jsdebugger");
|
|
|
|
is(
|
|
dbg._selectors.getSelectedSource(dbg._getState()).url,
|
|
null,
|
|
"expected source url"
|
|
);
|
|
|
|
await testOpenInDebugger(hud, {
|
|
text: "FOO",
|
|
typeSelector: ".console-api",
|
|
expectUrl: false,
|
|
});
|
|
await testOpenInDebugger(hud, {
|
|
text: "BAR",
|
|
typeSelector: ".error",
|
|
expectUrl: false,
|
|
});
|
|
|
|
// Test that links in the API work when the eval source has a sourceURL property
|
|
// which is not considered to be a valid URL.
|
|
await testOpenInDebugger(hud, {
|
|
text: "BAZ",
|
|
typeSelector: ".console-api",
|
|
expectUrl: false,
|
|
});
|
|
|
|
// Test that stacks in console.trace() calls work.
|
|
messageNode = await waitFor(() => findConsoleAPIMessage(hud, "TRACE"));
|
|
await clickFirstStackElement(hud, messageNode, false);
|
|
|
|
is(
|
|
/my-foo.js/.test(dbg._selectors.getSelectedSource(dbg._getState()).url),
|
|
true,
|
|
"expected source url"
|
|
);
|
|
});
|
|
|
|
async function clickFirstStackElement(hud, message, needsExpansion) {
|
|
if (needsExpansion) {
|
|
const button = message.querySelector(".collapse-button");
|
|
ok(button, "has button");
|
|
button.click();
|
|
}
|
|
|
|
let frame;
|
|
await waitUntil(() => {
|
|
frame = message.querySelector(".stacktrace .frame");
|
|
return !!frame;
|
|
});
|
|
|
|
const onSourceOpenedInDebugger = once(hud, "source-in-debugger-opened");
|
|
EventUtils.sendMouseEvent({ type: "mousedown" }, frame);
|
|
await onSourceOpenedInDebugger;
|
|
}
|