1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// found in the LICENSE file. 4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "config.h" 6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/frame/csp/SourceListDirective.h" 7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 8d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/frame/csp/CSPSourceList.h" 9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/frame/csp/ContentSecurityPolicy.h" 10d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "platform/network/ContentSecurityPolicyParsers.h" 11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "platform/weborigin/KURL.h" 12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "wtf/text/WTFString.h" 13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 14c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)SourceListDirective::SourceListDirective(const String& name, const String& value, ContentSecurityPolicy* policy) 17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) : CSPDirective(name, value, policy) 18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) , m_sourceList(policy, name) 19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) Vector<UChar> characters; 21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) value.appendTo(characters); 22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_sourceList.parse(characters.data(), characters.data() + characters.size()); 24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)bool SourceListDirective::allows(const KURL& url) const 27d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return m_sourceList.matches(url.isEmpty() ? policy()->url() : url); 29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)bool SourceListDirective::allowInline() const 32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return m_sourceList.allowInline(); 34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)bool SourceListDirective::allowEval() const 37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 38d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return m_sourceList.allowEval(); 39d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)bool SourceListDirective::allowNonce(const String& nonce) const 42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return m_sourceList.allowNonce(nonce.stripWhiteSpace()); 44d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 45d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 46d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)bool SourceListDirective::allowHash(const CSPHashValue& hashValue) const 47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return m_sourceList.allowHash(hashValue); 49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 50d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 51d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)bool SourceListDirective::isHashOrNoncePresent() const 52d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 53d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return m_sourceList.isHashOrNoncePresent(); 54d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 55d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)uint8_t SourceListDirective::hashAlgorithmsUsed() const 57d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 58d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return m_sourceList.hashAlgorithmsUsed(); 59d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 60d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 61c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 62d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 63