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

Unified Diff: content/browser/frame_host/render_frame_host_manager.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 class to keep track of navigation parameters Created 6 years, 3 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/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(

Powered by Google App Engine
This is Rietveld 408576698