Remove ScriptData* states

In the new parsing.md spec, we parse <script> the same way as <style> so we
don't need all these tokenizer states.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/678913002
diff --git a/sky/engine/core/html/parser/BackgroundHTMLParser.cpp b/sky/engine/core/html/parser/BackgroundHTMLParser.cpp
index 6721307..4807d1b 100644
--- a/sky/engine/core/html/parser/BackgroundHTMLParser.cpp
+++ b/sky/engine/core/html/parser/BackgroundHTMLParser.cpp
@@ -113,22 +113,11 @@
 {
     if (token.type() == HTMLToken::StartTag) {
         const String& tagName = token.data();
-        // FIXME: This is just a copy of Tokenizer::updateStateFor which uses threadSafeMatches.
-        if (threadSafeMatch(tagName, HTMLNames::scriptTag))
-            m_tokenizer->setState(HTMLTokenizer::ScriptDataState);
-        else if (threadSafeMatch(tagName, HTMLNames::styleTag))
+        if (threadSafeMatch(tagName, HTMLNames::scriptTag) || threadSafeMatch(tagName, HTMLNames::styleTag))
             m_tokenizer->setState(HTMLTokenizer::RAWTEXTState);
     }
 
-    if (token.type() == HTMLToken::EndTag) {
-        const String& tagName = token.data();
-        if (threadSafeMatch(tagName, HTMLNames::scriptTag)) {
-            m_tokenizer->setState(HTMLTokenizer::DataState);
-            return false;
-        }
-    }
-
-    return true;
+    return token.type() != HTMLToken::EndTag || !threadSafeMatch(token.data(), HTMLNames::scriptTag);
 }
 
 void BackgroundHTMLParser::pumpTokenizer()
diff --git a/sky/engine/core/html/parser/HTMLTokenizer.cpp b/sky/engine/core/html/parser/HTMLTokenizer.cpp
index 8fbf9ac..7e765b2 100644
--- a/sky/engine/core/html/parser/HTMLTokenizer.cpp
+++ b/sky/engine/core/html/parser/HTMLTokenizer.cpp
@@ -86,10 +86,6 @@
     switch (state) {
     case HTMLTokenizer::RAWTEXTEndTagOpenState:
     case HTMLTokenizer::RAWTEXTEndTagNameState:
-    case HTMLTokenizer::ScriptDataEndTagOpenState:
-    case HTMLTokenizer::ScriptDataEndTagNameState:
-    case HTMLTokenizer::ScriptDataEscapedEndTagOpenState:
-    case HTMLTokenizer::ScriptDataEscapedEndTagNameState:
         return true;
     default:
         return false;
@@ -231,18 +227,6 @@
     }
     END_STATE()
 
-    HTML_BEGIN_STATE(ScriptDataState) {
-        if (cc == '<')
-            HTML_ADVANCE_TO(ScriptDataLessThanSignState);
-        else if (cc == kEndOfFileMarker)
-            return emitEndOfFile(source);
-        else {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataState);
-        }
-    }
-    END_STATE()
-
     HTML_BEGIN_STATE(TagOpenState) {
         if (cc == '!')
             HTML_ADVANCE_TO(MarkupDeclarationOpenState);
@@ -377,325 +361,6 @@
     }
     END_STATE()
 
