|
@@ -1,18 +1,17 @@
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
From: Shelley Vohr <[email protected]>
|
|
|
-Date: Tue, 1 Sep 2020 19:30:08 -0700
|
|
|
+Date: Tue, 22 Sep 2020 19:44:30 -0700
|
|
|
Subject: fix: allow preventing InitializeInspector in env
|
|
|
|
|
|
https://github.com/nodejs/node/commit/8c5ad1392f30cfe6b107e9bd85f4cb918ba04aab
|
|
|
made it such that env->InitializeInspector was called in CreateEnvironment
|
|
|
-no matter what, which creates an issue for embedders seeking to manage
|
|
|
-the InspectorAgent themselves as Electron does. This adds a new
|
|
|
+no matter what, which creates an issue for Electron, as the V8 inspector
|
|
|
+already exists in the renderer process and therefore we only want to
|
|
|
+initialize it in the browser process. This adds a new
|
|
|
EnvironmentFlags option which allows preventing that invocation.
|
|
|
|
|
|
-This will be upstreamed.
|
|
|
-
|
|
|
diff --git a/src/api/environment.cc b/src/api/environment.cc
|
|
|
-index 4fa2d4175fb318f560b7b9a8ed8baa091d3ed6a2..7bd899c5933ac2e6178d650632699e19e85c00c9 100644
|
|
|
+index 4fa2d4175fb318f560b7b9a8ed8baa091d3ed6a2..cf6115d04ba3c184937c5db85c9d7ebc78ed3db7 100644
|
|
|
--- a/src/api/environment.cc
|
|
|
+++ b/src/api/environment.cc
|
|
|
@@ -358,12 +358,14 @@ Environment* CreateEnvironment(
|
|
@@ -25,7 +24,7 @@ index 4fa2d4175fb318f560b7b9a8ed8baa091d3ed6a2..7bd899c5933ac2e6178d650632699e19
|
|
|
- inspector_parent_handle.get())->impl));
|
|
|
- } else {
|
|
|
- env->InitializeInspector({});
|
|
|
-+ if (!env->should_not_initialize_inspector()) {
|
|
|
++ if (env->should_initialize_inspector()) {
|
|
|
+ if (inspector_parent_handle) {
|
|
|
+ env->InitializeInspector(
|
|
|
+ std::move(static_cast<InspectorParentHandleImpl*>(
|
|
@@ -37,34 +36,34 @@ index 4fa2d4175fb318f560b7b9a8ed8baa091d3ed6a2..7bd899c5933ac2e6178d650632699e19
|
|
|
#endif
|
|
|
|
|
|
diff --git a/src/env-inl.h b/src/env-inl.h
|
|
|
-index 623e9d4e429c03bb267539a318166f3ef3b9c501..8fc5f720764dd4ca536ae01ca78b2c7e3e9fd007 100644
|
|
|
+index 623e9d4e429c03bb267539a318166f3ef3b9c501..52a122a51049238547ff662bed1a10b346f3af00 100644
|
|
|
--- a/src/env-inl.h
|
|
|
+++ b/src/env-inl.h
|
|
|
-@@ -833,6 +833,10 @@ inline bool Environment::owns_inspector() const {
|
|
|
- return flags_ & EnvironmentFlags::kOwnsInspector;
|
|
|
+@@ -837,6 +837,10 @@ inline bool Environment::tracks_unmanaged_fds() const {
|
|
|
+ return flags_ & EnvironmentFlags::kTrackUnmanagedFds;
|
|
|
}
|
|
|
|
|
|
-+inline bool Environment::should_not_initialize_inspector() const {
|
|
|
-+ return flags_ & EnvironmentFlags::kNoInitializeInspector;
|
|
|
++inline bool Environment::should_initialize_inspector() const {
|
|
|
++ return (flags_ & EnvironmentFlags::kNoInitializeInspector) == 0;
|
|
|
+}
|
|
|
+
|
|
|
- inline bool Environment::tracks_unmanaged_fds() const {
|
|
|
- return flags_ & EnvironmentFlags::kTrackUnmanagedFds;
|
|
|
+ bool Environment::filehandle_close_warning() const {
|
|
|
+ return emit_filehandle_warning_;
|
|
|
}
|
|
|
diff --git a/src/env.h b/src/env.h
|
|
|
-index 38d17f4e18aa38fde2c2f59a9816c8fb0f65fd51..4b9c2780f9736cb8bde60f40abb9aac9d53160a1 100644
|
|
|
+index 38d17f4e18aa38fde2c2f59a9816c8fb0f65fd51..4fe2eb3b7699efcab87c377743a955effbbfd9de 100644
|
|
|
--- a/src/env.h
|
|
|
+++ b/src/env.h
|
|
|
-@@ -1019,6 +1019,7 @@ class Environment : public MemoryRetainer {
|
|
|
-
|
|
|
- inline bool is_main_thread() const;
|
|
|
- inline bool should_not_register_esm_loader() const;
|
|
|
-+ inline bool should_not_initialize_inspector() const;
|
|
|
+@@ -1022,6 +1022,7 @@ class Environment : public MemoryRetainer {
|
|
|
inline bool owns_process_state() const;
|
|
|
inline bool owns_inspector() const;
|
|
|
inline bool tracks_unmanaged_fds() const;
|
|
|
++ inline bool should_initialize_inspector() const;
|
|
|
+ inline uint64_t thread_id() const;
|
|
|
+ inline worker::Worker* worker_context() const;
|
|
|
+ Environment* worker_parent_env() const;
|
|
|
diff --git a/src/node.h b/src/node.h
|
|
|
-index 80acb3f9f04ef8e6c363cf31384af4037abeeb87..6b657f6941b8f96da08b6397e01e19a2763edf8f 100644
|
|
|
+index 80acb3f9f04ef8e6c363cf31384af4037abeeb87..22f037b0b26f39f9ce94c4a364b27cf204366cb9 100644
|
|
|
--- a/src/node.h
|
|
|
+++ b/src/node.h
|
|
|
@@ -424,7 +424,11 @@ enum Flags : uint64_t {
|
|
@@ -73,9 +72,9 @@ index 80acb3f9f04ef8e6c363cf31384af4037abeeb87..6b657f6941b8f96da08b6397e01e19a2
|
|
|
// by fs.open() and fs.close(), and close them during FreeEnvironment().
|
|
|
- kTrackUnmanagedFds = 1 << 4
|
|
|
+ kTrackUnmanagedFds = 1 << 4,
|
|
|
-+ // This flag should be set to prevent InspectorAgent initialization from
|
|
|
-+ // within the environment. This is used by embedders who wish to manage the
|
|
|
-+ // InspectorAgent themselves.
|
|
|
++ // Controls whether or not the Environment should call InitializeInspector.
|
|
|
++ // This control is needed by embedders who may not want to initialize the V8
|
|
|
++ // inspector in situations where it already exists.
|
|
|
+ kNoInitializeInspector = 1 << 5
|
|
|
};
|
|
|
} // namespace EnvironmentFlags
|