| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index db7242bce67a9b0995cde3fe8a29c56a4d2fa453..9884a0be2e83cb827006d961c4615d039f83d4b2 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -587,11 +587,11 @@ base::TimeTicks SanitizeNavigationTiming(
|
|
|
| // PlzNavigate
|
| CommonNavigationParams MakeCommonNavigationParams(
|
| - blink::WebURLRequest* request,
|
| - bool should_replace_current_entry) {
|
| + const blink::WebFrameClient::NavigationPolicyInfo& info) {
|
| Referrer referrer(
|
| - GURL(request->httpHeaderField(WebString::fromUTF8("Referer")).latin1()),
|
| - request->referrerPolicy());
|
| + GURL(info.urlRequest.httpHeaderField(
|
| + WebString::fromUTF8("Referer")).latin1()),
|
| + info.urlRequest.referrerPolicy());
|
|
|
| // Set the ui timestamp for this navigation. Currently the timestamp here is
|
| // only non empty when the navigation was triggered by an Android intent, or
|
| @@ -600,20 +600,26 @@ CommonNavigationParams MakeCommonNavigationParams(
|
| // CommitNavigation IPC, and then back to the browser again in the
|
| // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs.
|
| base::TimeTicks ui_timestamp =
|
| - base::TimeTicks() + base::TimeDelta::FromSecondsD(request->uiStartTime());
|
| + base::TimeTicks() +
|
| + base::TimeDelta::FromSecondsD(info.urlRequest.uiStartTime());
|
| FrameMsg_UILoadMetricsReportType::Value report_type =
|
| static_cast<FrameMsg_UILoadMetricsReportType::Value>(
|
| - request->inputPerfMetricReportPolicy());
|
| + info.urlRequest.inputPerfMetricReportPolicy());
|
| +
|
| + FrameMsg_Navigate_Type::Value navigation_type =
|
| + info.navigationType == blink::WebNavigationTypeReload
|
| + ? FrameMsg_Navigate_Type::RELOAD
|
| + : FrameMsg_Navigate_Type::NORMAL;
|
|
|
| const RequestExtraData* extra_data =
|
| - static_cast<RequestExtraData*>(request->getExtraData());
|
| + static_cast<RequestExtraData*>(info.urlRequest.getExtraData());
|
| DCHECK(extra_data);
|
| return CommonNavigationParams(
|
| - request->url(), referrer, extra_data->transition_type(),
|
| - FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry,
|
| + info.urlRequest.url(), referrer, extra_data->transition_type(),
|
| + navigation_type, true, info.replacesCurrentHistoryItem,
|
| ui_timestamp, report_type, GURL(), GURL(), extra_data->lofi_state(),
|
| - base::TimeTicks::Now(), request->httpMethod().latin1(),
|
| - GetRequestBodyForWebURLRequest(*request));
|
| + base::TimeTicks::Now(), info.urlRequest.httpMethod().latin1(),
|
| + GetRequestBodyForWebURLRequest(info.urlRequest));
|
| }
|
|
|
| media::Context3D GetSharedMainThreadContext3D(
|
| @@ -5064,8 +5070,7 @@ WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation(
|
| if (IsBrowserSideNavigationEnabled() &&
|
| info.urlRequest.checkForBrowserSideNavigation() &&
|
| ShouldMakeNetworkRequestForURL(url)) {
|
| - BeginNavigation(&info.urlRequest, info.replacesCurrentHistoryItem,
|
| - info.isClientRedirect);
|
| + BeginNavigation(info);
|
| return blink::WebNavigationPolicyHandledByClient;
|
| }
|
|
|
| @@ -5778,11 +5783,8 @@ void RenderFrameImpl::PrepareRenderViewForNavigation(
|
| }
|
| }
|
|
|
| -void RenderFrameImpl::BeginNavigation(blink::WebURLRequest* request,
|
| - bool should_replace_current_entry,
|
| - bool is_client_redirect) {
|
| +void RenderFrameImpl::BeginNavigation(const NavigationPolicyInfo& info) {
|
| CHECK(IsBrowserSideNavigationEnabled());
|
| - DCHECK(request);
|
|
|
| // Note: At this stage, the goal is to apply all the modifications the
|
| // renderer wants to make to the request, and then send it to the browser, so
|
| @@ -5794,14 +5796,14 @@ void RenderFrameImpl::BeginNavigation(blink::WebURLRequest* request,
|
| // TODO(clamy): Apply devtools override.
|
| // TODO(clamy): Make sure that navigation requests are not modified somewhere
|
| // else in blink.
|
| - willSendRequest(frame_, 0, *request, blink::WebURLResponse());
|
| + willSendRequest(frame_, 0, info.urlRequest, blink::WebURLResponse());
|
|
|
| // Update the transition type of the request for client side redirects.
|
| - if (!request->getExtraData())
|
| - request->setExtraData(new RequestExtraData());
|
| - if (is_client_redirect) {
|
| + if (!info.urlRequest.getExtraData())
|
| + info.urlRequest.setExtraData(new RequestExtraData());
|
| + if (info.isClientRedirect) {
|
| RequestExtraData* extra_data =
|
| - static_cast<RequestExtraData*>(request->getExtraData());
|
| + static_cast<RequestExtraData*>(info.urlRequest.getExtraData());
|
| extra_data->set_transition_type(ui::PageTransitionFromInt(
|
| extra_data->transition_type() | ui::PAGE_TRANSITION_CLIENT_REDIRECT));
|
| }
|
| @@ -5812,27 +5814,28 @@ void RenderFrameImpl::BeginNavigation(blink::WebURLRequest* request,
|
| // These values are assumed on the browser side for navigations. These checks
|
| // ensure the renderer has the correct values.
|
| DCHECK_EQ(FETCH_REQUEST_MODE_NAVIGATE,
|
| - GetFetchRequestModeForWebURLRequest(*request));
|
| + GetFetchRequestModeForWebURLRequest(info.urlRequest));
|
| DCHECK_EQ(FETCH_CREDENTIALS_MODE_INCLUDE,
|
| - GetFetchCredentialsModeForWebURLRequest(*request));
|
| - DCHECK(GetFetchRedirectModeForWebURLRequest(*request) ==
|
| + GetFetchCredentialsModeForWebURLRequest(info.urlRequest));
|
| + DCHECK(GetFetchRedirectModeForWebURLRequest(info.urlRequest) ==
|
| FetchRedirectMode::MANUAL_MODE);
|
| DCHECK(frame_->parent() ||
|
| - GetRequestContextFrameTypeForWebURLRequest(*request) ==
|
| + GetRequestContextFrameTypeForWebURLRequest(info.urlRequest) ==
|
| REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL);
|
| DCHECK(!frame_->parent() ||
|
| - GetRequestContextFrameTypeForWebURLRequest(*request) ==
|
| + GetRequestContextFrameTypeForWebURLRequest(info.urlRequest) ==
|
| REQUEST_CONTEXT_FRAME_TYPE_NESTED);
|
|
|
| Send(new FrameHostMsg_BeginNavigation(
|
| routing_id_,
|
| - MakeCommonNavigationParams(request, should_replace_current_entry),
|
| - BeginNavigationParams(GetWebURLRequestHeaders(*request),
|
| - GetLoadFlagsForWebURLRequest(*request),
|
| - request->hasUserGesture(),
|
| - request->skipServiceWorker() !=
|
| - blink::WebURLRequest::SkipServiceWorker::None,
|
| - GetRequestContextTypeForWebURLRequest(*request))));
|
| + MakeCommonNavigationParams(info),
|
| + BeginNavigationParams(
|
| + GetWebURLRequestHeaders(info.urlRequest),
|
| + GetLoadFlagsForWebURLRequest(info.urlRequest),
|
| + info.urlRequest.hasUserGesture(),
|
| + info.urlRequest.skipServiceWorker() !=
|
| + blink::WebURLRequest::SkipServiceWorker::None,
|
| + GetRequestContextTypeForWebURLRequest(info.urlRequest))));
|
| }
|
|
|
| void RenderFrameImpl::LoadDataURL(
|
|
|