Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2312)

Unified Diff: content/browser/frame_host/navigator_impl.cc

Issue 483773002: PlzNavigate: implement CommitNavigation on the browser side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a unit test for the reload case Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/frame_host/navigator_impl.cc
diff --git a/content/browser/frame_host/navigator_impl.cc b/content/browser/frame_host/navigator_impl.cc
index b64af9abe8acce4fd5dfc61a78a21e329e54b82d..b7e7450a72758dd9026ed7cde6cf8b770e448c40 100644
--- a/content/browser/frame_host/navigator_impl.cc
+++ b/content/browser/frame_host/navigator_impl.cc
@@ -82,29 +82,47 @@ NavigatorImpl::NavigatorImpl(
}
// static.
+scoped_ptr<FrameMsg_CommitNavigation_Params>
+NavigatorImpl::MakeCommitNavigationParams(
+ const NavigationEntryImpl& entry,
+ const NavigatorImpl* navigator,
+ NavigationController::ReloadType reload_type) {
+ scoped_ptr<FrameMsg_CommitNavigation_Params> commit_navigation_params(
+ new FrameMsg_CommitNavigation_Params());
+ commit_navigation_params->page_id = entry.GetPageID();
+ navigator->controller_->FillHistoryParametersForNavigationEntry(
(Do not use) nasko 2014/08/28 16:39:08 Do we need navigator for anything else than the co
clamy 2014/09/02 18:25:19 Done.
+ entry,
+ &commit_navigation_params->pending_history_list_offset,
+ &commit_navigation_params->current_history_list_offset,
+ &commit_navigation_params->current_history_list_length);
+ commit_navigation_params->should_clear_history_list =
+ entry.should_clear_history_list();
+ commit_navigation_params->referrer = entry.GetReferrer();
+ commit_navigation_params->transition = entry.GetTransitionType();
+ commit_navigation_params->page_state = entry.GetPageState();
+ commit_navigation_params->navigation_type = GetNavigationType(
+ navigator->controller_->GetBrowserContext(), entry, reload_type);
+ commit_navigation_params->is_overriding_user_agent =
+ entry.GetIsOverridingUserAgent();
+ return commit_navigation_params.Pass();
+}
+
+// static.
void NavigatorImpl::MakeNavigateParams(
const NavigationEntryImpl& entry,
- const NavigationControllerImpl& controller,
+ const NavigatorImpl* navigator,
NavigationController::ReloadType reload_type,
base::TimeTicks navigation_start,
FrameMsg_Navigate_Params* params) {
params->page_id = entry.GetPageID();
params->should_clear_history_list = entry.should_clear_history_list();
params->should_replace_current_entry = entry.should_replace_entry();
- if (entry.should_clear_history_list()) {
- // Set the history list related parameters to the same values a
- // NavigationController would return before its first navigation. This will
- // fully clear the RenderView's view of the session history.
- params->pending_history_list_offset = -1;
- params->current_history_list_offset = -1;
- params->current_history_list_length = 0;
- } else {
- params->pending_history_list_offset = controller.GetIndexOfEntry(&entry);
- params->current_history_list_offset =
- controller.GetLastCommittedEntryIndex();
- params->current_history_list_length = controller.GetEntryCount();
- }
params->url = entry.GetURL();
+ navigator->controller_->FillHistoryParametersForNavigationEntry(
+ entry,
+ &params->pending_history_list_offset,
+ &params->current_history_list_offset,
+ &params->current_history_list_length);
if (!entry.GetBaseURLForDataURL().is_empty()) {
params->base_url_for_data_url = entry.GetBaseURLForDataURL();
params->history_url_for_data_url = entry.GetVirtualURL();
@@ -112,8 +130,8 @@ void NavigatorImpl::MakeNavigateParams(
params->referrer = entry.GetReferrer();
params->transition = entry.GetTransitionType();
params->page_state = entry.GetPageState();
- params->navigation_type =
- GetNavigationType(controller.GetBrowserContext(), entry, reload_type);
+ params->navigation_type = GetNavigationType(
+ navigator->controller_->GetBrowserContext(), entry, reload_type);
// This is used by the old performance infrastructure to set up DocumentState
// associated with the RenderView.
// TODO(ppi): make it go away.
@@ -351,7 +369,7 @@ bool NavigatorImpl::NavigateToEntry(
// Create the navigation parameters.
FrameMsg_Navigate_Params navigate_params;
MakeNavigateParams(
- entry, *controller_, reload_type, navigation_start, &navigate_params);
+ entry, this, reload_type, navigation_start, &navigate_params);
RenderFrameHostManager* manager =
render_frame_host->frame_tree_node()->render_manager();
@@ -361,7 +379,9 @@ bool NavigatorImpl::NavigateToEntry(
// node.
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableBrowserSideNavigation)) {
- return manager->RequestNavigation(entry, navigate_params);
+ return manager->RequestNavigation(
+ MakeCommitNavigationParams(entry, this, reload_type),
+ navigate_params);
}
RenderFrameHostImpl* dest_render_frame_host = manager->Navigate(entry);
@@ -664,11 +684,10 @@ void NavigatorImpl::RequestTransferURL(
void NavigatorImpl::CommitNavigation(
RenderFrameHostImpl* render_frame_host,
- const NavigationBeforeCommitInfo& info) {
+ scoped_ptr<FrameMsg_CommitNavigation_Params> commit_navigation_params) {
CheckWebUIRendererDoesNotDisplayNormalURL(
- render_frame_host, info.navigation_url);
- // TODO(clamy): the render_frame_host should now send a commit IPC to the
- // renderer.
+ render_frame_host, commit_navigation_params->url);
+ render_frame_host->CommitNavigation(*commit_navigation_params.get());
}
void NavigatorImpl::CheckWebUIRendererDoesNotDisplayNormalURL(

Powered by Google App Engine
This is Rietveld 408576698