forked from mirrors/gecko-dev
49 lines
1.6 KiB
JavaScript
49 lines
1.6 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";
|
|
|
|
// Check evaluating eager-evaluation values.
|
|
const TEST_URI = "data:text/html;charset=utf8,<!DOCTYPE html>";
|
|
|
|
add_task(async function () {
|
|
await addTab(TEST_URI);
|
|
|
|
await pushPref("devtools.chrome.enabled", true);
|
|
|
|
info("Open the Browser Console");
|
|
const hud = await BrowserConsoleManager.toggleBrowserConsole();
|
|
|
|
await executeNonDebuggeeSideeffect(hud);
|
|
});
|
|
|
|
// Test that code is still terminated, even if it is calling into realms
|
|
// that aren't the normal debuggee realms (bug 1620087).
|
|
async function executeNonDebuggeeSideeffect(hud) {
|
|
await executeAndWaitForResultMessage(
|
|
hud,
|
|
`globalThis.eagerLoader = ChromeUtils.importESModule("resource://devtools/shared/loader/Loader.sys.mjs");`,
|
|
`DevToolsLoader`
|
|
);
|
|
|
|
// "require" should terminate execution because it will try to create a new
|
|
// module record for the given URL, as long as the loader's debuggee
|
|
// has been properly added to the debugger. The termination should
|
|
// happen before it starts processing the path, so we don't need to provide
|
|
// a real path here.
|
|
setInputValue(hud, `globalThis.eagerLoader.require("fake://path");`);
|
|
|
|
// Wait a bit to make sure that the command has time to fail before we
|
|
// validate the eager-eval result.
|
|
await wait(500);
|
|
await waitForEagerEvaluationResult(hud, "");
|
|
|
|
setInputValue(hud, "");
|
|
|
|
await executeAndWaitForResultMessage(
|
|
hud,
|
|
`delete globalThis.eagerLoader;`,
|
|
`true`
|
|
);
|
|
}
|