Files
sousa-gecko/devtools/client/debugger/test/mochitest/browser_dbg-breaking.js
T
Nicolas Chevobbe 176e052cbc Bug 1956197 - [devtools] Create grips for items in typed arrays. r=devtools-reviewers,ochameau.
This allows to properly serialize arrays with non-serializable items (e.g. BigInt64Array).
Tests cases are added to check that we get a proper packet for those, as well as making
sure we're not hitting the bug in the debugger that is described in the bug.
We also make sure those objects are properly rendered in the console output.
For that, we create a generic test for checking previews, based on browser_webconsole_trusted_types.js,
so it's easier to add such test case in the future (we might also use this test for
migrating away from our jest tests).

Differential Revision: https://phabricator.services.mozilla.com/D243066
2025-03-26 13:53:51 +00:00

79 lines
2.2 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
"use strict";
// Tests the breakpoints are hit in various situations.
add_task(async function () {
const dbg = await initDebugger("doc-scripts.html");
const {
selectors: { getSelectedSource },
} = dbg;
await selectSource(dbg, "doc-scripts.html");
// Make sure we can set a top-level breakpoint and it will be hit on
// reload.
await addBreakpoint(dbg, "doc-scripts.html", 21);
const onReloaded = reload(dbg, "doc-scripts.html");
await waitForPaused(dbg);
let whyPaused = await waitFor(
() => dbg.win.document.querySelector(".why-paused")?.innerText
);
is(whyPaused, "Paused on breakpoint\n(global) - doc-scripts.html:21:6");
await assertPausedAtSourceAndLine(
dbg,
findSource(dbg, "doc-scripts.html").id,
21
);
await resume(dbg);
info("Wait for reload to complete after resume");
await onReloaded;
info("Create an eval script that pauses itself.");
invokeInTab("doEval");
await waitForPaused(dbg);
const source = getSelectedSource();
ok(!source.url, "It is an eval source");
await assertPausedAtSourceAndLine(dbg, source.id, 2);
whyPaused = await waitFor(
() => dbg.win.document.querySelector(".why-paused")?.innerText
);
is(whyPaused, "Paused on debugger statement\n:2:8");
await resume(dbg);
await addBreakpoint(dbg, source, 5);
invokeInTab("evaledFunc");
await waitForPaused(dbg);
await assertPausedAtSourceAndLine(dbg, source.id, 5);
await resume(dbg);
info("Check that we pause in workers");
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {
const blob = new content.Blob(
[
`onmessage = function(request) {
// Keep the bigint declaration here, this covers Bug 1956197
const bigint64 = new BigInt64Array([1n, 2n]);
debugger;
}`,
],
{ type: "text/javascript" }
);
const url = content.URL.createObjectURL(blob);
const worker = new content.Worker(url);
worker.postMessage("break in debugger");
});
await waitForPaused(dbg);
await resume(dbg);
});