| 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,
|
|
|