Merge pull request #7600 from toger5/toger5/fix-crash-on-circular-obj-logging

Fix crash due to JSON.stringify on a cirular structure in injectes js.
This commit is contained in:
Benoit Marty
2026-08-31 12:19:23 +02:00
committed by GitHub
@@ -54,10 +54,32 @@ class WebViewWidgetMessageInterceptor(
// objects in log lines.
view.evaluateJavascript(
"""
// Removing any parts that result in a circular structure. Circular structures crash JSON.stringify.
function safeStringify(object) {
const simpleObject = {};
for (const prop in object) {
if (!object.hasOwnProperty(prop)) {
continue;
}
if (typeof(object[prop]) == 'object') {
continue;
}
if (typeof(object[prop]) == 'function') {
continue;
}
simpleObject[prop] = object[prop];
}
try {
return JSON.stringify(simpleObject);
} catch {
return "{Failed to stringify object}";
}
}
function logFn(consoleLogFn, ...args) {
consoleLogFn(
args.map(
a => typeof a === "string" ? a : JSON.stringify(a)
a => typeof a === "string" ? a : safeStringify(a)
).join(' ')
);
};