Index: third_party/WebKit/Source/core/frame/csp/ContentSecurityPolicy.h |
diff --git a/third_party/WebKit/Source/core/frame/csp/ContentSecurityPolicy.h b/third_party/WebKit/Source/core/frame/csp/ContentSecurityPolicy.h |
index 272e3f59705350a24044390fa94da92741040c4b..befa79ce37f8840af11fcd2ca706b592bd98babc 100644 |
--- a/third_party/WebKit/Source/core/frame/csp/ContentSecurityPolicy.h |
+++ b/third_party/WebKit/Source/core/frame/csp/ContentSecurityPolicy.h |
@@ -151,8 +151,6 @@ public: |
bool allowJavaScriptURLs(const String& contextURL, const WTF::OrdinalNumber& contextLine, ReportingStatus = SendReport) const; |
bool allowInlineEventHandler(const String& source, const String& contextURL, const WTF::OrdinalNumber& contextLine, ReportingStatus = SendReport) const; |
- bool allowInlineScript(const String& contextURL, const WTF::OrdinalNumber& contextLine, const String& scriptContent, ReportingStatus = SendReport) const; |
- bool allowInlineStyle(const String& contextURL, const WTF::OrdinalNumber& contextLine, const String& styleContent, ReportingStatus = SendReport) const; |
// When the reporting status is |SendReport|, the |ExceptionStatus| |
// should indicate whether the caller will throw a JavaScript |
// exception in the event of a violation. When the caller will throw |
@@ -166,11 +164,10 @@ public: |
// plugin-types directives from the parent document. |
bool allowPluginTypeForDocument(const Document&, const String& type, const String& typeAttribute, const KURL&, ReportingStatus = SendReport) const; |
- bool allowScriptFromSource(const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
+ |
bool allowObjectFromSource(const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
bool allowChildFrameFromSource(const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
bool allowImageFromSource(const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
- bool allowStyleFromSource(const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
bool allowFontFromSource(const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
bool allowMediaFromSource(const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
bool allowConnectToSource(const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
@@ -180,6 +177,13 @@ public: |
bool allowManifestFromSource(const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
+ // Passing 'String()' into the |nonce| arguments in the following methods represents an |
+ // unnonced resource load. |
+ bool allowScriptFromSource(const KURL&, const String& nonce, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
+ bool allowStyleFromSource(const KURL&, const String& nonce, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
+ bool allowInlineScript(const String& contextURL, const String& nonce, const WTF::OrdinalNumber& contextLine, const String& scriptContent, ReportingStatus = SendReport) const; |
+ bool allowInlineStyle(const String& contextURL, const String& nonce, const WTF::OrdinalNumber& contextLine, const String& styleContent, ReportingStatus = SendReport) const; |
+ |
// |allowAncestors| does not need to know whether the resource was a |
// result of a redirect. After a redirect, source paths are usually |
// ignored to stop a page from learning the path to which the |
@@ -189,18 +193,19 @@ public: |
bool allowAncestors(LocalFrame*, const KURL&, ReportingStatus = SendReport) const; |
bool isFrameAncestorsEnforced() const; |
- // The nonce and hash allow functions are guaranteed to not have any side |
+ // The hash allow functions are guaranteed to not have any side |
// effects, including reporting. |
- // Nonce/Hash functions check all policies relating to use of a script/style |
- // with the given nonce/hash and return true all CSP policies allow it. |
+ // Hash functions check all policies relating to use of a script/style |
+ // with the given hash and return true all CSP policies allow it. |
// If these return true, callers can then process the content or |
// issue a load and be safe disabling any further CSP checks. |
- bool allowScriptWithNonce(const String& nonce) const; |
- bool allowStyleWithNonce(const String& nonce) const; |
+ // |
+ // TODO(mkwst): Fold hashes into 'allow{Script,Style}' checks above, just |
+ // as we've done with nonces. https://crbug.com/617065 |
bool allowScriptWithHash(const String& source, InlineType) const; |
bool allowStyleWithHash(const String& source, InlineType) const; |
- bool allowRequest(WebURLRequest::RequestContext, const KURL&, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
+ bool allowRequest(WebURLRequest::RequestContext, const KURL&, const String& nonce, RedirectStatus = RedirectStatus::NoRedirect, ReportingStatus = SendReport) const; |
void usesScriptHashAlgorithms(uint8_t ContentSecurityPolicyHashAlgorithm); |
void usesStyleHashAlgorithms(uint8_t ContentSecurityPolicyHashAlgorithm); |
@@ -270,6 +275,10 @@ public: |
Document* document() const; |
private: |
+ FRIEND_TEST_ALL_PREFIXES(ContentSecurityPolicyTest, NonceInline); |
+ FRIEND_TEST_ALL_PREFIXES(ContentSecurityPolicyTest, NonceSinglePolicy); |
+ FRIEND_TEST_ALL_PREFIXES(ContentSecurityPolicyTest, NonceMultiplePolicy); |
+ |
ContentSecurityPolicy(); |
void applyPolicySideEffectsToExecutionContext(); |