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 7bde6cd9a54537e86539b1e3179fd99286986710..2548b98544f5ac73dc13bba6e53a306a866a7432 100644 |
--- a/content/browser/frame_host/navigator_impl.cc |
+++ b/content/browser/frame_host/navigator_impl.cc |
@@ -11,6 +11,7 @@ |
#include "content/browser/frame_host/navigation_before_commit_info.h" |
#include "content/browser/frame_host/navigation_controller_impl.h" |
#include "content/browser/frame_host/navigation_entry_impl.h" |
+#include "content/browser/frame_host/navigation_parameters.h" |
#include "content/browser/frame_host/navigator_delegate.h" |
#include "content/browser/frame_host/render_frame_host_impl.h" |
#include "content/browser/renderer_host/render_view_host_impl.h" |
@@ -71,40 +72,21 @@ RenderFrameHostManager* GetRenderManager(RenderFrameHostImpl* rfh) { |
return rfh->frame_tree_node()->frame_tree()->root()->render_manager(); |
} |
-} // namespace |
- |
- |
-NavigatorImpl::NavigatorImpl( |
- NavigationControllerImpl* navigation_controller, |
- NavigatorDelegate* delegate) |
- : controller_(navigation_controller), |
- delegate_(delegate) { |
-} |
- |
-// static. |
-void NavigatorImpl::MakeNavigateParams( |
+void MakeNavigateParams( |
const NavigationEntryImpl& entry, |
- const NavigationControllerImpl& controller, |
+ NavigationControllerImpl* controller, |
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(); |
+ controller->FillHistoryParametersForNavigationEntry( |
+ entry, |
+ ¶ms->pending_history_list_offset, |
+ ¶ms->current_history_list_offset, |
+ ¶ms->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 +94,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( |
+ 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. |
@@ -147,6 +129,16 @@ void NavigatorImpl::MakeNavigateParams( |
params->browser_navigation_start = navigation_start; |
} |
+} // namespace |
+ |
+ |
+NavigatorImpl::NavigatorImpl( |
+ NavigationControllerImpl* navigation_controller, |
+ NavigatorDelegate* delegate) |
+ : controller_(navigation_controller), |
+ delegate_(delegate) { |
+} |
+ |
NavigationController* NavigatorImpl::GetController() { |
return controller_; |
} |
@@ -348,11 +340,6 @@ bool NavigatorImpl::NavigateToEntry( |
// TODO(ppi): make this go away. |
current_load_start_ = base::TimeTicks::Now(); |
- // Create the navigation parameters. |
- FrameMsg_Navigate_Params navigate_params; |
- MakeNavigateParams( |
- entry, *controller_, reload_type, navigation_start, &navigate_params); |
- |
RenderFrameHostManager* manager = |
render_frame_host->frame_tree_node()->render_manager(); |
@@ -361,7 +348,14 @@ bool NavigatorImpl::NavigateToEntry( |
// node. |
if (CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)) { |
- return manager->RequestNavigation(entry, navigate_params); |
+ scoped_ptr<NavigationParameters> navigation_parameters( |
+ new NavigationParameters( |
+ entry, |
+ controller_, |
+ current_load_start_, |
+ GetNavigationType( |
+ controller_->GetBrowserContext(), entry, reload_type))); |
+ return manager->RequestNavigation(navigation_parameters.Pass()); |
} |
RenderFrameHostImpl* dest_render_frame_host = manager->Navigate(entry); |
@@ -380,6 +374,11 @@ bool NavigatorImpl::NavigateToEntry( |
if (delegate_) |
delegate_->AboutToNavigateRenderFrame(dest_render_frame_host); |
+ // Create the navigation parameters. |
+ FrameMsg_Navigate_Params navigate_params; |
+ MakeNavigateParams( |
+ entry, controller_, reload_type, navigation_start, &navigate_params); |
+ |
// Navigate in the desired RenderFrameHost. |
// We can skip this step in the rare case that this is a transfer navigation |
// which began in the chosen RenderFrameHost, since the request has already |
@@ -664,11 +663,21 @@ void NavigatorImpl::RequestTransferURL( |
void NavigatorImpl::CommitNavigation( |
RenderFrameHostImpl* render_frame_host, |
- const NavigationBeforeCommitInfo& info) { |
+ const 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); |
+} |
+ |
+NavigationParameters* NavigatorImpl::MakeNavigationParametersForTest( |
(Do not use) nasko
2014/09/05 17:04:48
I know this is for testing, but it seems that it w
clamy
2014/09/08 18:37:12
Done.
|
+ const NavigationEntryImpl& entry, |
+ NavigationController::ReloadType reload_type) { |
+ FrameMsg_Navigate_Type::Value navigation_type = GetNavigationType( |
+ controller_->GetBrowserContext(), |
+ entry, |
+ reload_type); |
+ return new NavigationParameters( |
+ entry, controller_, base::TimeTicks::Now(), navigation_type); |
} |
void NavigatorImpl::CheckWebUIRendererDoesNotDisplayNormalURL( |