summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChengzhong Wu <legendecas@gmail.com>2023-01-07 05:37:42 +0800
committerGitHub <noreply@github.com>2023-01-06 22:37:42 +0100
commit82e930726ee5dbac8e6eae0962c07c72daf9843c (patch)
treeaba0c34052254e46de873f1c8226d4f88bccc91e
parentd1cdf65b106e1bcb3a2b324c013f908c12d6368f (diff)
fix(core): get v8 console from context extra bindings (#17243)
Explicitly get `console` object from V8 instead of relying on `console` defined on the global object.
-rw-r--r--core/bindings.rs6
-rw-r--r--runtime/js/99_main.js4
2 files changed, 8 insertions, 2 deletions
diff --git a/core/bindings.rs b/core/bindings.rs
index 07ad136ac..b9285a402 100644
--- a/core/bindings.rs
+++ b/core/bindings.rs
@@ -133,6 +133,12 @@ pub fn initialize_context<'s>(
// Bind functions to Deno.core.*
set_func(scope, core_obj, "callConsole", call_console);
+ // Bind v8 console object to Deno.core.console
+ let extra_binding_obj = context.get_extras_binding_object(scope);
+ let console_str = v8::String::new(scope, "console").unwrap();
+ let console_obj = extra_binding_obj.get(scope, console_str.into()).unwrap();
+ core_obj.set(scope, console_str.into(), console_obj);
+
// Bind functions to Deno.core.ops.*
let ops_obj = v8::Object::new(scope);
let ops_str = v8::String::new(scope, "ops").unwrap();
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js
index 873f371ca..d4a5a0a84 100644
--- a/runtime/js/99_main.js
+++ b/runtime/js/99_main.js
@@ -399,7 +399,7 @@ delete Intl.v8BreakIterator;
performance.setTimeOrigin(DateNow());
net.setup(runtimeOptions.unstableFlag);
- const consoleFromV8 = window.console;
+ const consoleFromV8 = window.Deno.core.console;
const wrapConsole = window.__bootstrap.console.wrapConsole;
// Remove bootstrapping data from the global scope
@@ -544,7 +544,7 @@ delete Intl.v8BreakIterator;
performance.setTimeOrigin(DateNow());
net.setup(runtimeOptions.unstableFlag);
- const consoleFromV8 = window.console;
+ const consoleFromV8 = window.Deno.core.console;
const wrapConsole = window.__bootstrap.console.wrapConsole;
// Remove bootstrapping data from the global scope