Index: Source/core/loader/cache/CachedResourceLoader.cpp |
diff --git a/Source/core/loader/cache/CachedResourceLoader.cpp b/Source/core/loader/cache/CachedResourceLoader.cpp |
index 841708aac540e126a08e4f74de335ce3a7639c52..e630d225c08c0938cdb075c1a7014025cf859a56 100644 |
--- a/Source/core/loader/cache/CachedResourceLoader.cpp |
+++ b/Source/core/loader/cache/CachedResourceLoader.cpp |
@@ -76,6 +76,8 @@ static CachedResource* createResource(CachedResource::Type type, ResourceRequest |
return new CachedCSSStyleSheet(request, charset); |
case CachedResource::Script: |
return new CachedScript(request, charset); |
+ case CachedResource::HTMLDocumentResource: |
+ return new CachedDocument(request, CachedResource::HTMLDocumentResource); |
case CachedResource::SVGDocumentResource: |
return new CachedDocument(request, CachedResource::SVGDocumentResource); |
case CachedResource::FontResource: |
@@ -200,6 +202,11 @@ CachedResourceHandle<CachedDocument> CachedResourceLoader::requestSVGDocument(Ca |
return static_cast<CachedDocument*>(requestResource(CachedResource::SVGDocumentResource, request).get()); |
} |
+CachedResourceHandle<CachedDocument> CachedResourceLoader::requestHTMLDocument(CachedResourceRequest& request) |
+{ |
+ return static_cast<CachedDocument*>(requestResource(CachedResource::HTMLDocumentResource, request).get()); |
+} |
+ |
CachedResourceHandle<CachedResource> CachedResourceLoader::requestLinkResource(CachedResource::Type type, CachedResourceRequest& request) |
{ |
ASSERT(frame()); |
@@ -223,6 +230,7 @@ bool CachedResourceLoader::checkInsecureContent(CachedResource::Type type, const |
case CachedResource::Script: |
case CachedResource::XSLStyleSheet: |
case CachedResource::SVGDocumentResource: |
+ case CachedResource::HTMLDocumentResource: |
case CachedResource::CSSStyleSheet: |
// These resource can inject script into the current document (Script, |
// XSL) or exfiltrate the content of the current document (CSS). |
@@ -282,6 +290,7 @@ bool CachedResourceLoader::canRequest(CachedResource::Type type, const KURL& url |
// FIXME: Are we sure about CachedResource::FontResource? |
break; |
case CachedResource::SVGDocumentResource: |
+ case CachedResource::HTMLDocumentResource: |
case CachedResource::XSLStyleSheet: |
if (!m_document->securityOrigin()->canRequest(url)) { |
printAccessDeniedMessage(url); |
@@ -313,6 +322,10 @@ bool CachedResourceLoader::canRequest(CachedResource::Type type, const KURL& url |
if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentSecurityPolicy()->allowStyleFromSource(url)) |
return false; |
break; |
+ case CachedResource::HTMLDocumentResource: |
+ if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentSecurityPolicy()->allowScriptFromSource(url)) |
+ return false; |
+ break; |
case CachedResource::SVGDocumentResource: |
case CachedResource::ImageResource: |
if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentSecurityPolicy()->allowImageFromSource(url)) |
@@ -464,6 +477,9 @@ void CachedResourceLoader::determineTargetType(ResourceRequest& request, CachedR |
case CachedResource::TextTrackResource: |
targetType = ResourceRequest::TargetIsTextTrack; |
break; |
+ case CachedResource::HTMLDocumentResource: |
+ targetType = ResourceRequest::TargetIsSubresource; |
+ break; |
case CachedResource::SVGDocumentResource: |
targetType = ResourceRequest::TargetIsImage; |
break; |