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