diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /devtools/client/inspector/markup/test/browser_markup_view-source.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | devtools/client/inspector/markup/test/browser_markup_view-source.js | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/devtools/client/inspector/markup/test/browser_markup_view-source.js b/devtools/client/inspector/markup/test/browser_markup_view-source.js new file mode 100644 index 0000000000..9a3507d535 --- /dev/null +++ b/devtools/client/inspector/markup/test/browser_markup_view-source.js @@ -0,0 +1,126 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/devtools/client/debugger/test/mochitest/shared-head.js", + this +); + +const DOCUMENT_SRC = ` +<body> +<button id="btn-eval">Eval</button> +<button id="btn-dom0" onclick="console.info('bloup')">DOM0</button> +<script> +var script = \` + function foo() { + console.log('handler'); + } +\`; +eval(script); + +var button = document.getElementById("btn-eval"); +button.addEventListener("click", foo, false); +</script> +</body>`; + +const TEST_URI = "data:text/html;charset=utf-8," + DOCUMENT_SRC; + +add_task(async function () { + const { inspector, toolbox } = await openInspectorForURL(TEST_URI); + + info( + "Test that event handler links go to the right debugger source when it came from an eval()" + ); + const evaledSource = await clickOnJumpToDebuggerIconForNode( + inspector, + toolbox, + "#btn-eval" + ); + is(evaledSource.url, null, "no expected url for eval source"); + + info("Add a breakpoint in opened source"); + const debuggerContext = createDebuggerContext(toolbox); + await addBreakpoint( + debuggerContext, + debuggerContext.selectors.getSelectedSource(), + 1 + ); + await safeSynthesizeMouseEventAtCenterInContentPage("#btn-eval"); + + await waitForPaused(debuggerContext); + ok(true, "The debugger paused on the evaled source breakpoint"); + await resume(debuggerContext); + + info( + "Test that event handler links go to the right debugger source when it's a dom0 event listener." + ); + await toolbox.selectTool("inspector"); + const dom0Source = await clickOnJumpToDebuggerIconForNode( + inspector, + toolbox, + "#btn-dom0" + ); + is(dom0Source.url, null, "no expected url for dom0 event listener source"); + await addBreakpoint( + debuggerContext, + debuggerContext.selectors.getSelectedSource(), + 1 + ); + await safeSynthesizeMouseEventAtCenterInContentPage("#btn-dom0"); + await waitForPaused(debuggerContext); + ok(true, "The debugger paused on the dom0 source breakpoint"); + await resume(debuggerContext); +}); + +async function clickOnJumpToDebuggerIconForNode( + inspector, + toolbox, + nodeSelector +) { + const nodeFront = await getNodeFront(nodeSelector, inspector); + const container = getContainerForNodeFront(nodeFront, inspector); + + const evHolder = container.elt.querySelector( + ".inspector-badge.interactive[data-event]" + ); + evHolder.scrollIntoView(); + info(`Display event tooltip for node "${nodeSelector}"`); + evHolder.click(); + + const tooltip = inspector.markup.eventDetailsTooltip; + await tooltip.once("shown"); + + info(`Tooltip displayed, click on the "jump to debugger" icon`); + const debuggerIcon = tooltip.panel.querySelector( + ".event-tooltip-debugger-icon" + ); + + if (!debuggerIcon) { + ok( + false, + `There is no jump to debugger icon in event tooltip for node "${nodeSelector}"` + ); + return null; + } + + const onDebuggerSelected = toolbox.once(`jsdebugger-selected`); + EventUtils.synthesizeMouse(debuggerIcon, 2, 2, {}, debuggerIcon.ownerGlobal); + + const dbg = await onDebuggerSelected; + ok(true, "The debugger was opened"); + + let source; + info("Wait for source to be opened"); + await BrowserTestUtils.waitForCondition( + () => { + source = dbg._selectors.getSelectedSource(dbg._getState()); + return !!source; + }, + "loaded source", + 100, + 20 + ); + return source; +} |