Support simple back/forward in out-of-process iframes.
This moves HistoryController::GoToEntry to the browser process for
--site-per-process mode, allowing NavigationController to identify
all the frames that need to be navigated directly.
So far, this only supports navigating a leaf node and not subframes
with subtrees of their own.
[email protected]
BUG=236848
TEST=In --site-per-process, go back cross-site in a subframe.
Review URL: https://codereview.chromium.org/1181983009
Cr-Commit-Position: refs/heads/master@{#335404}
diff --git a/content/browser/frame_host/navigator_impl.h b/content/browser/frame_host/navigator_impl.h
index 05573a4..6402a55 100644
--- a/content/browser/frame_host/navigator_impl.h
+++ b/content/browser/frame_host/navigator_impl.h
@@ -49,9 +49,10 @@
void DidNavigate(RenderFrameHostImpl* render_frame_host,
const FrameHostMsg_DidCommitProvisionalLoad_Params&
input_params) override;
- bool NavigateToPendingEntry(
- FrameTreeNode* frame_tree_node,
- NavigationController::ReloadType reload_type) override;
+ bool NavigateToPendingEntry(FrameTreeNode* frame_tree_node,
+ const FrameNavigationEntry& frame_entry,
+ NavigationController::ReloadType reload_type,
+ bool is_same_document_history_load) override;
void RequestOpenURL(RenderFrameHostImpl* render_frame_host,
const GURL& url,
SiteInstance* source_site_instance,
@@ -97,10 +98,11 @@
// Navigates to the given entry, which must be the pending entry. Private
// because all callers should use NavigateToPendingEntry.
- bool NavigateToEntry(
- FrameTreeNode* frame_tree_node,
- const NavigationEntryImpl& entry,
- NavigationController::ReloadType reload_type);
+ bool NavigateToEntry(FrameTreeNode* frame_tree_node,
+ const FrameNavigationEntry& frame_entry,
+ const NavigationEntryImpl& entry,
+ NavigationController::ReloadType reload_type,
+ bool is_same_document_history_load);
bool ShouldAssignSiteForURL(const GURL& url);
@@ -112,8 +114,10 @@
// to execute the beforeUnload event. Otherwise, the navigation request will
// be started.
void RequestNavigation(FrameTreeNode* frame_tree_node,
+ const FrameNavigationEntry& frame_entry,
const NavigationEntryImpl& entry,
NavigationController::ReloadType reload_type,
+ bool is_same_document_history_load,
base::TimeTicks navigation_start);
void RecordNavigationMetrics(