diff --git a/shell/browser/ui/inspectable_web_contents.cc b/shell/browser/ui/inspectable_web_contents.cc index d641ce5724..e7a5d5e142 100644 --- a/shell/browser/ui/inspectable_web_contents.cc +++ b/shell/browser/ui/inspectable_web_contents.cc @@ -13,6 +13,7 @@ #include "base/base64.h" #include "base/containers/span.h" +#include "base/dcheck_is_on.h" #include "base/memory/raw_ptr.h" #include "base/metrics/histogram.h" #include "base/strings/pattern.h" @@ -957,6 +958,35 @@ bool InspectableWebContents::HandleKeyboardEvent( return !delegate || delegate->HandleKeyboardEvent(source, event); } +bool InspectableWebContents::DidAddMessageToConsole( + content::WebContents* source, + blink::mojom::ConsoleMessageLevel log_level, + const std::u16string& message, + int32_t line_no, + const std::u16string& source_id) { + // Suppress Chromium's default logging of DevTools frontend console messages + // into native logs for the managed DevTools WebContents. Can be overridden by + // enabling verbose logging. + if (source == managed_devtools_web_contents_.get()) { +#if DCHECK_IS_ON() + // In debug/testing builds, let logging through. + return false; +#endif + + if (VLOG_IS_ON(1)) { + // Match Chromium's `content::LogConsoleMessage()` output format, but emit + // it as a verbose log. + logging::LogMessage("CONSOLE", line_no, logging::LOGGING_VERBOSE).stream() + << "\"" << message << "\", source: " << source_id << " (" << line_no + << ")"; + } + + return true; // Suppress the default logging. + } + + return false; // Allow the default logging. +} + void InspectableWebContents::CloseContents(content::WebContents* source) { // This is where the devtools closes itself (by clicking the x button). CloseDevTools(); diff --git a/shell/browser/ui/inspectable_web_contents.h b/shell/browser/ui/inspectable_web_contents.h index c5163d5d15..cb2f857c4d 100644 --- a/shell/browser/ui/inspectable_web_contents.h +++ b/shell/browser/ui/inspectable_web_contents.h @@ -221,6 +221,11 @@ class InspectableWebContents // content::WebContentsDelegate: bool HandleKeyboardEvent(content::WebContents*, const input::NativeWebKeyboardEvent&) override; + bool DidAddMessageToConsole(content::WebContents* source, + blink::mojom::ConsoleMessageLevel log_level, + const std::u16string& message, + int32_t line_no, + const std::u16string& source_id) override; void CloseContents(content::WebContents* source) override; std::unique_ptr OpenEyeDropper( content::RenderFrameHost* frame,