| Index: third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
|
| diff --git a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
|
| index cbe22b3d8466f6b2a84f33e83bacdc133b69c9c3..9e8a6e692f60c89786906e092978736d38de9b23 100644
|
| --- a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
|
| @@ -415,7 +415,7 @@ void DocumentThreadableLoader::clear()
|
| // RawResource::didAddClient(), clearing |request| won't be propagated
|
| // to content::WebURLLoaderImpl. So, this loader must also get detached from
|
| // the resource by calling clearResource().
|
| -void DocumentThreadableLoader::redirectReceived(Resource* resource, ResourceRequest& request, const ResourceResponse& redirectResponse)
|
| +bool DocumentThreadableLoader::redirectReceived(Resource* resource, ResourceRequest& request, const ResourceResponse& redirectResponse)
|
| {
|
| DCHECK(m_client);
|
| DCHECK_EQ(resource, this->resource());
|
| @@ -428,9 +428,7 @@ void DocumentThreadableLoader::redirectReceived(Resource* resource, ResourceRequ
|
|
|
| handlePreflightFailure(redirectResponse.url().getString(), "Response for preflight is invalid (redirect)");
|
|
|
| - request = ResourceRequest();
|
| -
|
| - return;
|
| + return false;
|
| }
|
|
|
| if (m_redirectMode == WebURLRequest::FetchRedirectModeManual) {
|
| @@ -451,8 +449,7 @@ void DocumentThreadableLoader::redirectReceived(Resource* resource, ResourceRequ
|
| responseReceived(resource, redirectResponse, wrapUnique(new EmptyDataHandle()));
|
|
|
| if (!self) {
|
| - request = ResourceRequest();
|
| - return;
|
| + return false;
|
| }
|
|
|
| if (m_client) {
|
| @@ -460,9 +457,7 @@ void DocumentThreadableLoader::redirectReceived(Resource* resource, ResourceRequ
|
| notifyFinished(resource);
|
| }
|
|
|
| - request = ResourceRequest();
|
| -
|
| - return;
|
| + return false;
|
| }
|
|
|
| if (m_redirectMode == WebURLRequest::FetchRedirectModeError) {
|
| @@ -470,24 +465,21 @@ void DocumentThreadableLoader::redirectReceived(Resource* resource, ResourceRequ
|
| clear();
|
| client->didFailRedirectCheck();
|
|
|
| - request = ResourceRequest();
|
| -
|
| - return;
|
| + return false;
|
| }
|
|
|
| // Allow same origin requests to continue after allowing clients to audit the redirect.
|
| if (isAllowedRedirect(request.url())) {
|
| if (m_client->isDocumentThreadableLoaderClient())
|
| - static_cast<DocumentThreadableLoaderClient*>(m_client)->willFollowRedirect(request, redirectResponse);
|
| - return;
|
| + return static_cast<DocumentThreadableLoaderClient*>(m_client)->willFollowRedirect(request, redirectResponse);
|
| + return true;
|
| }
|
|
|
| if (m_corsRedirectLimit <= 0) {
|
| ThreadableLoaderClient* client = m_client;
|
| clear();
|
| client->didFailRedirectCheck();
|
| - request = ResourceRequest();
|
| - return;
|
| + return false;
|
| }
|
|
|
| --m_corsRedirectLimit;
|
| @@ -515,8 +507,7 @@ void DocumentThreadableLoader::redirectReceived(Resource* resource, ResourceRequ
|
| ThreadableLoaderClient* client = m_client;
|
| clear();
|
| client->didFailAccessControlCheck(ResourceError(errorDomainBlinkInternal, 0, redirectResponse.url().getString(), accessControlErrorDescription));
|
| - request = ResourceRequest();
|
| - return;
|
| + return false;
|
| }
|
|
|
| // FIXME: consider combining this with CORS redirect handling performed by
|
| @@ -553,6 +544,8 @@ void DocumentThreadableLoader::redirectReceived(Resource* resource, ResourceRequ
|
| request.setHTTPHeaderField(header.key, header.value);
|
| makeCrossOriginAccessRequest(request);
|
| // |this| may be dead here.
|
| +
|
| + return true;
|
| }
|
|
|
| void DocumentThreadableLoader::redirectBlocked()
|
|
|