diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc index 042d8d81c57966924f8c622dcd54f467c96fffcf..deea2696a661905bc73f60a400edb4d188a44ab6 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc @@ -1528,11 +1528,23 @@ RenderFrameHostManager::GetFrameHostForNavigation( CHECK(navigation_rfh->web_ui()); } +#if defined(OHOS_BUGFIX_CRASH) + // Maybe the speculative rfh has beed crash + if (speculative_render_frame_host_->IsRenderFrameLive()) { + CommitPending(std::move(speculative_render_frame_host_), nullptr, + request->browsing_context_group_swap().ShouldClearProxiesOnCommit()); + request->SetAssociatedRFHType( + NavigationRequest::AssociatedRenderFrameHostType::CURRENT); + } else { + base::debug::DumpWithoutCrashing(); + } +#else CommitPending( std::move(speculative_render_frame_host_), nullptr, request->browsing_context_group_swap().ShouldClearProxiesOnCommit()); request->SetAssociatedRFHType( NavigationRequest::AssociatedRenderFrameHostType::CURRENT); +#endif } } DCHECK(navigation_rfh &&