| Index: third_party/WebKit/Source/core/dom/ScriptLoader.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/ScriptLoader.cpp b/third_party/WebKit/Source/core/dom/ScriptLoader.cpp
|
| index 615c19e836a29b4b965b1fc01fea35da0ada5464..6ddc885fd96867d6d87f81566835199aa433da41 100644
|
| --- a/third_party/WebKit/Source/core/dom/ScriptLoader.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/ScriptLoader.cpp
|
| @@ -345,21 +345,14 @@ bool ScriptLoader::fetchScript(const String& sourceUrl,
|
| crossOrigin);
|
| request.setCharset(scriptCharset());
|
|
|
| - // Skip fetch-related CSP checks if dynamically injected script is
|
| - // whitelisted and this script is not parser-inserted.
|
| - bool scriptPassesCSPDynamic =
|
| - (!isParserInserted() &&
|
| - elementDocument->contentSecurityPolicy()->allowDynamic());
|
| -
|
| - if (ContentSecurityPolicy::isNonceableElement(m_element.get()))
|
| + if (ContentSecurityPolicy::isNonceableElement(m_element.get())) {
|
| request.setContentSecurityPolicyNonce(
|
| m_element->fastGetAttribute(HTMLNames::nonceAttr));
|
| -
|
| - if (scriptPassesCSPDynamic) {
|
| - UseCounter::count(elementDocument->frame(),
|
| - UseCounter::ScriptPassesCSPDynamic);
|
| - request.setContentSecurityCheck(DoNotCheckContentSecurityPolicy);
|
| }
|
| +
|
| + request.setParserDisposition(isParserInserted() ? ParserInserted
|
| + : NotParserInserted);
|
| +
|
| request.setDefer(defer);
|
|
|
| String integrityAttr =
|
| @@ -466,8 +459,10 @@ bool ScriptLoader::doExecuteScript(const ScriptSourceCode& sourceCode) {
|
| bool shouldBypassMainWorldCSP =
|
| (frame && frame->script().shouldBypassMainWorldCSP()) ||
|
| csp->allowScriptWithHash(sourceCode.source(),
|
| - ContentSecurityPolicy::InlineType::Block) ||
|
| - (!isParserInserted() && csp->allowDynamic());
|
| + ContentSecurityPolicy::InlineType::Block);
|
| +
|
| + ParserDisposition parserDisposition =
|
| + isParserInserted() ? ParserInserted : NotParserInserted;
|
|
|
| AtomicString nonce =
|
| ContentSecurityPolicy::isNonceableElement(m_element.get())
|
| @@ -475,8 +470,8 @@ bool ScriptLoader::doExecuteScript(const ScriptSourceCode& sourceCode) {
|
| : AtomicString();
|
| if (!m_isExternalScript &&
|
| (!shouldBypassMainWorldCSP &&
|
| - !csp->allowInlineScript(elementDocument->url(), nonce, m_startLineNumber,
|
| - sourceCode.source()))) {
|
| + !csp->allowInlineScript(elementDocument->url(), nonce, parserDisposition,
|
| + m_startLineNumber, sourceCode.source()))) {
|
| return false;
|
| }
|
|
|
|
|