Index: third_party/WebKit/Source/core/frame/csp/CSPDirectiveList.cpp |
diff --git a/third_party/WebKit/Source/core/frame/csp/CSPDirectiveList.cpp b/third_party/WebKit/Source/core/frame/csp/CSPDirectiveList.cpp |
index 63175a922099b2187567fdbfd4868924917c336e..5927c48e670906afb680593e72961de89e8dc2c5 100644 |
--- a/third_party/WebKit/Source/core/frame/csp/CSPDirectiveList.cpp |
+++ b/third_party/WebKit/Source/core/frame/csp/CSPDirectiveList.cpp |
@@ -124,7 +124,8 @@ void CSPDirectiveList::reportViolationWithLocation( |
const KURL& blockedURL, |
const String& contextURL, |
const WTF::OrdinalNumber& contextLine, |
- Element* element) const { |
+ Element* element, |
+ const String& source) const { |
String message = |
isReportOnly() ? "[Report Only] " + consoleMessage : consoleMessage; |
m_policy->logToConsole(ConsoleMessage::create( |
@@ -133,7 +134,7 @@ void CSPDirectiveList::reportViolationWithLocation( |
m_policy->reportViolation( |
directiveText, effectiveType, message, blockedURL, m_reportEndpoints, |
m_header, m_headerType, ContentSecurityPolicy::InlineViolation, nullptr, |
- RedirectStatus::NoRedirect, contextLine.oneBasedInt(), element); |
+ RedirectStatus::NoRedirect, contextLine.oneBasedInt(), element, source); |
} |
void CSPDirectiveList::reportViolationWithState( |
@@ -376,6 +377,7 @@ bool CSPDirectiveList::checkInlineAndReportViolation( |
SourceListDirective* directive, |
const String& consoleMessage, |
Element* element, |
+ const String& source, |
const String& contextURL, |
const WTF::OrdinalNumber& contextLine, |
bool isScript, |
@@ -406,7 +408,8 @@ bool CSPDirectiveList::checkInlineAndReportViolation( |
isScript ? ContentSecurityPolicy::DirectiveType::ScriptSrc |
: ContentSecurityPolicy::DirectiveType::StyleSrc, |
consoleMessage + "\"" + directive->text() + "\"." + suffix + "\n", KURL(), |
- contextURL, contextLine, element); |
+ contextURL, contextLine, element, |
+ directive->allowReportSample() ? source : emptyString); |
if (!isReportOnly()) { |
if (isScript) |
@@ -503,6 +506,7 @@ bool CSPDirectiveList::checkAncestorsAndReportViolation( |
bool CSPDirectiveList::allowJavaScriptURLs( |
Element* element, |
+ const String& source, |
const String& contextURL, |
const WTF::OrdinalNumber& contextLine, |
SecurityViolationReportingPolicy reportingPolicy) const { |
@@ -512,7 +516,7 @@ bool CSPDirectiveList::allowJavaScriptURLs( |
directive, |
"Refused to execute JavaScript URL because it violates the following " |
"Content Security Policy directive: ", |
- element, contextURL, contextLine, true, "sha256-..."); |
+ element, source, contextURL, contextLine, true, "sha256-..."); |
} |
return !directive || directive->allowAllInline(); |
@@ -520,6 +524,7 @@ bool CSPDirectiveList::allowJavaScriptURLs( |
bool CSPDirectiveList::allowInlineEventHandlers( |
Element* element, |
+ const String& source, |
const String& contextURL, |
const WTF::OrdinalNumber& contextLine, |
SecurityViolationReportingPolicy reportingPolicy) const { |
@@ -529,7 +534,7 @@ bool CSPDirectiveList::allowInlineEventHandlers( |
operativeDirective(m_scriptSrc.get()), |
"Refused to execute inline event handler because it violates the " |
"following Content Security Policy directive: ", |
- element, contextURL, contextLine, true, "sha256-..."); |
+ element, source, contextURL, contextLine, true, "sha256-..."); |
} |
return !directive || directive->allowAllInline(); |
@@ -555,7 +560,8 @@ bool CSPDirectiveList::allowInlineScript( |
directive, |
"Refused to execute inline script because it violates the following " |
"Content Security Policy directive: ", |
- element, contextURL, contextLine, true, getSha256String(content)); |
+ element, content, contextURL, contextLine, true, |
+ getSha256String(content)); |
} |
return !directive || directive->allowAllInline(); |
@@ -576,7 +582,8 @@ bool CSPDirectiveList::allowInlineStyle( |
directive, |
"Refused to apply inline style because it violates the following " |
"Content Security Policy directive: ", |
- element, contextURL, contextLine, false, getSha256String(content)); |
+ element, content, contextURL, contextLine, false, |
+ getSha256String(content)); |
} |
return !directive || directive->allowAllInline(); |