Index: Source/core/dom/Document.cpp |
diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp |
index a33f448e3564002265bc623e3034c645be6f8483..e48f8e1ac893774b02bb55e74884c08b93010d73 100644 |
--- a/Source/core/dom/Document.cpp |
+++ b/Source/core/dom/Document.cpp |
@@ -2936,6 +2936,8 @@ void Document::processHttpEquiv(const AtomicString& equiv, const AtomicString& c |
void Document::processHttpEquivContentSecurityPolicy(const AtomicString& equiv, const AtomicString& content) |
{ |
+ if (import() && import()->isChild()) |
+ return; |
if (equalIgnoringCase(equiv, "content-security-policy")) |
contentSecurityPolicy()->didReceiveHeader(content, ContentSecurityPolicy::Enforce, ContentSecurityPolicy::HeaderSourceMeta); |
else if (equalIgnoringCase(equiv, "content-security-policy-report-only")) |
@@ -4542,6 +4544,13 @@ void Document::initSecurityContext() |
initSecurityContext(DocumentInit(m_url, m_frame, contextDocument(), m_import)); |
} |
+static PassRefPtr<ContentSecurityPolicy> contentSecurityPolicyFor(Document* document) |
+{ |
+ if (document->import() && document->import()->isChild()) |
+ return document->import()->master()->contentSecurityPolicy(); |
+ return ContentSecurityPolicy::create(document); |
+} |
+ |
void Document::initSecurityContext(const DocumentInit& initializer) |
{ |
if (haveInitializedSecurityOrigin()) { |
@@ -4563,7 +4572,7 @@ void Document::initSecurityContext(const DocumentInit& initializer) |
m_cookieURL = m_url; |
enforceSandboxFlags(initializer.sandboxFlags()); |
setSecurityOrigin(isSandboxed(SandboxOrigin) ? SecurityOrigin::createUnique() : SecurityOrigin::create(m_url)); |
- setContentSecurityPolicy(ContentSecurityPolicy::create(this)); |
+ setContentSecurityPolicy(contentSecurityPolicyFor(this)); |
if (Settings* settings = initializer.settings()) { |
if (!settings->webSecurityEnabled()) { |