Index: Source/core/fetch/ResourceFetcher.cpp |
diff --git a/Source/core/fetch/ResourceFetcher.cpp b/Source/core/fetch/ResourceFetcher.cpp |
index c0f8ac0d71f222a3ca0455eb20b72ac10e6cadf1..821d4cad53db9b241252e9b88448f8abd8e60488 100644 |
--- a/Source/core/fetch/ResourceFetcher.cpp |
+++ b/Source/core/fetch/ResourceFetcher.cpp |
@@ -1313,7 +1313,13 @@ void ResourceFetcher::willSendRequest(unsigned long identifier, ResourceRequest& |
void ResourceFetcher::didReceiveResponse(const Resource* resource, const ResourceResponse& response) |
{ |
- // FIXME: When response.wasFetchedViaServiceWorker() is true, we need to check the URL of the responce for CSP and CORS. |
+ if (response.wasFetchedViaServiceWorker()) { |
+ if (!canRequest(resource->type(), response.url(), resource->options(), false, FetchRequest::UseDefaultOriginRestrictionForType)) { |
+ resource->loader()->cancel(); |
+ context().dispatchDidFail(m_documentLoader, resource->identifier(), ResourceError(errorDomainBlinkInternal, 0, response.url().string(), "Original url check of ServiceWorker fetched resource failed.")); |
+ return; |
+ } |
+ } |
context().dispatchDidReceiveResponse(m_documentLoader, resource->identifier(), response, resource->loader()); |
} |