Index: Source/core/frame/csp/SourceListDirective.cpp |
diff --git a/Source/core/frame/csp/SourceListDirective.cpp b/Source/core/frame/csp/SourceListDirective.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..17cb81646e57021cb62931f9f08e52c1fcd51683 |
--- /dev/null |
+++ b/Source/core/frame/csp/SourceListDirective.cpp |
@@ -0,0 +1,62 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "config.h" |
+#include "core/frame/csp/SourceListDirective.h" |
+ |
+#include "core/frame/ContentSecurityPolicy.h" |
+#include "core/frame/csp/CSPSourceList.h" |
+#include "platform/network/ContentSecurityPolicyParsers.h" |
+#include "platform/weborigin/KURL.h" |
+#include "wtf/text/WTFString.h" |
+ |
+namespace WebCore { |
+ |
+SourceListDirective::SourceListDirective(const String& name, const String& value, ContentSecurityPolicy* policy) |
+ : CSPDirective(name, value, policy) |
+ , m_sourceList(policy, name) |
+{ |
+ Vector<UChar> characters; |
+ value.appendTo(characters); |
+ |
+ m_sourceList.parse(characters.data(), characters.data() + characters.size()); |
+} |
+ |
+bool SourceListDirective::allows(const KURL& url) const |
+{ |
+ return m_sourceList.matches(url.isEmpty() ? policy()->url() : url); |
+} |
+ |
+bool SourceListDirective::allowInline() const |
+{ |
+ return m_sourceList.allowInline(); |
+} |
+ |
+bool SourceListDirective::allowEval() const |
+{ |
+ return m_sourceList.allowEval(); |
+} |
+ |
+bool SourceListDirective::allowNonce(const String& nonce) const |
+{ |
+ return m_sourceList.allowNonce(nonce.stripWhiteSpace()); |
+} |
+ |
+bool SourceListDirective::allowHash(const CSPHashValue& hashValue) const |
+{ |
+ return m_sourceList.allowHash(hashValue); |
+} |
+ |
+bool SourceListDirective::isHashOrNoncePresent() const |
+{ |
+ return m_sourceList.isHashOrNoncePresent(); |
+} |
+ |
+uint8_t SourceListDirective::hashAlgorithmsUsed() const |
+{ |
+ return m_sourceList.hashAlgorithmsUsed(); |
+} |
+ |
+} // namespace WebCore |
+ |