Skip to content

Commit

Permalink
fix: account for potentially swapped FrameTreeNodeId in `WebFrameMa…
Browse files Browse the repository at this point in the history
…in` (#41538)

fix: account for potentially swapped FrameTreeNodeId in WebFrameMain

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
  • Loading branch information
codebytere and jkleinsc committed Mar 14, 2024
1 parent 122a2fd commit 1bfd3e0
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions shell/browser/api/electron_api_web_frame_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,17 @@ WebFrameMain* WebFrameMain::FromFrameTreeNodeId(int frame_tree_node_id) {

// static
WebFrameMain* WebFrameMain::FromRenderFrameHost(content::RenderFrameHost* rfh) {
return rfh ? FromFrameTreeNodeId(rfh->GetFrameTreeNodeId()) : nullptr;
if (!rfh)
return nullptr;

// TODO(codebytere): remove after refactoring away from FrameTreeNodeId as map
// key.
auto* ftn =
static_cast<content::RenderFrameHostImpl*>(rfh)->frame_tree_node();
if (!ftn)
return nullptr;

return FromFrameTreeNodeId(rfh->GetFrameTreeNodeId());
}

gin::WrapperInfo WebFrameMain::kWrapperInfo = {gin::kEmbedderNativeGin};
Expand Down Expand Up @@ -358,8 +368,9 @@ gin::Handle<WebFrameMain> WebFrameMain::New(v8::Isolate* isolate) {
// static
gin::Handle<WebFrameMain> WebFrameMain::From(v8::Isolate* isolate,
content::RenderFrameHost* rfh) {
if (rfh == nullptr)
if (!rfh)
return gin::Handle<WebFrameMain>();

auto* web_frame = FromRenderFrameHost(rfh);
if (web_frame)
return gin::CreateHandle(isolate, web_frame);
Expand All @@ -376,12 +387,14 @@ gin::Handle<WebFrameMain> WebFrameMain::From(v8::Isolate* isolate,
gin::Handle<WebFrameMain> WebFrameMain::FromOrNull(
v8::Isolate* isolate,
content::RenderFrameHost* rfh) {
if (rfh == nullptr)
if (!rfh)
return gin::Handle<WebFrameMain>();

auto* web_frame = FromRenderFrameHost(rfh);
if (web_frame)
return gin::CreateHandle(isolate, web_frame);
return gin::Handle<WebFrameMain>();
if (!web_frame)
return gin::Handle<WebFrameMain>();

return gin::CreateHandle(isolate, web_frame);
}

// static
Expand Down

0 comments on commit 1bfd3e0

Please sign in to comment.