| Index: sky/engine/core/html/parser/HTMLTokenizer.cpp
|
| diff --git a/sky/engine/core/html/parser/HTMLTokenizer.cpp b/sky/engine/core/html/parser/HTMLTokenizer.cpp
|
| index 8fbf9ac43ec401411e423ab7b51c519e621f93cf..7e765b277ea71084fe31a34ad8f7308930a44c34 100644
|
| --- a/sky/engine/core/html/parser/HTMLTokenizer.cpp
|
| +++ b/sky/engine/core/html/parser/HTMLTokenizer.cpp
|
| @@ -86,10 +86,6 @@ static inline bool isEndTagBufferingState(HTMLTokenizer::State state)
|
| 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 @@ bool HTMLTokenizer::nextToken(SegmentedString& source, HTMLToken& token)
|
| }
|
| 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 @@ bool HTMLTokenizer::nextToken(SegmentedString& source, HTMLToken& token)
|
| }
|
| 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);
|
|
|