From f19887ce1c109ccb17a2d21550d6bb4d2e89ab4c 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 70ae9210aaa85..cfd61f9bb9af3 100644 --- a/shell/browser/api/electron_api_web_frame_main.cc +++ b/shell/browser/api/electron_api_web_frame_main.cc @@ -194,8 +194,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 779a857e14e3665789c786002c16e2824510a03f 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 cfd61f9bb9af3..a18f4caaf8d05 100644 --- a/shell/browser/api/electron_api_web_frame_main.cc +++ b/shell/browser/api/electron_api_web_frame_main.cc @@ -199,7 +199,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_)); }