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 2be163c8007ac3cbd6c698124b132e8482bdc250..88dc902f6a0acb12d1ba06f19283a0442ca18293 100644 |
--- a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
+++ b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
@@ -152,7 +152,7 @@ bool ResourceLoader::responseNeedsAccessControlCheck() const |
void ResourceLoader::didReceiveResponse(WebURLLoader*, const WebURLResponse& response, WebDataConsumerHandle* rawHandle) |
{ |
- ASSERT(!response.isNull()); |
+ DCHECK(!response.isNull()); |
// |rawHandle|'s ownership is transferred to the callee. |
std::unique_ptr<WebDataConsumerHandle> handle = wrapUnique(rawHandle); |
const ResourceResponse& resourceResponse = response.toResourceResponse(); |
@@ -162,10 +162,17 @@ void ResourceLoader::didReceiveResponse(WebURLLoader*, const WebURLResponse& res |
if (response.wasFallbackRequiredByServiceWorker()) { |
m_loader.reset(); |
m_loader = wrapUnique(Platform::current()->createURLLoader()); |
- ASSERT(m_loader); |
+ DCHECK(m_loader); |
ResourceRequest request = m_resource->lastResourceRequest(); |
- ASSERT(!request.skipServiceWorker()); |
- request.setSkipServiceWorker(true); |
+ 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; |
} |