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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 2136963002: PlzNavigate: Fix missing navigation information. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: PlzNavigate: Fix missing navigation information. Created 4 years, 5 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/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(
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | third_party/WebKit/LayoutTests/FlagExpectations/enable-browser-side-navigation » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698