| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google, Inc. All rights reserved. | 2 * Copyright (C) 2011 Google, Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 935 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 946 return m_selfSource->matches(url, DidNotRedirect); | 946 return m_selfSource->matches(url, DidNotRedirect); |
| 947 } | 947 } |
| 948 | 948 |
| 949 bool ContentSecurityPolicy::protocolMatchesSelf(const KURL& url) const | 949 bool ContentSecurityPolicy::protocolMatchesSelf(const KURL& url) const |
| 950 { | 950 { |
| 951 if (equalIgnoringCase("http", m_selfProtocol)) | 951 if (equalIgnoringCase("http", m_selfProtocol)) |
| 952 return url.protocolIsInHTTPFamily(); | 952 return url.protocolIsInHTTPFamily(); |
| 953 return equalIgnoringCase(url.protocol(), m_selfProtocol); | 953 return equalIgnoringCase(url.protocol(), m_selfProtocol); |
| 954 } | 954 } |
| 955 | 955 |
| 956 bool ContentSecurityPolicy::selfMatchesInnerURL() const |
| 957 { |
| 958 // Due to backwards-compatibility concerns, we allow 'self' to match blob an
d filesystem URLs |
| 959 // if we're in a context that bypasses Content Security Policy in the main w
orld. |
| 960 // |
| 961 // TODO(mkwst): Revisit this once embedders have an opportunity to update th
eir extension models. |
| 962 return m_executionContext && SchemeRegistry::schemeShouldBypassContentSecuri
tyPolicy(m_executionContext->securityOrigin()->protocol()); |
| 963 } |
| 964 |
| 956 bool ContentSecurityPolicy::shouldBypassMainWorld(const ExecutionContext* contex
t) | 965 bool ContentSecurityPolicy::shouldBypassMainWorld(const ExecutionContext* contex
t) |
| 957 { | 966 { |
| 958 if (context && context->isDocument()) { | 967 if (context && context->isDocument()) { |
| 959 const Document* document = toDocument(context); | 968 const Document* document = toDocument(context); |
| 960 if (document->frame()) | 969 if (document->frame()) |
| 961 return document->frame()->script().shouldBypassMainWorldCSP(); | 970 return document->frame()->script().shouldBypassMainWorldCSP(); |
| 962 } | 971 } |
| 963 return false; | 972 return false; |
| 964 } | 973 } |
| 965 | 974 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 993 // Collisions have no security impact, so we can save space by storing only
the string's hash rather than the whole report. | 1002 // Collisions have no security impact, so we can save space by storing only
the string's hash rather than the whole report. |
| 994 return !m_violationReportsSent.contains(report.impl()->hash()); | 1003 return !m_violationReportsSent.contains(report.impl()->hash()); |
| 995 } | 1004 } |
| 996 | 1005 |
| 997 void ContentSecurityPolicy::didSendViolationReport(const String& report) | 1006 void ContentSecurityPolicy::didSendViolationReport(const String& report) |
| 998 { | 1007 { |
| 999 m_violationReportsSent.add(report.impl()->hash()); | 1008 m_violationReportsSent.add(report.impl()->hash()); |
| 1000 } | 1009 } |
| 1001 | 1010 |
| 1002 } // namespace blink | 1011 } // namespace blink |
| OLD | NEW |