Index: third_party/WebKit/Source/modules/fetch/FetchManager.cpp |
diff --git a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp |
index 37ad99a8621ae4bf4cc5cddb74b97db9a3f11748..3d755b6efc711659a3d9cd28a788c5758945aa71 100644 |
--- a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp |
+++ b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp |
@@ -448,26 +448,14 @@ void FetchManager::Loader::didReceiveResponse( |
FetchResponseData* taintedResponse = nullptr; |
- if (NetworkUtils::isRedirectResponseCode(m_responseHttpStatusCode)) { |
- Vector<String> locations; |
- responseData->headerList()->getAll(HTTPNames::Location, locations); |
- if (locations.size() > 1) { |
- performNetworkError("Multiple Location header."); |
- return; |
- } |
- if (locations.size() == 1) { |
- KURL locationURL(m_request->url(), locations[0]); |
- if (!locationURL.isValid()) { |
- performNetworkError("Invalid Location header."); |
- return; |
- } |
- ASSERT(m_request->redirect() == WebURLRequest::FetchRedirectModeManual); |
- taintedResponse = responseData->createOpaqueRedirectFilteredResponse(); |
- } |
- // When the location header doesn't exist, we don't treat the response |
- // as a redirect response, and execute tainting. |
- } |
- if (!taintedResponse) { |
+ DCHECK(!(NetworkUtils::isRedirectResponseCode(m_responseHttpStatusCode) && |
+ responseData->headerList()->has(HTTPNames::Location) && |
+ m_request->redirect() != WebURLRequest::FetchRedirectModeManual)); |
+ |
+ if (NetworkUtils::isRedirectResponseCode(m_responseHttpStatusCode) && |
+ m_request->redirect() == WebURLRequest::FetchRedirectModeManual) { |
+ taintedResponse = responseData->createOpaqueRedirectFilteredResponse(); |
+ } else { |
switch (tainting) { |
case FetchRequestData::BasicTainting: |
taintedResponse = responseData->createBasicFilteredResponse(); |