Changeset 60897 in webkit


Ignore:
Timestamp:
Jun 9, 2010 10:05:17 AM (14 years ago)
Author:
abarth@webkit.org
Message:

2010-06-09 Tony Gentilcore <tonyg@chromium.org>

Reviewed by Adam Barth.

Fix script-after-frameset test in HTML5 parser
https://bugs.webkit.org/show_bug.cgi?id=40274

The old HTMLTokenizer enforced this in scriptHandler(). We don't use
that code anymore, so it needs to be implemented. The spec does this
as a part of "insertion mode"->"after frameset", so this adds an
InsertionMode enum instead of a one-off boolean.

No new tests because covered by fast/tokenizer/script-after-frameset.html

  • html/HTML5TreeBuilder.cpp: (WebCore::HTML5TreeBuilder::HTML5TreeBuilder): (WebCore::HTML5TreeBuilder::passTokenToLegacyParser):
  • html/HTML5TreeBuilder.h: (WebCore::HTML5TreeBuilder::): (WebCore::HTML5TreeBuilder::setInsertionMode): (WebCore::HTML5TreeBuilder::insertionMode):
Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r60896 r60897  
     12010-06-09  Tony Gentilcore  <tonyg@chromium.org>
     2
     3        Reviewed by Adam Barth.
     4
     5        Fix script-after-frameset test in HTML5 parser
     6        https://bugs.webkit.org/show_bug.cgi?id=40274
     7
     8        The old HTMLTokenizer enforced this in scriptHandler(). We don't use
     9        that code anymore, so it needs to be implemented. The spec does this
     10        as a part of "insertion mode"->"after frameset", so this adds an
     11        InsertionMode enum instead of a one-off boolean.
     12
     13        No new tests because covered by fast/tokenizer/script-after-frameset.html
     14
     15        * html/HTML5TreeBuilder.cpp:
     16        (WebCore::HTML5TreeBuilder::HTML5TreeBuilder):
     17        (WebCore::HTML5TreeBuilder::passTokenToLegacyParser):
     18        * html/HTML5TreeBuilder.h:
     19        (WebCore::HTML5TreeBuilder::):
     20        (WebCore::HTML5TreeBuilder::setInsertionMode):
     21        (WebCore::HTML5TreeBuilder::insertionMode):
     22
    1232010-06-09  Kwang Yul Seo  <skyul@company100.net>
    224
  • trunk/WebCore/html/HTML5TreeBuilder.cpp

    r60826 r60897  
    4747    , m_reportErrors(reportErrors)
    4848    , m_isPaused(false)
     49    , m_insertionMode(Initial)
    4950    , m_lexer(lexer)
    5051    , m_legacyHTMLParser(new HTMLParser(document, reportErrors))
     
    169170    }
    170171    if (token.type() == HTML5Token::EndTag) {
    171         if (oldStyleToken.tagName == scriptTag) {
     172        if (oldStyleToken.tagName == scriptTag && insertionMode() != AfterFrameset) {
    172173            if (m_lastScriptElement) {
    173174                ASSERT(m_lastScriptElementStartLine != uninitializedLineNumberValue);
     
    176177                m_lastScriptElementStartLine = uninitializedLineNumberValue;
    177178            }
    178         }
     179        } else if (oldStyleToken.tagName == framesetTag)
     180            setInsertionMode(AfterFrameset);
    179181    }
    180182    return result.release();
  • trunk/WebCore/html/HTML5TreeBuilder.h

    r60553 r60897  
    6060
    6161private:
     62    // Represents HTML5 "insertion mode"
     63    // http://www.w3.org/TR/html5/syntax.html#insertion-mode
     64    // FIXME: Implement remainder of states.
     65    enum InsertionMode {
     66        Initial,
     67        AfterFrameset,
     68    };
     69
    6270    PassRefPtr<Node> passTokenToLegacyParser(HTML5Token&);
    6371    PassRefPtr<Node> processToken(HTML5Token&, UChar currentCharacter = 0);
     
    6674    void handleScriptEndTag(Element*, int scriptStartLine);
    6775
     76    void setInsertionMode(InsertionMode value) { m_insertionMode = value; }
     77    InsertionMode insertionMode() const { return m_insertionMode; }
     78
    6879    Document* m_document; // This is only used by the m_legacyParser for now.
    6980    bool m_reportErrors;
    7081    bool m_isPaused;
     82
     83    InsertionMode m_insertionMode;
     84
    7185    // HTML5 spec requires that we be able to change the state of the lexer
    7286    // from within parser actions.
Note: See TracChangeset for help on using the changeset viewer.