Index: content/browser/frame_host/frame_tree_node.cc |
diff --git a/content/browser/frame_host/frame_tree_node.cc b/content/browser/frame_host/frame_tree_node.cc |
index 398ac8680b851728dd817520444a9b0af23e0a4a..e7e58236e9f2c79ae9dc6670d83784847aae0fad 100644 |
--- a/content/browser/frame_host/frame_tree_node.cc |
+++ b/content/browser/frame_host/frame_tree_node.cc |
@@ -405,4 +405,26 @@ void FrameTreeNode::DidFocus() { |
FOR_EACH_OBSERVER(Observer, observers_, OnFrameTreeNodeFocused(this)); |
} |
+void FrameTreeNode::BeforeUnloadCanceled() { |
+ if (!IsMainFrame()) |
+ return; |
+ |
+ RenderFrameHostImpl* current_frame_host = |
+ render_manager_.current_frame_host(); |
+ DCHECK(current_frame_host); |
+ current_frame_host->ResetLoadingState(); |
+ |
+ if (IsBrowserSideNavigationEnabled()) { |
+ RenderFrameHostImpl* speculative_frame_host = |
+ render_manager_.speculative_frame_host(); |
+ if (speculative_frame_host) |
+ speculative_frame_host->ResetLoadingState(); |
+ } else { |
+ RenderFrameHostImpl* pending_frame_host = |
+ render_manager_.pending_frame_host(); |
+ if (pending_frame_host) |
+ pending_frame_host->ResetLoadingState(); |
+ } |
+} |
+ |
} // namespace content |