| Index: Source/core/loader/cache/CachedResourceLoader.cpp
|
| diff --git a/Source/core/loader/cache/CachedResourceLoader.cpp b/Source/core/loader/cache/CachedResourceLoader.cpp
|
| index d06f008c4085c53f49718bea157d282278a22822..7c70fc4c1b1c9f9e27e5f1593e4cad3ddce9c902 100644
|
| --- a/Source/core/loader/cache/CachedResourceLoader.cpp
|
| +++ b/Source/core/loader/cache/CachedResourceLoader.cpp
|
| @@ -93,7 +93,10 @@ static CachedResource* createResource(CachedResource::Type type, const ResourceR
|
| return new CachedTextTrack(request);
|
| case CachedResource::ShaderResource:
|
| return new CachedShader(request);
|
| + case CachedResource::ImportResource:
|
| + return new CachedRawResource(request, type);
|
| }
|
| +
|
| ASSERT_NOT_REACHED();
|
| return 0;
|
| }
|
| @@ -111,6 +114,7 @@ static ResourceLoadPriority loadPriority(CachedResource::Type type, const Cached
|
| case CachedResource::Script:
|
| case CachedResource::FontResource:
|
| case CachedResource::RawResource:
|
| + case CachedResource::ImportResource:
|
| return ResourceLoadPriorityMedium;
|
| case CachedResource::ImageResource:
|
| return request.forPreload() ? ResourceLoadPriorityVeryLow : ResourceLoadPriorityLow;
|
| @@ -236,6 +240,11 @@ CachedResourceHandle<CachedShader> CachedResourceLoader::requestShader(CachedRes
|
| return static_cast<CachedShader*>(requestResource(CachedResource::ShaderResource, request).get());
|
| }
|
|
|
| +CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestImport(CachedResourceRequest& request)
|
| +{
|
| + return static_cast<CachedRawResource*>(requestResource(CachedResource::ImportResource, request).get());
|
| +}
|
| +
|
| CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestCSSStyleSheet(CachedResourceRequest& request)
|
| {
|
| return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSSStyleSheet, request).get());
|
| @@ -294,6 +303,7 @@ bool CachedResourceLoader::checkInsecureContent(CachedResource::Type type, const
|
| case CachedResource::XSLStyleSheet:
|
| case CachedResource::SVGDocumentResource:
|
| case CachedResource::CSSStyleSheet:
|
| + case CachedResource::ImportResource:
|
| // These resource can inject script into the current document (Script,
|
| // XSL) or exfiltrate the content of the current document (CSS).
|
| if (Frame* f = frame())
|
| @@ -348,6 +358,7 @@ bool CachedResourceLoader::canRequest(CachedResource::Type type, const KURL& url
|
| case CachedResource::LinkSubresource:
|
| case CachedResource::TextTrackResource:
|
| case CachedResource::ShaderResource:
|
| + case CachedResource::ImportResource:
|
| // By default these types of resources can be loaded from any origin.
|
| // FIXME: Are we sure about CachedResource::FontResource?
|
| if (options.requestOriginPolicy == RestrictToSameOrigin && !m_document->securityOrigin()->canRequest(url)) {
|
| @@ -370,6 +381,7 @@ bool CachedResourceLoader::canRequest(CachedResource::Type type, const KURL& url
|
| return false;
|
| break;
|
| case CachedResource::Script:
|
| + case CachedResource::ImportResource:
|
| if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentSecurityPolicy()->allowScriptFromSource(url))
|
| return false;
|
|
|
| @@ -430,7 +442,7 @@ bool CachedResourceLoader::canAccess(CachedResource* resource)
|
| String error;
|
| switch (resource->type()) {
|
| case CachedResource::Script:
|
| - case CachedResource::RawResource:
|
| + case CachedResource::ImportResource:
|
| if (resource->options().requestOriginPolicy == PotentiallyCrossOriginEnabled
|
| && !m_document->securityOrigin()->canRequest(resource->response().url())
|
| && !resource->passesAccessControlCheck(m_document->securityOrigin(), error)) {
|
| @@ -567,6 +579,7 @@ void CachedResourceLoader::determineTargetType(ResourceRequest& request, CachedR
|
| break;
|
| case CachedResource::ShaderResource:
|
| case CachedResource::RawResource:
|
| + case CachedResource::ImportResource:
|
| targetType = ResourceRequest::TargetIsSubresource;
|
| break;
|
| case CachedResource::LinkPrefetch:
|
|
|