| 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;
|
|
|