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 3ca2f29e9975058714617f9c4345097cc27d186d..198e1967b32ed1ebbfa66aae6b51a23354cad32e 100644 |
--- a/third_party/WebKit/Source/core/dom/ScriptLoader.cpp |
+++ b/third_party/WebKit/Source/core/dom/ScriptLoader.cpp |
@@ -569,37 +569,6 @@ bool ScriptLoader::PrepareScript(const TextPosition& script_start_position, |
return true; |
} |
- // 5th Clause: |
- // TODO(hiroshige): Reorder the clauses to match the spec. |
- // - "If the element does not have a src attribute, |
- // and the element has been flagged as "parser-inserted", |
- // and either the parser that created the script is an XML parser |
- // or it's an HTML parser whose script nesting level is not greater than |
- // one, |
- // and the Document of the HTML parser or XML parser that created |
- // the script element has a style sheet that is blocking scripts" |
- // The last part "... has a style sheet that is blocking scripts" |
- // is implemented in Document::isScriptExecutionReady(). |
- // Part of the condition check is done in |
- // HTMLParserScriptRunner::processScriptElementInternal(). |
- // TODO(hiroshige): Clean up the split condition check. |
- // We check that the type is "classic" here, because according to the spec |
- // a "module" script doesn't reach the 5th Clause because the 4th Clause |
- // catches all "module" scripts. |
- if (GetScriptType() == ScriptType::kClassic && |
- !element_->HasSourceAttribute() && parser_inserted_ && |
- !element_document.IsScriptExecutionReady()) { |
- // The former part of this clause is |
- // implemented by the caller-side of prepareScript(): |
- // - HTMLParserScriptRunner::requestParsingBlockingScript() |
- // - TODO(hiroshige): Investigate XMLDocumentParser::endElementNs() |
- will_be_parser_executed_ = true; |
- // "Set the element's "ready to be parser-executed" flag." |
- ready_to_be_parser_executed_ = true; |
- |
- return true; |
- } |
- |
// 3rd Clause: |
// - "If the script's type is "classic", |
// and the element has a src attribute, |
@@ -608,7 +577,6 @@ bool ScriptLoader::PrepareScript(const TextPosition& script_start_position, |
// - "If the script's type is "module", |
// and the element does not have an async attribute, |
// and the element does not have the "non-blocking" flag set" |
- // TODO(hiroshige): Check the script's type and implement "module" case. |
if ((GetScriptType() == ScriptType::kClassic && |
element_->HasSourceAttribute() && !element_->AsyncAttributeValue() && |
!non_blocking_) || |
@@ -658,6 +626,37 @@ bool ScriptLoader::PrepareScript(const TextPosition& script_start_position, |
return true; |
} |
+ // The following clauses are executed only if the script's type is "classic" |
+ // and the element doesn't have a src attribute. |
+ DCHECK_EQ(GetScriptType(), ScriptType::kClassic); |
+ DCHECK(!is_external_script_); |
+ |
+ // 5th Clause: |
+ // - "If the element does not have a src attribute, |
+ // and the element has been flagged as "parser-inserted", |
+ // and either the parser that created the script is an XML parser |
+ // or it's an HTML parser whose script nesting level is not greater than |
+ // one, |
+ // and the Document of the HTML parser or XML parser that created |
+ // the script element has a style sheet that is blocking scripts" |
+ // The last part "... has a style sheet that is blocking scripts" |
+ // is implemented in Document::isScriptExecutionReady(). |
+ // Part of the condition check is done in |
+ // HTMLParserScriptRunner::processScriptElementInternal(). |
+ // TODO(hiroshige): Clean up the split condition check. |
+ if (!element_->HasSourceAttribute() && parser_inserted_ && |
+ !element_document.IsScriptExecutionReady()) { |
+ // The former part of this clause is |
+ // implemented by the caller-side of prepareScript(): |
+ // - HTMLParserScriptRunner::requestParsingBlockingScript() |
+ // - TODO(hiroshige): Investigate XMLDocumentParser::endElementNs() |
+ will_be_parser_executed_ = true; |
+ // "Set the element's "ready to be parser-executed" flag." |
+ ready_to_be_parser_executed_ = true; |
+ |
+ return true; |
+ } |
+ |
// 6th Clause: |
// - "Otherwise" |
// "Immediately execute the script block, |
@@ -666,11 +665,6 @@ bool ScriptLoader::PrepareScript(const TextPosition& script_start_position, |
// HTMLParserScriptRunner::processScriptElementInternal(). |
// TODO(hiroshige): Merge the duplicated code. |
- // This clause is executed only if the script's type is "classic" |
- // and the element doesn't have a src attribute. |
- DCHECK_EQ(GetScriptType(), ScriptType::kClassic); |
- DCHECK(!is_external_script_); |
- |
// Reset line numbering for nested writes. |
TextPosition position = element_document.IsInDocumentWrite() |
? TextPosition() |