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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 1182453002: PlzNavigate: support for should_replace_current_entry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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
« content/common/navigation_params.h ('K') | « content/renderer/render_frame_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 317c05c5c3333ecf4ef6976ac196db678a5cc05d..ea3bb9cf2b7e4eca27319da8deb690268f009c61 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -459,8 +459,8 @@ void UpdateFrameNavigationTiming(WebFrame* frame,
}
// PlzNavigate
-CommonNavigationParams MakeCommonNavigationParams(
- blink::WebURLRequest* request) {
+CommonNavigationParams MakeCommonNavigationParams(blink::WebURLRequest* request,
+ bool lock_history_list) {
const RequestExtraData kEmptyData;
const RequestExtraData* extra_data =
static_cast<RequestExtraData*>(request->extraData());
@@ -481,10 +481,10 @@ CommonNavigationParams MakeCommonNavigationParams(
FrameMsg_UILoadMetricsReportType::Value report_type =
static_cast<FrameMsg_UILoadMetricsReportType::Value>(
request->inputPerfMetricReportPolicy());
- return CommonNavigationParams(request->url(), referrer,
- extra_data->transition_type(),
- FrameMsg_Navigate_Type::NORMAL, true,
- ui_timestamp, report_type, GURL(), GURL());
+ return CommonNavigationParams(
+ request->url(), referrer, extra_data->transition_type(),
+ FrameMsg_Navigate_Type::NORMAL, true, ui_timestamp, report_type, GURL(),
+ GURL(), lock_history_list);
}
#if !defined(OS_ANDROID)
@@ -4289,7 +4289,7 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableBrowserSideNavigation) &&
info.urlRequest.checkForBrowserSideNavigation()) {
- BeginNavigation(&info.urlRequest);
+ BeginNavigation(&info.urlRequest, info.isBackForwardListLocked);
return blink::WebNavigationPolicyIgnore;
}
@@ -4385,6 +4385,10 @@ void RenderFrameImpl::NavigateInternal(
WebHistoryItem item_for_history_navigation;
WebURLRequest request = CreateURLRequestForNavigation(
common_params, stream_params.Pass(), frame_->isViewSourceModeEnabled());
+ bool is_client_redirect =
+ browser_side_navigation
+ ? common_params.transition & ui::PAGE_TRANSITION_CLIENT_REDIRECT
+ : false;
// PlzNavigate: Make sure that Blink's loader will not try to use browser side
// navigation for this request (since it already went to the browser).
@@ -4487,8 +4491,10 @@ void RenderFrameImpl::NavigateInternal(
base::TimeTicks renderer_navigation_start = base::TimeTicks::Now();
// Load the request.
- frame_->toWebLocalFrame()->load(request, load_type,
- item_for_history_navigation);
+ frame_->toWebLocalFrame()->load(
+ request, load_type, item_for_history_navigation,
+ blink::WebHistoryDifferentDocumentLoad, is_client_redirect,
+ common_params.lock_history_list);
if (load_type == blink::WebFrameLoadType::Standard) {
UpdateFrameNavigationTiming(frame_,
@@ -4675,7 +4681,8 @@ bool RenderFrameImpl::PrepareRenderViewForNavigation(
return true;
}
-void RenderFrameImpl::BeginNavigation(blink::WebURLRequest* request) {
+void RenderFrameImpl::BeginNavigation(blink::WebURLRequest* request,
+ bool lock_history_list) {
CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableBrowserSideNavigation));
DCHECK(request);
@@ -4698,12 +4705,11 @@ void RenderFrameImpl::BeginNavigation(blink::WebURLRequest* request) {
// TODO(clamy): Data urls should not be sent back to the browser either.
Send(new FrameHostMsg_DidStartLoading(routing_id_, true));
Send(new FrameHostMsg_BeginNavigation(
- routing_id_, MakeCommonNavigationParams(request),
- BeginNavigationParams(request->httpMethod().latin1(),
- GetWebURLRequestHeaders(*request),
- GetLoadFlagsForWebURLRequest(*request),
- request->hasUserGesture()),
- GetRequestBodyForWebURLRequest(*request)));
+ routing_id_, MakeCommonNavigationParams(request, lock_history_list),
+ BeginNavigationParams(
+ request->httpMethod().latin1(), GetWebURLRequestHeaders(*request),
+ GetLoadFlagsForWebURLRequest(*request), request->hasUserGesture()),
+ GetRequestBodyForWebURLRequest(*request)));
}
void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params,
« content/common/navigation_params.h ('K') | « content/renderer/render_frame_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698