From a90a5cba08fdf6c0ceb95101c275108a152a3aed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 12 Jun 2024 07:35:37 +0200 Subject: Merging upstream version 127.0. Signed-off-by: Daniel Baumann --- .../client/webconsole/components/Output/Message.js | 4 ++ .../webconsole/test/browser/_browser_console.toml | 3 + .../browser/browser_console_eager_eval_resolve.js | 64 ++++++++++++++++++++++ .../browser_jsterm_screenshot_command_file.js | 14 ++--- 4 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 devtools/client/webconsole/test/browser/browser_console_eager_eval_resolve.js (limited to 'devtools/client/webconsole') diff --git a/devtools/client/webconsole/components/Output/Message.js b/devtools/client/webconsole/components/Output/Message.js index ee65c8947a..8fed9fd084 100644 --- a/devtools/client/webconsole/components/Output/Message.js +++ b/devtools/client/webconsole/components/Output/Message.js @@ -255,6 +255,10 @@ class Message extends Component { JSON.stringify( this.props.message, function (key, value) { + if (key === "targetFront") { + return null; + } + // The message can hold one or multiple fronts that we need to serialize if (value?.getGrip) { return value.getGrip(); diff --git a/devtools/client/webconsole/test/browser/_browser_console.toml b/devtools/client/webconsole/test/browser/_browser_console.toml index d3d3d42146..e5530874ab 100644 --- a/devtools/client/webconsole/test/browser/_browser_console.toml +++ b/devtools/client/webconsole/test/browser/_browser_console.toml @@ -61,6 +61,9 @@ skip-if = [ ["browser_console_eager_eval.js"] +["browser_console_eager_eval_resolve.js"] +skip-if = ["verify"] + ["browser_console_enable_network_monitoring.js"] skip-if = [ "verify", diff --git a/devtools/client/webconsole/test/browser/browser_console_eager_eval_resolve.js b/devtools/client/webconsole/test/browser/browser_console_eager_eval_resolve.js new file mode 100644 index 0000000000..cc2daa33ea --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_console_eager_eval_resolve.js @@ -0,0 +1,64 @@ +/* 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,"; + +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 executeResolveHookWithSideEffect(hud); +}); + +async function executeResolveHookWithSideEffect(hud) { + // Services.droppedLinkHandler is implemented with resolve hook, which imports + // ContentAreaDropListener.sys.mjs. + // + // In order to test the resolve hook behavior, ensure the module is not yet + // loaded, which ensures the property is not yet resolved. + // + // NOTE: This test is not compatible with verify mode, given it depends on the + // initial state of the Services object and the module. + is( + Cu.isESModuleLoaded( + "resource://gre/modules/ContentAreaDropListener.sys.mjs" + ), + false + ); + + setInputValue(hud, `Services.droppedLinkHandler`); + + await wait(500); + // Eager evaluation should fail, due to the side effect in the resolve hook. + await waitForEagerEvaluationResult(hud, ""); + + setInputValue(hud, ""); + await wait(500); + + // The property should be resolved when evaluating after the eager evaluation. + await executeAndWaitForResultMessage( + hud, + `Services.droppedLinkHandler;`, + "XPCWrappedNative_NoHelper" + ); + + is( + Cu.isESModuleLoaded( + "resource://gre/modules/ContentAreaDropListener.sys.mjs" + ), + true + ); + + // Eager evaluation should work after the property is resolved. + setInputValue(hud, `Services.droppedLinkHandler`); + await wait(500); + await waitForEagerEvaluationResult(hud, /XPCWrappedNative_NoHelper/); +} diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_screenshot_command_file.js b/devtools/client/webconsole/test/browser/browser_jsterm_screenshot_command_file.js index f872745bbd..09e17594ab 100644 --- a/devtools/client/webconsole/test/browser/browser_jsterm_screenshot_command_file.js +++ b/devtools/client/webconsole/test/browser/browser_jsterm_screenshot_command_file.js @@ -97,16 +97,10 @@ add_task(async function () { const dayString = date.getDate().toString().padStart(2, "0"); const expectedDateString = `${date.getFullYear()}-${monthString}-${dayString}`; - let screenshotDir; - try { - // This will throw if there is not a screenshot directory set for the platform - screenshotDir = Services.dirsvc.get("Scrnshts", Ci.nsIFile).path; - } catch (e) { - const { Downloads } = ChromeUtils.importESModule( - "resource://gre/modules/Downloads.sys.mjs" - ); - screenshotDir = await Downloads.getPreferredDownloadsDirectory(); - } + const { Downloads } = ChromeUtils.importESModule( + "resource://gre/modules/Downloads.sys.mjs" + ); + const screenshotDir = await Downloads.getPreferredDownloadsDirectory(); const { renderedDate, filePath } = /Saved to (?.*Screen Shot (?\d{4}-\d{2}-\d{2}) at \d{2}.\d{2}.\d{2}\.png)/.exec( -- cgit v1.2.3