Index: content/browser/frame_host/render_frame_host_manager.cc |
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc |
index a027d934f79c79b4d49711136289bdfe78d19f9f..3642a35173dffe61c1cd8f42f3f5b4c68c701b67 100644 |
--- a/content/browser/frame_host/render_frame_host_manager.cc |
+++ b/content/browser/frame_host/render_frame_host_manager.cc |
@@ -18,6 +18,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/navigation_request.h" |
#include "content/browser/frame_host/navigation_request_info.h" |
#include "content/browser/frame_host/navigator.h" |
@@ -45,36 +46,6 @@ |
namespace content { |
-namespace { |
- |
-// PlzNavigate |
-// Simulates a renderer response to a navigation request when there is no live |
-// renderer. |
-FrameHostMsg_BeginNavigation_Params BeginNavigationFromNavigate( |
- const FrameMsg_Navigate_Params& navigate_params) { |
- FrameHostMsg_BeginNavigation_Params begin_navigation_params; |
- begin_navigation_params.method = navigate_params.is_post ? "POST" : "GET"; |
- begin_navigation_params.url = navigate_params.url; |
- begin_navigation_params.referrer = |
- Referrer(navigate_params.referrer.url, navigate_params.referrer.policy); |
- |
- // TODO(clamy): This should be modified to take into account caching policy |
- // requirements (eg for POST reloads). |
- begin_navigation_params.load_flags = net::LOAD_NORMAL; |
- |
- // TODO(clamy): Post data from the browser should be put in the request body. |
- |
- begin_navigation_params.has_user_gesture = false; |
- begin_navigation_params.transition_type = navigate_params.transition; |
- begin_navigation_params.should_replace_current_entry = |
- navigate_params.should_replace_current_entry; |
- begin_navigation_params.allow_download = |
- navigate_params.allow_download; |
- return begin_navigation_params; |
-} |
- |
-} // namespace |
- |
bool RenderFrameHostManager::ClearRFHsPendingShutdown(FrameTreeNode* node) { |
node->render_manager()->pending_delete_hosts_.clear(); |
return true; |
@@ -548,10 +519,10 @@ void RenderFrameHostManager::ResetProxyHosts() { |
// PlzNavigate |
bool RenderFrameHostManager::RequestNavigation( |
- const NavigationEntryImpl& entry, |
- const FrameMsg_Navigate_Params& navigate_params) { |
+ scoped_ptr<NavigationParameters> navigation_parameters) { |
CHECK(CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)); |
+ navigation_parameters_ = navigation_parameters.Pass(); |
// TODO(clamy): replace RenderViewHost::IsRenderViewLive by |
// RenderFrameHost::IsLive. |
if (render_frame_host_->render_view_host()->IsRenderViewLive()) |
@@ -559,7 +530,7 @@ bool RenderFrameHostManager::RequestNavigation( |
return true; |
// The navigation request is sent directly to the IO thread. |
- OnBeginNavigation(BeginNavigationFromNavigate(navigate_params)); |
+ OnBeginNavigation(navigation_parameters_->SimulateRendererResponse()); |
return true; |
} |
@@ -568,6 +539,8 @@ void RenderFrameHostManager::OnBeginNavigation( |
const FrameHostMsg_BeginNavigation_Params& params) { |
CHECK(CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableBrowserSideNavigation)); |
+ DCHECK(navigation_parameters_.get()); |
+ navigation_parameters_->UpdateFromBeginNavigationParams(params); |
// TODO(clamy): Check if navigations are blocked and if so, return |
// immediately. |
NavigationRequestInfo info(params); |
@@ -578,6 +551,7 @@ void RenderFrameHostManager::OnBeginNavigation( |
info.parent_is_main_frame = !frame_tree_node_->parent() ? |
false : frame_tree_node_->parent()->IsMainFrame(); |
info.is_showing = GetRenderWidgetHostView()->IsShowing(); |
+ info.allow_download = navigation_parameters_->allow_download(); |
// TODO(clamy): Check if the current RFH should be initialized (in case it has |
// crashed) not to display a sad tab while navigating. |
@@ -632,8 +606,11 @@ void RenderFrameHostManager::CommitNavigation( |
} |
} |
+ DCHECK(navigation_parameters_.get()); |
+ navigation_parameters_->UpdateFromCommitInfo(info); |
frame_tree_node_->navigator()->CommitNavigation( |
- render_frame_host_.get(), info); |
+ render_frame_host_.get(), |
+ navigation_parameters_->MakeCommitNavigationParams()); |
} |
void RenderFrameHostManager::Observe( |