diff --git a/shell/browser/api/electron_api_web_frame_main.cc b/shell/browser/api/electron_api_web_frame_main.cc index 3e800659a48c..cc3d142eef04 100644 --- a/shell/browser/api/electron_api_web_frame_main.cc +++ b/shell/browser/api/electron_api_web_frame_main.cc @@ -183,7 +183,7 @@ void WebFrameMain::UpdateRenderFrameHost(content::RenderFrameHost* rfh) { } bool WebFrameMain::CheckRenderFrame() const { - if (render_frame_disposed_) { + if (!HasRenderFrame()) { v8::Isolate* isolate = JavascriptEnvironment::GetIsolate(); v8::HandleScope scope(isolate); gin_helper::ErrorThrower(isolate).ThrowError( @@ -435,7 +435,7 @@ v8::Local WebFrameMain::CollectDocumentJSCallStack( gin_helper::Promise promise(args->isolate()); v8::Local handle = promise.GetHandle(); - if (render_frame_disposed_) { + if (!HasRenderFrame()) { promise.RejectWithErrorMessage( "Render frame was disposed before WebFrameMain could be accessed"); return handle; @@ -463,7 +463,7 @@ void WebFrameMain::CollectedJavaScriptCallStack( gin_helper::Promise promise, const std::string& untrusted_javascript_call_stack, const std::optional& remote_frame_token) { - if (render_frame_disposed_) { + if (!HasRenderFrame()) { promise.RejectWithErrorMessage( "Render frame was disposed before call stack was received"); return; diff --git a/shell/browser/api/electron_api_web_frame_main.h b/shell/browser/api/electron_api_web_frame_main.h index 9191e6f34621..de984aee5db6 100644 --- a/shell/browser/api/electron_api_web_frame_main.h +++ b/shell/browser/api/electron_api_web_frame_main.h @@ -101,8 +101,14 @@ class WebFrameMain final : public gin::Wrappable, void TeardownMojoConnection(); void OnRendererConnectionError(); - // WebFrameMain can outlive its RenderFrameHost pointer so we need to check - // whether its been disposed of prior to accessing it. + [[nodiscard]] constexpr bool HasRenderFrame() const { + return !render_frame_disposed_ && render_frame_ != nullptr; + } + + // Throws a JS error if HasRenderFrame() is false. + // WebFrameMain can outlive its RenderFrameHost pointer, + // so we need to check whether its been disposed of + // prior to accessing it. bool CheckRenderFrame() const; v8::Local ExecuteJavaScript(gin::Arguments* args,