Index: Source/core/fetch/ResourceFetcher.cpp |
diff --git a/Source/core/fetch/ResourceFetcher.cpp b/Source/core/fetch/ResourceFetcher.cpp |
index e2316820632f3cf2a8ede80d3989d2645d3d23f8..bc0bd60516a66e094471d9c9591915d20306663b 100644 |
--- a/Source/core/fetch/ResourceFetcher.cpp |
+++ b/Source/core/fetch/ResourceFetcher.cpp |
@@ -1290,7 +1290,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()); |
} |