forked from electron/electron
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: use Node.js isolate setup logic in bindings (electron#24579)
* fix: use Node.js isolate setup logic in bindings * Flags should be more process-specific * Remove redundant isolate function setting * Remove old SetFatalErrorHandler call
- Loading branch information
1 parent
7c3ae34
commit 3434115
Showing
8 changed files
with
81 additions
and
85 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
50 changes: 50 additions & 0 deletions
50
patches/node/fix_allow_preventing_setpromiserejectcallback.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Shelley Vohr <shelley.vohr@gmail.com> | ||
Date: Wed, 15 Jul 2020 18:43:32 -0700 | ||
Subject: fix: allow preventing SetPromiseRejectCallback | ||
|
||
We do not want to use the promise rejection callback that Node.js uses, | ||
because it does not send PromiseRejectionEvents to the global script context. | ||
We need to use the one Blink already provides, and so we need to | ||
slightly augment IsolateSettings to allow for that. | ||
|
||
diff --git a/src/api/environment.cc b/src/api/environment.cc | ||
index 21980987644c6e83029157785dea463070456c77..20d9f91dcf6b5def05a706cf3389d64e9edbcf3e 100644 | ||
--- a/src/api/environment.cc | ||
+++ b/src/api/environment.cc | ||
@@ -241,9 +241,11 @@ void SetIsolateMiscHandlers(v8::Isolate* isolate, const IsolateSettings& s) { | ||
s.allow_wasm_code_generation_callback : AllowWasmCodeGenerationCallback; | ||
isolate->SetAllowWasmCodeGenerationCallback(allow_wasm_codegen_cb); | ||
|
||
- auto* promise_reject_cb = s.promise_reject_callback ? | ||
- s.promise_reject_callback : task_queue::PromiseRejectCallback; | ||
- isolate->SetPromiseRejectCallback(promise_reject_cb); | ||
+ if (s.flags & SHOULD_SET_PROMISE_REJECTION_CALLBACK) { | ||
+ auto* promise_reject_cb = s.promise_reject_callback ? | ||
+ s.promise_reject_callback : task_queue::PromiseRejectCallback; | ||
+ isolate->SetPromiseRejectCallback(promise_reject_cb); | ||
+ } | ||
|
||
if (s.flags & DETAILED_SOURCE_POSITIONS_FOR_PROFILING) | ||
v8::CpuProfiler::UseDetailedSourcePositionsForProfiling(isolate); | ||
diff --git a/src/node.h b/src/node.h | ||
index b9b11b4331bd3ae4a87f65758ee09af25222e19a..60ecc3bd3499c23b297bc11e7f052aede20520c2 100644 | ||
--- a/src/node.h | ||
+++ b/src/node.h | ||
@@ -304,12 +304,14 @@ class NODE_EXTERN MultiIsolatePlatform : public v8::Platform { | ||
|
||
enum IsolateSettingsFlags { | ||
MESSAGE_LISTENER_WITH_ERROR_LEVEL = 1 << 0, | ||
- DETAILED_SOURCE_POSITIONS_FOR_PROFILING = 1 << 1 | ||
+ DETAILED_SOURCE_POSITIONS_FOR_PROFILING = 1 << 1, | ||
+ SHOULD_SET_PROMISE_REJECTION_CALLBACK = 1 << 2 | ||
}; | ||
|
||
struct IsolateSettings { | ||
uint64_t flags = MESSAGE_LISTENER_WITH_ERROR_LEVEL | | ||
- DETAILED_SOURCE_POSITIONS_FOR_PROFILING; | ||
+ DETAILED_SOURCE_POSITIONS_FOR_PROFILING | | ||
+ SHOULD_SET_PROMISE_REJECTION_CALLBACK; | ||
v8::MicrotasksPolicy policy = v8::MicrotasksPolicy::kExplicit; | ||
|
||
// Error handling callbacks |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters