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); |