feat: Add option to conditionally disable site instance patches (#18396)
* chore: allow conditional disable of the site instance override patches at runtime * feat: add app.allowRendererProcessReuse property to allow runtime disable of site instance overrides spec: add tests for the new allowRendererProcessReuse property feat: add console warnings / errors for loading non context-aware native modules * Only error if the patch is disabled * Warn all the time, this will ship in Electron 7
This commit is contained in:
parent
26155c8a00
commit
87ae9324ac
17 changed files with 221 additions and 89 deletions
|
@ -104,6 +104,13 @@ void AtomRendererClient::DidCreateScriptContext(
|
|||
|
||||
// Setup node environment for each window.
|
||||
node::Environment* env = node_bindings_->CreateEnvironment(context);
|
||||
auto* command_line = base::CommandLine::ForCurrentProcess();
|
||||
// If we have disabled the site instance overrides we should prevent loading
|
||||
// any non-context aware native module
|
||||
if (command_line->HasSwitch(switches::kDisableElectronSiteInstanceOverrides))
|
||||
env->ForceOnlyContextAwareNativeModules();
|
||||
env->WarnNonContextAwareNativeModules();
|
||||
|
||||
environments_.insert(env);
|
||||
|
||||
// Add Electron extended APIs.
|
||||
|
@ -145,9 +152,11 @@ void AtomRendererClient::WillReleaseScriptContext(
|
|||
// Destroy the node environment. We only do this if node support has been
|
||||
// enabled for sub-frames to avoid a change-of-behavior / introduce crashes
|
||||
// for existing users.
|
||||
// TODO(MarshallOfSOund): Free the environment regardless of this switch
|
||||
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
switches::kNodeIntegrationInSubFrames))
|
||||
// We also do this if we have disable electron site instance overrides to
|
||||
// avoid memory leaks
|
||||
auto* command_line = base::CommandLine::ForCurrentProcess();
|
||||
if (command_line->HasSwitch(switches::kNodeIntegrationInSubFrames) ||
|
||||
command_line->HasSwitch(switches::kDisableElectronSiteInstanceOverrides))
|
||||
node::FreeEnvironment(env);
|
||||
|
||||
// ElectronBindings is tracking node environments.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue