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 593c806a974ebfc1e1b984e4e34c984f7b91679b..1cb976b3cc890ac2dcfeb2ca280e9bfaa40f0271 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) |
{ |
ASSERT(m_client); |
ASSERT_UNUSED(resource, 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() |