diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc index dce486c053bc2..8cf9dc7a9a38f 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc @@ -2448,10 +2448,14 @@ void WebViewImpl::SetPageLifecycleState( mojom::blink::PageRestoreParamsPtr page_restore_params, SetPageLifecycleStateCallback callback) { TRACE_EVENT0("navigation", "WebViewImpl::SetPageLifecycleState"); + bool entering_bfcache = state->is_in_back_forward_cache && + GetPage() && !GetPage()->GetPageLifecycleState()->is_in_back_forward_cache; SetPageLifecycleStateInternal(std::move(state), std::move(page_restore_params)); - // Tell the browser that the lifecycle update was successful. std::move(callback).Run(); + if (entering_bfcache) { + receiver_.reset(); + } } // Returns true if this state update is for the page being restored from