| Index: Source/core/loader/cache/CachedResourceLoader.cpp
|
| diff --git a/Source/core/loader/cache/CachedResourceLoader.cpp b/Source/core/loader/cache/CachedResourceLoader.cpp
|
| index 2dd32893ad18c270b28f7f4a5b64dde8331de027..2f711d87cbd16198c43b658dbe4de29173f3da5d 100644
|
| --- a/Source/core/loader/cache/CachedResourceLoader.cpp
|
| +++ b/Source/core/loader/cache/CachedResourceLoader.cpp
|
| @@ -92,7 +92,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;
|
| }
|
| @@ -110,6 +113,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;
|
| @@ -235,6 +239,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());
|
| @@ -293,6 +302,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())
|
| @@ -369,6 +379,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;
|
|
|
| @@ -429,7 +440,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)) {
|
| @@ -566,6 +577,7 @@ void CachedResourceLoader::determineTargetType(ResourceRequest& request, CachedR
|
| break;
|
| case CachedResource::ShaderResource:
|
| case CachedResource::RawResource:
|
| + case CachedResource::ImportResource:
|
| targetType = ResourceRequest::TargetIsSubresource;
|
| break;
|
| case CachedResource::LinkPrefetch:
|
|
|