| Index: content/browser/loader/cross_site_resource_handler.cc
|
| diff --git a/content/browser/loader/cross_site_resource_handler.cc b/content/browser/loader/cross_site_resource_handler.cc
|
| index f8a5e371e103640c85cf0f02936c02c768ae968e..3d7862ff56974f5585e39793a31ddaaae34db4a2 100644
|
| --- a/content/browser/loader/cross_site_resource_handler.cc
|
| +++ b/content/browser/loader/cross_site_resource_handler.cc
|
| @@ -88,12 +88,11 @@ void OnCrossSiteResponseHelper(const CrossSiteResponseParams& params) {
|
| void OnDeferredAfterResponseStartedHelper(
|
| const GlobalRequestID& global_request_id,
|
| int render_frame_id,
|
| - const scoped_refptr<net::HttpResponseHeaders>& headers,
|
| - const GURL& url) {
|
| + const TransitionLayerData& transition_data) {
|
| RenderFrameHostImpl* rfh =
|
| RenderFrameHostImpl::FromID(global_request_id.child_id, render_frame_id);
|
| if (rfh)
|
| - rfh->OnDeferredAfterResponseStarted(global_request_id, headers, url);
|
| + rfh->OnDeferredAfterResponseStarted(global_request_id, transition_data);
|
| }
|
|
|
| bool CheckNavigationPolicyOnUI(GURL url, int process_id, int render_frame_id) {
|
| @@ -153,14 +152,22 @@ bool CrossSiteResourceHandler::OnResponseStarted(
|
| ResourceRequestInfoImpl* info = GetRequestInfo();
|
| info->set_cross_site_handler(this);
|
|
|
| + TransitionLayerData transition_data;
|
| bool is_navigation_transition =
|
| TransitionRequestManager::GetInstance()->HasPendingTransitionRequest(
|
| - info->GetChildID(), info->GetRenderFrameID());
|
| + info->GetChildID(), info->GetRenderFrameID(), request()->url(),
|
| + &transition_data);
|
|
|
| - if (is_navigation_transition)
|
| - return OnNavigationTransitionResponseStarted(response, defer);
|
| - else
|
| + if (is_navigation_transition) {
|
| + if (response_)
|
| + transition_data.response_headers = response_->head.headers;
|
| + transition_data.request_url = request()->url();
|
| +
|
| + return OnNavigationTransitionResponseStarted(response, defer,
|
| + transition_data);
|
| + } else {
|
| return OnNormalResponseStarted(response, defer);
|
| + }
|
| }
|
|
|
| bool CrossSiteResourceHandler::OnNormalResponseStarted(
|
| @@ -231,14 +238,10 @@ bool CrossSiteResourceHandler::OnNormalResponseStarted(
|
|
|
| bool CrossSiteResourceHandler::OnNavigationTransitionResponseStarted(
|
| ResourceResponse* response,
|
| - bool* defer) {
|
| + bool* defer,
|
| + const TransitionLayerData& transition_data) {
|
| ResourceRequestInfoImpl* info = GetRequestInfo();
|
|
|
| - scoped_refptr<net::HttpResponseHeaders> headers;
|
| - if (response_)
|
| - headers = response_->head.headers;
|
| - GURL url = request()->url();
|
| -
|
| GlobalRequestID global_id(info->GetChildID(), info->GetRequestID());
|
| int render_frame_id = info->GetRenderFrameID();
|
| BrowserThread::PostTask(
|
| @@ -248,8 +251,7 @@ bool CrossSiteResourceHandler::OnNavigationTransitionResponseStarted(
|
| &OnDeferredAfterResponseStartedHelper,
|
| global_id,
|
| render_frame_id,
|
| - headers,
|
| - url));
|
| + transition_data));
|
|
|
| *defer = true;
|
| OnDidDefer();
|
|
|