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

Unified Diff: content/renderer/render_frame_impl.cc

Issue 358973005: Navigation transitions: Pass is_transition_navigation flag up to the embedder (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 92e7367871040aa18c6a4c27ab77a3ff6f68fbff..0048fc1c38b241e523c39b056d17624f236c0f1b 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1644,20 +1644,16 @@ void RenderFrameImpl::loadURLExternally(
request.url(), referrer,
suggested_name, true));
} else {
- OpenURL(frame, request.url(), referrer, policy);
+ OpenURL(frame, request.url(), referrer, policy, false);
}
}
blink::WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation(
- blink::WebLocalFrame* frame,
- blink::WebDataSource::ExtraData* extra_data,
- const blink::WebURLRequest& request,
- blink::WebNavigationType type,
- blink::WebNavigationPolicy default_policy,
- bool is_redirect) {
- DCHECK(!frame_ || frame_ == frame);
+ const NavigationPolicyInfo& info) {
+ DCHECK(!frame_ || frame_ == info.frame);
return DecidePolicyForNavigation(
- this, frame, extra_data, request, type, default_policy, is_redirect);
+ this, info.frame, info.extraData, info.urlRequest, info.navigationType,
+ info.defaultPolicy, info.isRedirect, info.isTransitionNavigation);
}
blink::WebHistoryItem RenderFrameImpl::historyItemForNewChildFrame(
@@ -1718,7 +1714,8 @@ void RenderFrameImpl::didCreateDataSource(blink::WebLocalFrame* frame,
network_provider.Pass());
}
-void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame) {
+void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame,
+ bool is_transition_navigation) {
DCHECK(!frame_ || frame_ == frame);
WebDataSource* ds = frame->provisionalDataSource();
@@ -1765,7 +1762,8 @@ void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame) {
int parent_routing_id = frame->parent() ?
FromWebFrame(frame->parent())->GetRoutingID() : -1;
Send(new FrameHostMsg_DidStartProvisionalLoadForFrame(
- routing_id_, parent_routing_id, ds->request().url()));
+ routing_id_, parent_routing_id, ds->request().url(),
+ is_transition_navigation));
}
void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad(
@@ -3123,7 +3121,8 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
const WebURLRequest& request,
WebNavigationType type,
WebNavigationPolicy default_policy,
- bool is_redirect) {
+ bool is_redirect,
+ bool is_transition_navigation) {
#ifdef OS_ANDROID
// The handlenavigation API is deprecated and will be removed once
// crbug.com/325351 is resolved.
@@ -3153,7 +3152,8 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
// TODO(creis): Ensure this supports targeted form submissions when
// fixing http://crbug.com/101395.
if (frame->parent() == NULL) {
- OpenURL(frame, request.url(), referrer, default_policy);
+ OpenURL(frame, request.url(), referrer, default_policy,
+ is_transition_navigation);
return blink::WebNavigationPolicyIgnore; // Suppress the load here.
}
@@ -3197,7 +3197,7 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
url,
net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
if (!same_domain_or_host || frame_url.scheme() != url.scheme()) {
- OpenURL(frame, url, referrer, default_policy);
+ OpenURL(frame, url, referrer, default_policy, is_transition_navigation);
return blink::WebNavigationPolicyIgnore;
}
}
@@ -3222,7 +3222,7 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
// navigation.
render_view_->page_id_ = -1;
render_view_->last_page_id_sent_to_browser_ = -1;
- OpenURL(frame, url, referrer, default_policy);
+ OpenURL(frame, url, referrer, default_policy, is_transition_navigation);
return blink::WebNavigationPolicyIgnore; // Suppress the load here.
}
}
@@ -3286,7 +3286,8 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
if (should_fork) {
OpenURL(
- frame, url, send_referrer ? referrer : Referrer(), default_policy);
+ frame, url, send_referrer ? referrer : Referrer(), default_policy,
+ is_transition_navigation);
return blink::WebNavigationPolicyIgnore; // Suppress the load here.
}
}
@@ -3325,7 +3326,7 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
if (is_fork) {
// Open the URL via the browser, not via WebKit.
- OpenURL(frame, url, Referrer(), default_policy);
+ OpenURL(frame, url, Referrer(), default_policy, is_transition_navigation);
return blink::WebNavigationPolicyIgnore;
}
@@ -3335,13 +3336,15 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
void RenderFrameImpl::OpenURL(WebFrame* frame,
const GURL& url,
const Referrer& referrer,
- WebNavigationPolicy policy) {
+ WebNavigationPolicy policy,
+ bool is_transition_navigation) {
DCHECK_EQ(frame_, frame);
FrameHostMsg_OpenURL_Params params;
params.url = url;
params.referrer = referrer;
params.disposition = RenderViewImpl::NavigationPolicyToDisposition(policy);
+ params.is_transition_navigation = is_transition_navigation;
WebDataSource* ds = frame->provisionalDataSource();
if (ds) {
DocumentState* document_state = DocumentState::FromDataSource(ds);

Powered by Google App Engine
This is Rietveld 408576698