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