Chromium Code Reviews| Index: third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
| diff --git a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
| index 8fa0dfd9e57d4d779bc06f1542787b0b5f8a8e54..618408e620a6e6f4c02e8323133e3cc1a6c56ccd 100644 |
| --- a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
| +++ b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
| @@ -93,6 +93,14 @@ void ResourceLoader::start(const ResourceRequest& request, WebTaskRunner* loadin |
| m_loader->loadAsynchronously(WrappedResourceRequest(request), this); |
| } |
| +void ResourceLoader::restart(const ResourceRequest& request) |
|
hiroshige
2016/07/28 09:56:42
I think the name of |restart| is too general, beca
Nate Chapin
2016/07/28 22:29:35
Renamed to restartForServiceWorkerFallback.
|
| +{ |
| + m_loader.reset(); |
| + m_loader = wrapUnique(Platform::current()->createURLLoader()); |
| + DCHECK(m_loader); |
| + m_loader->loadAsynchronously(WrappedResourceRequest(request), this); |
| +} |
| + |
| void ResourceLoader::setDefersLoading(bool defers) |
| { |
| ASSERT(m_loader); |
| @@ -144,60 +152,17 @@ void ResourceLoader::didSendData(WebURLLoader*, unsigned long long bytesSent, un |
| m_resource->didSendData(bytesSent, totalBytesToBeSent); |
| } |
| -bool ResourceLoader::responseNeedsAccessControlCheck() const |
| -{ |
| - // If the fetch was (potentially) CORS enabled, an access control check of the response is required. |
| - return m_resource->options().corsEnabled == IsCORSEnabled; |
| -} |
| - |
| void ResourceLoader::didReceiveResponse(WebURLLoader*, const WebURLResponse& response, WebDataConsumerHandle* rawHandle) |
| { |
| DCHECK(!response.isNull()); |
| // |rawHandle|'s ownership is transferred to the callee. |
| std::unique_ptr<WebDataConsumerHandle> handle = wrapUnique(rawHandle); |
| const ResourceResponse& resourceResponse = response.toResourceResponse(); |
| - |
| - if (responseNeedsAccessControlCheck()) { |
| - if (response.wasFetchedViaServiceWorker()) { |
| - if (response.wasFallbackRequiredByServiceWorker()) { |
| - m_loader.reset(); |
| - m_loader = wrapUnique(Platform::current()->createURLLoader()); |
| - DCHECK(m_loader); |
| - ResourceRequest request = m_resource->lastResourceRequest(); |
| - DCHECK_EQ(request.skipServiceWorker(), WebURLRequest::SkipServiceWorker::None); |
| - // This code handles the case when a regular controlling service worker |
| - // doesn't handle a cross origin request. When this happens we still |
| - // want to give foreign fetch a chance to handle the request, so |
| - // only skip the controlling service worker for the fallback request. |
| - // This is currently safe because of http://crbug.com/604084 the |
| - // wasFallbackRequiredByServiceWorker flag is never set when foreign fetch |
| - // handled a request. |
| - request.setSkipServiceWorker(WebURLRequest::SkipServiceWorker::Controlling); |
| - m_loader->loadAsynchronously(WrappedResourceRequest(request), this); |
| - return; |
| - } |
| - } else { |
| - if (!m_resource->isCacheValidator() || resourceResponse.httpStatusCode() != 304) |
| - m_resource->setResponse(resourceResponse); |
|
hiroshige
2016/07/28 09:56:42
This CL removes this setResponse(). It's probably
Nate Chapin
2016/07/28 22:29:35
Mostly correct. The only reason it needed to be he
|
| - if (!m_fetcher->canAccessResource(m_resource.get(), m_resource->options().securityOrigin.get(), response.url(), ResourceFetcher::ShouldLogAccessControlErrors)) { |
| - m_fetcher->didReceiveResponse(m_resource.get(), resourceResponse); |
| - didFail(nullptr, ResourceError::cancelledDueToAccessCheckError(KURL(response.url()))); |
| - return; |
| - } |
| - } |
| - } |
| - |
| - m_resource->responseReceived(resourceResponse, std::move(handle)); |
| - if (!m_loader) |
| + if (!m_fetcher->didReceiveResponse(m_resource.get(), resourceResponse)) |
| return; |
| - |
| - m_fetcher->didReceiveResponse(m_resource.get(), resourceResponse); |
| - if (!m_loader) |
| - return; |
| - |
| - if (m_resource->response().httpStatusCode() < 400 || m_resource->shouldIgnoreHTTPStatusCodeErrors()) |
| - return; |
| - didFail(nullptr, ResourceError::cancelledError(resourceResponse.url())); |
| + m_resource->responseReceived(resourceResponse, std::move(handle)); |
| + if (response.httpStatusCode() >= 400 && !m_resource->shouldIgnoreHTTPStatusCodeErrors()) |
|
hiroshige
2016/07/28 09:56:42
Do we need |if (!m_loader) return;| before this?
Nate Chapin
2016/07/28 22:29:35
This moved to ResourceFetcher, but add a resource-
|
| + didFail(nullptr, ResourceError::cancelledError(resourceResponse.url())); |
| } |
| void ResourceLoader::didReceiveResponse(WebURLLoader* loader, const WebURLResponse& response) |