☠☠ backed out by c6b7e343048b ☠ ☠ | |
author | Nicolas Chevobbe <nchevobbe@mozilla.com> |
Thu, 02 Dec 2021 05:57:56 +0000 | |
changeset 600882 | cf7717dfbd7c1d296d009f27cc53e5e424640fe3 |
parent 600881 | fd097d484cfb14cf282bd4f0d35c736f51030e1d |
child 600883 | 48c568e6d4d4497f7886264efb3fe93346f4341f |
push id | 154029 |
push user | nchevobbe@mozilla.com |
push date | Thu, 02 Dec 2021 06:00:26 +0000 |
treeherder | autoland@48c568e6d4d4 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | bomsy |
bugs | 1743347 |
milestone | 96.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/devtools/client/debugger/test/mochitest/browser_dbg-breaking.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg-breaking.js @@ -18,23 +18,33 @@ add_task(async function() { await addBreakpoint(dbg, "scripts.html", 21); reload(dbg); await waitForDispatch(dbg.store, "NAVIGATE"); await waitForSelectedSource(dbg, "doc-scripts.html"); await waitForPaused(dbg); + let whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is(whyPaused, "Paused on breakpoint"); + assertPausedLocation(dbg); await resume(dbg); info("Create an eval script that pauses itself."); invokeInTab("doEval"); await waitForPaused(dbg); + whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is(whyPaused, "Paused on debugger statement"); + await resume(dbg); const source = getSelectedSource(); ok(!source.url, "It is an eval source"); await addBreakpoint(dbg, source, 5); invokeInTab("evaledFunc"); await waitForPaused(dbg); assertPausedLocation(dbg);
--- a/devtools/client/debugger/test/mochitest/browser_dbg-dom-mutation-breakpoints.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg-dom-mutation-breakpoints.js @@ -16,17 +16,16 @@ const DMB_TEST_URL = "https://example.com/browser/devtools/client/debugger/test/mochitest/examples/doc-dom-mutation.html"; async function enableMutationBreakpoints() { await pushPref("devtools.debugger.features.dom-mutation-breakpoints", true); await pushPref("devtools.markup.mutationBreakpoints.enabled", true); await pushPref("devtools.debugger.dom-mutation-breakpoints-visible", true); } - add_task(async function() { // Enable features await enableMutationBreakpoints(); info("Switches over to the inspector pane"); const { inspector, toolbox } = await openInspectorForURL(DMB_TEST_URL); info("Selecting the body node"); @@ -63,30 +62,61 @@ add_task(async function() { checkbox.click(); await waitFor(() => checkbox.checked); info("Changing attribute to trigger debugger pause"); SpecialPowers.spawn(gBrowser.selectedBrowser, [], function() { content.document.querySelector("#attribute").click(); }); await waitForPaused(dbg); + let whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is( + whyPaused, + `Paused on DOM mutation\nDOM Mutation: 'attributeModified'\nbody` + ); + await resume(dbg); info("Changing style to trigger debugger pause"); SpecialPowers.spawn(gBrowser.selectedBrowser, [], function() { content.document.querySelector("#style-attribute").click(); }); await waitForPaused(dbg); await resume(dbg); - info("Changing subtree to trigger debugger pause"); + info("Adding element in subtree to trigger debugger pause"); SpecialPowers.spawn(gBrowser.selectedBrowser, [], function() { - content.document.querySelector("#subtree").click(); + content.document.querySelector("#add-in-subtree").click(); }); await waitForPaused(dbg); + whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is( + whyPaused, + `Paused on DOM mutation\nDOM Mutation: 'subtreeModified'\nbodyAdded:div` + ); + + await resume(dbg); + + info("Removing element in subtree to trigger debugger pause"); + SpecialPowers.spawn(gBrowser.selectedBrowser, [], function() { + content.document.querySelector("#remove-in-subtree").click(); + }); + await waitForPaused(dbg); + whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is( + whyPaused, + `Paused on DOM mutation\nDOM Mutation: 'subtreeModified'\nbodyRemoved:div` + ); + await resume(dbg); info("Blackboxing the source prevents debugger pause"); await waitForSource(dbg, "dom-mutation.original.js"); const source = findSource(dbg, "dom-mutation.original.js"); await selectSource(dbg, source); @@ -102,10 +132,9 @@ add_task(async function() { await selectSource(dbg, source); await clickElement(dbg, "blackbox"); await waitForDispatch(dbg.store, "BLACKBOX"); info("Removing breakpoints works"); dbg.win.document.querySelector(".dom-mutation-list .close-btn").click(); await waitForAllElements(dbg, "domMutationItem", 1, true); - });
--- a/devtools/client/debugger/test/mochitest/browser_dbg-event-breakpoints.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg-event-breakpoints.js @@ -23,16 +23,22 @@ add_task(async function() { "timer.timeout.set", "timer.timeout.fire", "script.source.firstStatement", ]); invokeInTab("clickHandler"); await waitForPaused(dbg); assertPauseLocation(dbg, 12); + + const whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is(whyPaused, `Paused on event breakpoint\nDOM 'click' event`); + await resume(dbg); invokeInTab("xhrHandler"); await waitForPaused(dbg); assertPauseLocation(dbg, 20); await resume(dbg); invokeInTab("timerHandler"); @@ -85,12 +91,16 @@ function assertPauseLocation(dbg, line, is(location.sourceId, source.id, `correct sourceId`); is(location.line, line, `correct line`); assertPausedLocation(dbg); } async function invokeOnElement(selector, action) { await SpecialPowers.focus(gBrowser.selectedBrowser); - await SpecialPowers.spawn(gBrowser.selectedBrowser, [selector, action], (_selector, _action) => { - content.document.querySelector(_selector)[_action](); - }); + await SpecialPowers.spawn( + gBrowser.selectedBrowser, + [selector, action], + (_selector, _action) => { + content.document.querySelector(_selector)[_action](); + } + ); }
--- a/devtools/client/debugger/test/mochitest/browser_dbg-pause-exceptions.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg-pause-exceptions.js @@ -17,16 +17,22 @@ add_task(async function() { await uncaughtException(); ok(!isPaused(dbg)); log("2. Test pausing on an uncaught exception"); await togglePauseOnExceptions(dbg, true, true); uncaughtException(); await waitForPaused(dbg); assertPausedLocation(dbg); + + const whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is(whyPaused, `Paused on exception\nunreachable`); + await resume(dbg); log("2.b Test throwing the same uncaught exception pauses again"); await togglePauseOnExceptions(dbg, true, true); uncaughtException(); await waitForPaused(dbg); assertPausedLocation(dbg); await resume(dbg);
--- a/devtools/client/debugger/test/mochitest/browser_dbg-stepping.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg-stepping.js @@ -6,16 +6,22 @@ requestLongerTimeout(5); add_task(async function test() { const dbg = await initDebugger("big-sourcemap.html", "big-sourcemap"); invokeInTab("hitDebugStatement"); await waitForPaused(dbg, "bundle.js"); await stepIn(dbg); + + const whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is(whyPaused, `Paused while stepping`); + await stepIn(dbg); await stepIn(dbg); await stepIn(dbg); await stepIn(dbg); await stepIn(dbg); await stepIn(dbg); await stepIn(dbg); await stepIn(dbg);
--- a/devtools/client/debugger/test/mochitest/browser_dbg-watchpoints.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg-watchpoints.js @@ -28,16 +28,20 @@ add_task(async function() { await addedWatchpoint; popup.hidePopup(); await resume(dbg); await waitForPaused(dbg); await waitForState(dbg, () => dbg.selectors.getSelectedInlinePreviews()); assertPausedAtSourceAndLine(dbg, sourceId, 17); is(await getScopeValue(dbg, 5), "3"); + const whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is(whyPaused, `Paused on property get\nobj.b`); info("Resume and wait to pause at the access to b in the first `obj.b;`"); await resume(dbg); await waitForPaused(dbg); assertPausedAtSourceAndLine(dbg, sourceId, 19); info("Remove the get watchpoint on b"); const removedWatchpoint1 = waitForDispatch(dbg.store, "REMOVE_WATCHPOINT");
--- a/devtools/client/debugger/test/mochitest/browser_dbg-xhr-breakpoints.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg-xhr-breakpoints.js @@ -7,33 +7,39 @@ add_task(async function() { const dbg = await initDebugger("doc-xhr.html", "fetch.js"); await addXHRBreakpoint(dbg, "doc", "GET"); await SpecialPowers.spawn( gBrowser.selectedBrowser, [EXAMPLE_REMOTE_URL + "doc-early-xhr.html"], - (remoteUrl) => { + remoteUrl => { const firstIframe = content.document.createElement("iframe"); content.document.body.append(firstIframe); firstIframe.src = remoteUrl; } ); await waitForPaused(dbg); assertPausedLocation(dbg); + + const whyPaused = await waitFor( + () => dbg.win.document.querySelector(".why-paused")?.innerText + ); + is(whyPaused, `Paused on XMLHttpRequest`); + await resume(dbg); await dbg.actions.removeXHRBreakpoint(0); await SpecialPowers.spawn( gBrowser.selectedBrowser, [EXAMPLE_REMOTE_URL + "doc-early-xhr.html"], - (remoteUrl) => { + remoteUrl => { const secondIframe = content.document.createElement("iframe"); content.document.body.append(secondIframe); secondIframe.src = remoteUrl; } ); // Wait for some time, in order to wait for it to be paused // in case we regress @@ -53,17 +59,16 @@ add_task(async function() { await waitForPaused(dbg); assertPausedLocation(dbg); await resume(dbg); await dbg.actions.removeXHRBreakpoint(0); await invokeInTab("main", "doc-xhr.html"); assertNotPaused(dbg); - info("Test that we do not pause on different method type"); await addXHRBreakpoint(dbg, "doc", "POST"); await invokeInTab("main", "doc-xhr.html"); assertNotPaused(dbg); }); // Tests the "pause on any URL" checkbox works properly add_task(async function() { @@ -152,17 +157,19 @@ async function removeXHRBreakpoint(dbg, closeButtons[index].click(); } await waitForDispatch(dbg.store, "REMOVE_XHR_BREAKPOINT"); } function getXHRBreakpointsElements(dbg) { return [ - ...dbg.win.document.querySelectorAll(".xhr-breakpoints-pane .xhr-container") + ...dbg.win.document.querySelectorAll( + ".xhr-breakpoints-pane .xhr-container" + ), ]; } function getXHRBreakpointLabels(elements) { return elements.map(element => element.title); } function getXHRBreakpointCheckbox(dbg) {
--- a/devtools/client/debugger/test/mochitest/examples/doc-dom-mutation.html +++ b/devtools/client/debugger/test/mochitest/examples/doc-dom-mutation.html @@ -6,13 +6,14 @@ <head> <meta charset="utf-8"/> <title>Debugger test page</title> </head> <body> <button title="Hello" id="attribute" onclick="changeAttribute()">Click me!</button> <button id="style-attribute" onclick="changeStyleAttribute()">Click me!</button> - <button id="subtree" onclick="changeSubtree()">Click me!</button> + <button id="add-in-subtree" onclick="addDivToBody()">add div to body</button> + <button id="remove-in-subtree" onclick="removeDivInBody()">remove div in body</button> <button id="blackbox" onclick="changeAttribute();
debugger;
//# sourceURL=click.js">Click me!</button> <script src="dom-mutation.js"></script> </body> </html>
--- a/devtools/client/debugger/test/mochitest/examples/dom-mutation.js +++ b/devtools/client/debugger/test/mochitest/examples/dom-mutation.js @@ -2,12 +2,17 @@ function changeAttribute() { const title = document.body.title === "Goodbye" ? "Hello" : "Goodbye"; document.body.setAttribute("title", title); } function changeStyleAttribute() { document.body.style.color = "blue"; } -function changeSubtree() { +function addDivToBody() { document.body.appendChild(document.createElement("div")); } + +function removeDivInBody() { + document.body.querySelector("div").remove(); +} + //# sourceMappingURL=dom-mutation.js.map