namespace blink {
-CSPSource::CSPSource(ContentSecurityPolicy* policy, const String& scheme, const String& host, int port, const String& path, bool hostHasWildcard, bool portHasWildcard)
+CSPSource::CSPSource(ContentSecurityPolicy* policy, const String& scheme, const String& host, int port, const String& path, WildcardDisposition hostWildcard, WildcardDisposition portWildcard)
: m_policy(policy)
, m_scheme(scheme)
, m_host(host)
, m_port(port)
, m_path(path)
- , m_hostHasWildcard(hostHasWildcard)
- , m_portHasWildcard(portHasWildcard)
+ , m_hostWildcard(hostWildcard)
+ , m_portWildcard(portWildcard)
{
}
bool CSPSource::schemeMatches(const KURL& url) const
{
- if (m_scheme.isEmpty()) {
- String protectedResourceScheme(m_policy->securityOrigin()->protocol());
- if (equalIgnoringCase("http", protectedResourceScheme))
- return url.protocolIs("http") || url.protocolIs("https");
- return equalIgnoringCase(url.protocol(), protectedResourceScheme);
- }
+ if (m_scheme.isEmpty())
+ return m_policy->protocolMatchesSelf(url);
return equalIgnoringCase(url.protocol(), m_scheme);
}
const String& host = url.host();
if (equalIgnoringCase(host, m_host))
return true;
- return m_hostHasWildcard && host.endsWith("." + m_host, false);
+ return m_hostWildcard == HasWildcard && host.endsWith("." + m_host, false);
}
bool CSPSource::portMatches(const KURL& url) const
{
- if (m_portHasWildcard)
+ if (m_portWildcard == HasWildcard)
return true;
int port = url.port();