-    HTML_BEGIN_STATE(ScriptDataLessThanSignState) {
-        if (cc == '/') {
-            m_temporaryBuffer.clear();
-            ASSERT(m_bufferedEndTagName.isEmpty());
-            HTML_ADVANCE_TO(ScriptDataEndTagOpenState);
-        } else if (cc == '!') {
-            bufferCharacter('<');
-            bufferCharacter('!');
-            HTML_ADVANCE_TO(ScriptDataEscapeStartState);
-        } else {
-            bufferCharacter('<');
-            HTML_RECONSUME_IN(ScriptDataState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEndTagOpenState) {
-        if (isASCIIUpper(cc)) {
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            addToPossibleEndTag(static_cast<LChar>(toLowerCase(cc)));
-            HTML_ADVANCE_TO(ScriptDataEndTagNameState);
-        } else if (isASCIILower(cc)) {
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            addToPossibleEndTag(static_cast<LChar>(cc));
-            HTML_ADVANCE_TO(ScriptDataEndTagNameState);
-        } else {
-            bufferCharacter('<');
-            bufferCharacter('/');
-            HTML_RECONSUME_IN(ScriptDataState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEndTagNameState) {
-        if (isASCIIUpper(cc)) {
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            addToPossibleEndTag(static_cast<LChar>(toLowerCase(cc)));
-            HTML_ADVANCE_TO(ScriptDataEndTagNameState);
-        } else if (isASCIILower(cc)) {
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            addToPossibleEndTag(static_cast<LChar>(cc));
-            HTML_ADVANCE_TO(ScriptDataEndTagNameState);
-        } else {
-            if (isTokenizerWhitespace(cc)) {
-                if (isAppropriateEndTag()) {
-                    m_temporaryBuffer.append(static_cast<LChar>(cc));
-                    FLUSH_AND_ADVANCE_TO(BeforeAttributeNameState);
-                }
-            } else if (cc == '/') {
-                if (isAppropriateEndTag()) {
-                    m_temporaryBuffer.append(static_cast<LChar>(cc));
-                    FLUSH_AND_ADVANCE_TO(SelfClosingStartTagState);
-                }
-            } else if (cc == '>') {
-                if (isAppropriateEndTag()) {
-                    m_temporaryBuffer.append(static_cast<LChar>(cc));
-                    return flushEmitAndResumeIn(source, HTMLTokenizer::DataState);
-                }
-            }
-            bufferCharacter('<');
-            bufferCharacter('/');
-            m_token->appendToCharacter(m_temporaryBuffer);
-            m_bufferedEndTagName.clear();
-            m_temporaryBuffer.clear();
-            HTML_RECONSUME_IN(ScriptDataState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEscapeStartState) {
-        if (cc == '-') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataEscapeStartDashState);
-        } else
-            HTML_RECONSUME_IN(ScriptDataState);
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEscapeStartDashState) {
-        if (cc == '-') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataEscapedDashDashState);
-        } else
-            HTML_RECONSUME_IN(ScriptDataState);
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEscapedState) {
-        if (cc == '-') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataEscapedDashState);
-        } else if (cc == '<')
-            HTML_ADVANCE_TO(ScriptDataEscapedLessThanSignState);
-        else if (cc == kEndOfFileMarker) {
-            parseError();
-            HTML_RECONSUME_IN(DataState);
-        } else {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataEscapedState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEscapedDashState) {
-        if (cc == '-') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataEscapedDashDashState);
-        } else if (cc == '<')
-            HTML_ADVANCE_TO(ScriptDataEscapedLessThanSignState);
-        else if (cc == kEndOfFileMarker) {
-            parseError();
-            HTML_RECONSUME_IN(DataState);
-        } else {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataEscapedState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEscapedDashDashState) {
-        if (cc == '-') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataEscapedDashDashState);
-        } else if (cc == '<')
-            HTML_ADVANCE_TO(ScriptDataEscapedLessThanSignState);
-        else if (cc == '>') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataState);
-        } else if (cc == kEndOfFileMarker) {
-            parseError();
-            HTML_RECONSUME_IN(DataState);
-        } else {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataEscapedState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEscapedLessThanSignState) {
-        if (cc == '/') {
-            m_temporaryBuffer.clear();
-            ASSERT(m_bufferedEndTagName.isEmpty());
-            HTML_ADVANCE_TO(ScriptDataEscapedEndTagOpenState);
-        } else if (isASCIIUpper(cc)) {
-            bufferCharacter('<');
-            bufferCharacter(cc);
-            m_temporaryBuffer.clear();
-            m_temporaryBuffer.append(toLowerCase(cc));
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapeStartState);
-        } else if (isASCIILower(cc)) {
-            bufferCharacter('<');
-            bufferCharacter(cc);
-            m_temporaryBuffer.clear();
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapeStartState);
-        } else {
-            bufferCharacter('<');
-            HTML_RECONSUME_IN(ScriptDataEscapedState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEscapedEndTagOpenState) {
-        if (isASCIIUpper(cc)) {
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            addToPossibleEndTag(static_cast<LChar>(toLowerCase(cc)));
-            HTML_ADVANCE_TO(ScriptDataEscapedEndTagNameState);
-        } else if (isASCIILower(cc)) {
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            addToPossibleEndTag(static_cast<LChar>(cc));
-            HTML_ADVANCE_TO(ScriptDataEscapedEndTagNameState);
-        } else {
-            bufferCharacter('<');
-            bufferCharacter('/');
-            HTML_RECONSUME_IN(ScriptDataEscapedState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataEscapedEndTagNameState) {
-        if (isASCIIUpper(cc)) {
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            addToPossibleEndTag(static_cast<LChar>(toLowerCase(cc)));
-            HTML_ADVANCE_TO(ScriptDataEscapedEndTagNameState);
-        } else if (isASCIILower(cc)) {
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            addToPossibleEndTag(static_cast<LChar>(cc));
-            HTML_ADVANCE_TO(ScriptDataEscapedEndTagNameState);
-        } else {
-            if (isTokenizerWhitespace(cc)) {
-                if (isAppropriateEndTag()) {
-                    m_temporaryBuffer.append(static_cast<LChar>(cc));
-                    FLUSH_AND_ADVANCE_TO(BeforeAttributeNameState);
-                }
-            } else if (cc == '/') {
-                if (isAppropriateEndTag()) {
-                    m_temporaryBuffer.append(static_cast<LChar>(cc));
-                    FLUSH_AND_ADVANCE_TO(SelfClosingStartTagState);
-                }
-            } else if (cc == '>') {
-                if (isAppropriateEndTag()) {
-                    m_temporaryBuffer.append(static_cast<LChar>(cc));
-                    return flushEmitAndResumeIn(source, HTMLTokenizer::DataState);
-                }
-            }
-            bufferCharacter('<');
-            bufferCharacter('/');
-            m_token->appendToCharacter(m_temporaryBuffer);
-            m_bufferedEndTagName.clear();
-            m_temporaryBuffer.clear();
-            HTML_RECONSUME_IN(ScriptDataEscapedState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataDoubleEscapeStartState) {
-        if (isTokenizerWhitespace(cc) || cc == '/' || cc == '>') {
-            bufferCharacter(cc);
-            if (temporaryBufferIs(HTMLNames::scriptTag.localName()))
-                HTML_ADVANCE_TO(ScriptDataDoubleEscapedState);
-            else
-                HTML_ADVANCE_TO(ScriptDataEscapedState);
-        } else if (isASCIIUpper(cc)) {
-            bufferCharacter(cc);
-            m_temporaryBuffer.append(toLowerCase(cc));
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapeStartState);
-        } else if (isASCIILower(cc)) {
-            bufferCharacter(cc);
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapeStartState);
-        } else
-            HTML_RECONSUME_IN(ScriptDataEscapedState);
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataDoubleEscapedState) {
-        if (cc == '-') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapedDashState);
-        } else if (cc == '<') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapedLessThanSignState);
-        } else if (cc == kEndOfFileMarker) {
-            parseError();
-            HTML_RECONSUME_IN(DataState);
-        } else {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapedState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataDoubleEscapedDashState) {
-        if (cc == '-') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapedDashDashState);
-        } else if (cc == '<') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapedLessThanSignState);
-        } else if (cc == kEndOfFileMarker) {
-            parseError();
-            HTML_RECONSUME_IN(DataState);
-        } else {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapedState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataDoubleEscapedDashDashState) {
-        if (cc == '-') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapedDashDashState);
-        } else if (cc == '<') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapedLessThanSignState);
-        } else if (cc == '>') {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataState);
-        } else if (cc == kEndOfFileMarker) {
-            parseError();
-            HTML_RECONSUME_IN(DataState);
-        } else {
-            bufferCharacter(cc);
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapedState);
-        }
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataDoubleEscapedLessThanSignState) {
-        if (cc == '/') {
-            bufferCharacter(cc);
-            m_temporaryBuffer.clear();
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapeEndState);
-        } else
-            HTML_RECONSUME_IN(ScriptDataDoubleEscapedState);
-    }
-    END_STATE()
-
-    HTML_BEGIN_STATE(ScriptDataDoubleEscapeEndState) {
-        if (isTokenizerWhitespace(cc) || cc == '/' || cc == '>') {
-            bufferCharacter(cc);
-            if (temporaryBufferIs(HTMLNames::scriptTag.localName()))
-                HTML_ADVANCE_TO(ScriptDataEscapedState);
-            else
-                HTML_ADVANCE_TO(ScriptDataDoubleEscapedState);
-        } else if (isASCIIUpper(cc)) {
-            bufferCharacter(cc);
-            m_temporaryBuffer.append(toLowerCase(cc));
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapeEndState);
-        } else if (isASCIILower(cc)) {
-            bufferCharacter(cc);
-            m_temporaryBuffer.append(static_cast<LChar>(cc));
-            HTML_ADVANCE_TO(ScriptDataDoubleEscapeEndState);
-        } else
-            HTML_RECONSUME_IN(ScriptDataDoubleEscapedState);
-    }
-    END_STATE()
-
     HTML_BEGIN_STATE(BeforeAttributeNameState) {
         if (isTokenizerWhitespace(cc))
             HTML_ADVANCE_TO(BeforeAttributeNameState);
diff --git a/sky/engine/core/html/parser/HTMLTokenizer.h b/sky/engine/core/html/parser/HTMLTokenizer.h
index 3e31f96..302b648 100644
--- a/sky/engine/core/html/parser/HTMLTokenizer.h
+++ b/sky/engine/core/html/parser/HTMLTokenizer.h
@@ -46,30 +46,12 @@
         DataState,
         CharacterReferenceInDataState,
         RAWTEXTState,
-        ScriptDataState,
         TagOpenState,
         EndTagOpenState,
         TagNameState,
         RAWTEXTLessThanSignState,
         RAWTEXTEndTagOpenState,
         RAWTEXTEndTagNameState,
-        ScriptDataLessThanSignState,
-        ScriptDataEndTagOpenState,
-        ScriptDataEndTagNameState,
-        ScriptDataEscapeStartState,
-        ScriptDataEscapeStartDashState,
-        ScriptDataEscapedState,
-        ScriptDataEscapedDashState,
-        ScriptDataEscapedDashDashState,
-        ScriptDataEscapedLessThanSignState,
-        ScriptDataEscapedEndTagOpenState,
-        ScriptDataEscapedEndTagNameState,
-        ScriptDataDoubleEscapeStartState,
-        ScriptDataDoubleEscapedState,
-        ScriptDataDoubleEscapedDashState,
-        ScriptDataDoubleEscapedDashDashState,
-        ScriptDataDoubleEscapedLessThanSignState,
-        ScriptDataDoubleEscapeEndState,
         BeforeAttributeNameState,
         AttributeNameState,
         AfterAttributeNameState,