From 93273a0cbe3b2c15cd70ebc2290ca9ffcd0328fd Mon Sep 17 00:00:00 2001 From: samuelmaddock Date: Wed, 1 Jun 2022 13:49:48 -0400 Subject: [PATCH 1/2] fix: crash when RenderFrameHost is nullptr --- shell/browser/api/electron_api_web_frame_main.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/shell/browser/api/electron_api_web_frame_main.cc b/shell/browser/api/electron_api_web_frame_main.cc index f8bc7c9efcd11..c6951bd66a221 100644 --- a/shell/browser/api/electron_api_web_frame_main.cc +++ b/shell/browser/api/electron_api_web_frame_main.cc @@ -193,8 +193,12 @@ void WebFrameMain::MaybeSetupMojoConnection() { renderer_api_.set_disconnect_handler(base::BindOnce( &WebFrameMain::OnRendererConnectionError, weak_factory_.GetWeakPtr())); } + + // Render frame should exist when this method is called. + DCHECK(render_frame_); + // Wait for RenderFrame to be created in renderer before accessing remote. - if (pending_receiver_ && render_frame_->IsRenderFrameCreated()) { + if (pending_receiver_ && render_frame_ && render_frame_->IsRenderFrameCreated()) { render_frame_->GetRemoteInterfaces()->GetInterface( std::move(pending_receiver_)); } From 5cc08fea16b0bb357dce90c1ac8cc4110f0a5f5b Mon Sep 17 00:00:00 2001 From: samuelmaddock Date: Wed, 1 Jun 2022 14:16:28 -0400 Subject: [PATCH 2/2] chore: lint fix --- shell/browser/api/electron_api_web_frame_main.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/browser/api/electron_api_web_frame_main.cc b/shell/browser/api/electron_api_web_frame_main.cc index c6951bd66a221..065150fbf3e82 100644 --- a/shell/browser/api/electron_api_web_frame_main.cc +++ b/shell/browser/api/electron_api_web_frame_main.cc @@ -198,7 +198,8 @@ void WebFrameMain::MaybeSetupMojoConnection() { DCHECK(render_frame_); // Wait for RenderFrame to be created in renderer before accessing remote. - if (pending_receiver_ && render_frame_ && render_frame_->IsRenderFrameCreated()) { + if (pending_receiver_ && render_frame_ && + render_frame_->IsRenderFrameCreated()) { render_frame_->GetRemoteInterfaces()->GetInterface( std::move(pending_receiver_)); }