fix: make child windows not crash when ipc messages are received (#19553)
This commit is contained in:
parent
cfd230d7f1
commit
33a9d898a6
6 changed files with 39 additions and 12 deletions
|
@ -69,16 +69,25 @@ void AtomRenderFrameObserver::DidCreateScriptContext(
|
|||
if (ShouldNotifyClient(world_id))
|
||||
renderer_client_->DidCreateScriptContext(context, render_frame_);
|
||||
|
||||
auto* command_line = base::CommandLine::ForCurrentProcess();
|
||||
|
||||
bool use_context_isolation = renderer_client_->isolated_world();
|
||||
// This logic matches the EXPLAINED logic in atom_renderer_client.cc
|
||||
// to avoid explaining it twice go check that implementation in
|
||||
// DidCreateScriptContext();
|
||||
bool is_main_world = IsMainWorld(world_id);
|
||||
bool is_main_frame = render_frame_->IsMainFrame();
|
||||
bool is_not_opened = !render_frame_->GetWebFrame()->Opener();
|
||||
bool reuse_renderer_processes_enabled =
|
||||
command_line->HasSwitch(switches::kDisableElectronSiteInstanceOverrides);
|
||||
bool is_not_opened =
|
||||
!render_frame_->GetWebFrame()->Opener() ||
|
||||
command_line->HasSwitch(switches::kEnableNodeLeakageInRenderers);
|
||||
bool allow_node_in_sub_frames =
|
||||
base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
switches::kNodeIntegrationInSubFrames);
|
||||
command_line->HasSwitch(switches::kNodeIntegrationInSubFrames);
|
||||
bool should_create_isolated_context =
|
||||
use_context_isolation && is_main_world &&
|
||||
(is_main_frame || allow_node_in_sub_frames) && is_not_opened;
|
||||
(is_main_frame || allow_node_in_sub_frames) &&
|
||||
(is_not_opened || reuse_renderer_processes_enabled);
|
||||
|
||||
if (should_create_isolated_context) {
|
||||
CreateIsolatedWorldContext();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue