Chromium Code Reviews| Index: Source/core/frame/csp/CSPDirectiveList.cpp |
| diff --git a/Source/core/frame/csp/CSPDirectiveList.cpp b/Source/core/frame/csp/CSPDirectiveList.cpp |
| index 1f8bd418ed1300c5a8c2fd50f4e55857023ce2b6..5234785cef5c731d8a8955067e4fc0ec4d41185b 100644 |
| --- a/Source/core/frame/csp/CSPDirectiveList.cpp |
| +++ b/Source/core/frame/csp/CSPDirectiveList.cpp |
| @@ -414,6 +414,38 @@ const String& CSPDirectiveList::pluginTypesText() const |
| return m_pluginTypes->text(); |
| } |
| +bool CSPDirectiveList::shouldSendCSPHeader(Resource::Type type) const |
| +{ |
| + switch (type) { |
| + case Resource::XSLStyleSheet: |
| + ASSERT(RuntimeEnabledFeatures::xsltEnabled()); |
| + return !!operativeDirective(m_scriptSrc.get()); |
| + case Resource::Script: |
| + case Resource::ImportResource: |
| + return !!operativeDirective(m_scriptSrc.get()); |
| + case Resource::CSSStyleSheet: |
| + return !!operativeDirective(m_styleSrc.get()); |
| + case Resource::SVGDocument: |
| + case Resource::Image: |
| + return !!operativeDirective(m_imgSrc.get()); |
| + case Resource::Font: |
| + return !!operativeDirective(m_fontSrc.get()); |
| + case Resource::Media: |
| + case Resource::TextTrack: |
| + return !!operativeDirective(m_mediaSrc.get()); |
| + case Resource::Raw: |
| + // This request could be for a plugin, a child frame, a worker, or |
| + // something else. If there any potentially relevant policies, |
| + // send the CSP header; sending it unnecessarily can't hurt. |
| + return !!operativeDirective(m_objectSrc.get()) || !!m_pluginTypes.get() || !!operativeDirective(m_childSrc.get()) || !!operativeDirective(m_frameSrc.get()) || !!operativeDirective(m_connectSrc.get()) || !!operativeDirective(m_manifestSrc.get()) || !!m_formAction.get(); |
|
estark
2015/03/17 18:27:34
This is sort of the catch-all where we send a CSP
Mike West
2015/03/20 14:53:54
This is fine for now. Eventually, I'd like to see
estark
2015/03/20 20:27:52
Sure, I'll take a look!
|
| + case Resource::MainResource: |
| + case Resource::LinkPrefetch: |
| + case Resource::LinkSubresource: |
| + return false; |
| + } |
| + ASSERT_NOT_REACHED(); |
| +} |
| + |
| // policy = directive-list |
| // directive-list = [ directive *( ";" [ directive ] ) ] |
| // |