Changeset 139953 in webkit


Ignore:
Timestamp:
Jan 16, 2013 7:36:48 PM (11 years ago)
Author:
tonyg@chromium.org
Message:

Introduce a method to build the tree from a CompactHTMLToken
https://bugs.webkit.org/show_bug.cgi?id=107082

Reviewed by Adam Barth.

No new tests because covered by existing fast/parser tests.

  • html/parser/HTMLDocumentParser.cpp:

(WebCore):
(WebCore::HTMLDocumentParser::constructTreeFromCompactHTMLToken):

  • html/parser/HTMLDocumentParser.h:
  • html/parser/HTMLToken.h:

(AtomicHTMLToken):
(WebCore::AtomicHTMLToken::create):
(WebCore::AtomicHTMLToken::AtomicHTMLToken):

  • xml/parser/MarkupTokenBase.h:

(WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase):
(AtomicMarkupTokenBase):

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r139952 r139953  
     12013-01-16  Tony Gentilcore  <tonyg@chromium.org>
     2
     3        Introduce a method to build the tree from a CompactHTMLToken
     4        https://bugs.webkit.org/show_bug.cgi?id=107082
     5
     6        Reviewed by Adam Barth.
     7
     8        No new tests because covered by existing fast/parser tests.
     9
     10        * html/parser/HTMLDocumentParser.cpp:
     11        (WebCore):
     12        (WebCore::HTMLDocumentParser::constructTreeFromCompactHTMLToken):
     13        * html/parser/HTMLDocumentParser.h:
     14        * html/parser/HTMLToken.h:
     15        (AtomicHTMLToken):
     16        (WebCore::AtomicHTMLToken::create):
     17        (WebCore::AtomicHTMLToken::AtomicHTMLToken):
     18        * xml/parser/MarkupTokenBase.h:
     19        (WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase):
     20        (AtomicMarkupTokenBase):
     21
    1222013-01-16  Roger Fong  <roger_fong@apple.com>
    223
  • trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp

    r139950 r139953  
    341341}
    342342
     343#if ENABLE(THREADED_HTML_PARSER)
     344
     345void HTMLDocumentParser::constructTreeFromCompactHTMLToken(const CompactHTMLToken& compactToken)
     346{
     347    RefPtr<AtomicHTMLToken> token = AtomicHTMLToken::create(compactToken);
     348    m_treeBuilder->constructTree(token.get());
     349}
     350
     351#endif
     352
    343353bool HTMLDocumentParser::hasInsertionPoint()
    344354{
  • trunk/Source/WebCore/html/parser/HTMLDocumentParser.h

    r139950 r139953  
    128128    void pumpTokenizerIfPossible(SynchronousMode);
    129129    void constructTreeFromHTMLToken(HTMLToken&);
     130#if ENABLE(THREADED_HTML_PARSER)
     131    void constructTreeFromCompactHTMLToken(const CompactHTMLToken&);
     132#endif
    130133
    131134    void runScriptsForPausedTreeBuilder();
  • trunk/Source/WebCore/html/parser/HTMLToken.h

    r139533 r139953  
    2727#define HTMLToken_h
    2828
     29#include "CompactHTMLToken.h"
    2930#include "HTMLTokenTypes.h"
    3031#include "MarkupTokenBase.h"
     
    6970    }
    7071
     72#if ENABLE(THREADED_HTML_PARSER)
     73
     74    static PassRefPtr<AtomicHTMLToken> create(const CompactHTMLToken& token)
     75    {
     76        return adoptRef(new AtomicHTMLToken(token));
     77    }
     78
     79#endif
     80
    7181    static PassRefPtr<AtomicHTMLToken> create(HTMLTokenTypes::Type type, const AtomicString& name, const Vector<Attribute>& attributes = Vector<Attribute>())
    7282    {
     
    8595    }
    8696
     97#if ENABLE(THREADED_HTML_PARSER)
     98
     99    explicit AtomicHTMLToken(const CompactHTMLToken& token)
     100        : AtomicMarkupTokenBase<HTMLToken>(token.type())
     101    {
     102        switch (m_type) {
     103        case HTMLTokenTypes::Uninitialized:
     104            ASSERT_NOT_REACHED();
     105            break;
     106        case HTMLTokenTypes::DOCTYPE:
     107            m_name = token.data();
     108            m_doctypeData = adoptPtr(new HTMLToken::DoctypeData());
     109            m_doctypeData->m_hasPublicIdentifier = true;
     110            m_doctypeData->m_publicIdentifier.append(token.publicIdentifier().characters(), token.publicIdentifier().length());
     111            m_doctypeData->m_hasSystemIdentifier = true;
     112            m_doctypeData->m_systemIdentifier.append(token.systemIdentifier().characters(), token.systemIdentifier().length());
     113            break;
     114        case HTMLTokenTypes::EndOfFile:
     115            break;
     116        case HTMLTokenTypes::StartTag:
     117            m_attributes.reserveInitialCapacity(token.attributes().size());
     118            for (Vector<CompactAttribute>::const_iterator it = token.attributes().begin(); it != token.attributes().end(); ++it)
     119                m_attributes.append(Attribute(QualifiedName(nullAtom, it->name(), nullAtom), it->value()));
     120            // Fall through!
     121        case HTMLTokenTypes::EndTag:
     122            m_selfClosing = token.selfClosing();
     123            m_name = AtomicString(token.data());
     124            break;
     125        case HTMLTokenTypes::Comment:
     126            m_data = token.data();
     127            break;
     128        case HTMLTokenTypes::Character:
     129            m_externalCharacters = token.data().characters();
     130            m_externalCharactersLength = token.data().length();
     131            break;
     132        default:
     133            break;
     134        }
     135    }
     136
     137#endif
     138
    87139    AtomicHTMLToken(HTMLTokenTypes::Type type, const AtomicString& name, const Vector<Attribute>& attributes = Vector<Attribute>())
    88140        : AtomicMarkupTokenBase<HTMLToken>(type, name, attributes)
  • trunk/Source/WebCore/xml/parser/MarkupTokenBase.h

    r139945 r139953  
    474474    }
    475475
     476    explicit AtomicMarkupTokenBase(typename Token::Type::Type type)
     477        : m_type(type)
     478        , m_externalCharacters(0)
     479        , m_externalCharactersLength(0)
     480        , m_isAll8BitData(false)
     481        , m_selfClosing(false)
     482    {
     483    }
     484
    476485    AtomicMarkupTokenBase(typename Token::Type::Type type, const AtomicString& name, const Vector<Attribute>& attributes = Vector<Attribute>())
    477486        : m_type(type)
Note: See TracChangeset for help on using the changeset viewer.