Changeset 142535 in webkit


Ignore:
Timestamp:
Feb 11, 2013 3:52:39 PM (11 years ago)
Author:
eric@webkit.org
Message:

Fold MarkupTokenizerBase into HTMLTokenizer now that it is the only subclass
https://bugs.webkit.org/show_bug.cgi?id=109499

Reviewed by Adam Barth.

For great justice. And sanity.
Epic amount of template code deleted.

  • GNUmakefile.list.am:
  • Target.pri:
  • WebCore.gypi:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
  • WebCore.xcodeproj/project.pbxproj:
  • html/parser/HTMLTokenizer.cpp:

(WebCore::HTMLTokenizer::HTMLTokenizer):

  • html/parser/HTMLTokenizer.h:

(HTMLTokenizer):
(Checkpoint):
(WebCore::HTMLTokenizer::state):
(WebCore::HTMLTokenizer::setState):
(WebCore::HTMLTokenizer::shouldSkipNullCharacters):
(WebCore::HTMLTokenizer::bufferCharacter):
(WebCore::HTMLTokenizer::emitAndResumeIn):
(WebCore::HTMLTokenizer::emitAndReconsumeIn):
(WebCore::HTMLTokenizer::emitEndOfFile):
(WebCore::HTMLTokenizer::haveBufferedCharacterToken):

  • xml/parser/MarkupTokenizerBase.h: Removed.
Location:
trunk/Source/WebCore
Files:
1 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r142534 r142535  
     12013-02-11  Eric Seidel  <eric@webkit.org>
     2
     3        Fold MarkupTokenizerBase into HTMLTokenizer now that it is the only subclass
     4        https://bugs.webkit.org/show_bug.cgi?id=109499
     5
     6        Reviewed by Adam Barth.
     7
     8        For great justice.  And sanity.
     9        Epic amount of template code deleted.
     10
     11        * GNUmakefile.list.am:
     12        * Target.pri:
     13        * WebCore.gypi:
     14        * WebCore.vcproj/WebCore.vcproj:
     15        * WebCore.vcxproj/WebCore.vcxproj:
     16        * WebCore.vcxproj/WebCore.vcxproj.filters:
     17        * WebCore.xcodeproj/project.pbxproj:
     18        * html/parser/HTMLTokenizer.cpp:
     19        (WebCore::HTMLTokenizer::HTMLTokenizer):
     20        * html/parser/HTMLTokenizer.h:
     21        (HTMLTokenizer):
     22        (Checkpoint):
     23        (WebCore::HTMLTokenizer::state):
     24        (WebCore::HTMLTokenizer::setState):
     25        (WebCore::HTMLTokenizer::shouldSkipNullCharacters):
     26        (WebCore::HTMLTokenizer::bufferCharacter):
     27        (WebCore::HTMLTokenizer::emitAndResumeIn):
     28        (WebCore::HTMLTokenizer::emitAndReconsumeIn):
     29        (WebCore::HTMLTokenizer::emitEndOfFile):
     30        (WebCore::HTMLTokenizer::haveBufferedCharacterToken):
     31        * xml/parser/MarkupTokenizerBase.h: Removed.
     32
    1332013-02-11  Anton Vayvod  <avayvod@chromium.org>
    234
  • trunk/Source/WebCore/GNUmakefile.list.am

    r142522 r142535  
    47104710        Source/WebCore/workers/WorkerThread.h \
    47114711        Source/WebCore/xml/parser/CharacterReferenceParserInlines.h \
    4712         Source/WebCore/xml/parser/MarkupTokenizerBase.h \
    47134712        Source/WebCore/xml/parser/MarkupTokenizerInlines.h \
    47144713        Source/WebCore/xml/parser/XMLDocumentParser.cpp \
  • trunk/Source/WebCore/Target.pri

    r142522 r142535  
    28512851    workers/WorkerThread.h \
    28522852    xml/parser/CharacterReferenceParserInlines.h \
    2853     xml/parser/MarkupTokenizerBase.h \
    28542853    xml/parser/MarkupTokenizerInlines.h \
    28552854    xml/parser/XMLDocumentParser.h \
  • trunk/Source/WebCore/WebCore.gypi

    r142522 r142535  
    26712671            'workers/chromium/WorkerContextProxyChromium.h',
    26722672            'xml/parser/CharacterReferenceParserInlines.h',
    2673             'xml/parser/MarkupTokenizerBase.h',
    26742673            'xml/parser/MarkupTokenizerInlines.h',
    26752674            'xml/parser/XMLDocumentParser.cpp',
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r142522 r142535  
    4909149091                                >
    4909249092                                <File
    49093                                         RelativePath="..\xml\parser\MarkupTokenizerBase.h"
    49094                                         >
    49095                                 </File>
    49096                                 <File
    4909749093                                        RelativePath="..\xml\parser\MarkupTokenizerInlines.h"
    4909849094                                        >
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj

    r142522 r142535  
    75147514    <ClInclude Include="..\xml\XSLTProcessor.h" />
    75157515    <ClInclude Include="..\xml\XSLTUnicodeSort.h" />
    7516     <ClInclude Include="..\xml\parser\MarkupTokenizerBase.h" />
    75177516    <ClInclude Include="..\xml\parser\MarkupTokenizerInlines.h" />
    75187517    <ClInclude Include="..\xml\parser\XMLDocumentParser.h" />
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters

    r142522 r142535  
    1131411314      <Filter>xml</Filter>
    1131511315    </ClInclude>
    11316     <ClInclude Include="..\xml\parser\MarkupTokenizerBase.h">
    11317       <Filter>xml\parser</Filter>
    11318     </ClInclude>
    1131911316    <ClInclude Include="..\xml\parser\MarkupTokenizerInlines.h">
    1132011317      <Filter>xml\parser</Filter>
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r142522 r142535  
    5555                00B9318C13BA8DCC0035A948 /* XMLDocumentParserScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B9318613BA867F0035A948 /* XMLDocumentParserScope.h */; };
    5656                00C60E3F13D76D7E0092A275 /* MarkupTokenizerInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C60E3E13D76D7E0092A275 /* MarkupTokenizerInlines.h */; };
    57                 00C60E4213D797AE0092A275 /* MarkupTokenizerBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C60E4113D797AE0092A275 /* MarkupTokenizerBase.h */; };
    5857                01D3CF8214BD0A3000FE9970 /* WebGLContextGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01D3CF7C14BD0A3000FE9970 /* WebGLContextGroup.cpp */; };
    5958                01D3CF8314BD0A3000FE9970 /* WebGLContextGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 01D3CF7D14BD0A3000FE9970 /* WebGLContextGroup.h */; };
     
    73007299                00B9318613BA867F0035A948 /* XMLDocumentParserScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLDocumentParserScope.h; sourceTree = "<group>"; };
    73017300                00C60E3E13D76D7E0092A275 /* MarkupTokenizerInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkupTokenizerInlines.h; sourceTree = "<group>"; };
    7302                 00C60E4113D797AE0092A275 /* MarkupTokenizerBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkupTokenizerBase.h; sourceTree = "<group>"; };
    73037301                01D3CF7C14BD0A3000FE9970 /* WebGLContextGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLContextGroup.cpp; path = canvas/WebGLContextGroup.cpp; sourceTree = "<group>"; };
    73047302                01D3CF7D14BD0A3000FE9970 /* WebGLContextGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLContextGroup.h; path = canvas/WebGLContextGroup.h; sourceTree = "<group>"; };
     
    1457014568                        children = (
    1457114569                                97B8FFCF16AE7F920038388D /* CharacterReferenceParserInlines.h */,
    14572                                 00C60E4113D797AE0092A275 /* MarkupTokenizerBase.h */,
    1457314570                                00C60E3E13D76D7E0092A275 /* MarkupTokenizerInlines.h */,
    1457414571                                00B9318113BA867F0035A948 /* XMLDocumentParser.cpp */,
     
    2530025297                                93309DF8099E64920056E581 /* markup.h in Headers */,
    2530125298                                9728C3141268E4390041E89B /* MarkupAccumulator.h in Headers */,
    25302                                 00C60E4213D797AE0092A275 /* MarkupTokenizerBase.h in Headers */,
    2530325299                                00C60E3F13D76D7E0092A275 /* MarkupTokenizerInlines.h in Headers */,
    2530425300                                FABE72F51059C1EB00D999DD /* MathMLElement.h in Headers */,
  • trunk/Source/WebCore/html/parser/HTMLTokenizer.cpp

    r142497 r142535  
    106106
    107107HTMLTokenizer::HTMLTokenizer(const HTMLParserOptions& options)
    108     : m_options(options)
     108    : m_inputStreamPreprocessor(this)
     109    , m_options(options)
    109110{
    110111    reset();
     
    114115{
    115116}
    116 
    117 template<>
    118 inline bool MarkupTokenizerBase<HTMLToken, HTMLTokenizerState>::shouldSkipNullCharacters() const
    119 {
    120     return !m_forceNullCharacterReplacement
    121         && (m_state == HTMLTokenizerState::DataState
    122             || m_state == HTMLTokenizerState::RCDATAState
    123             || m_state == HTMLTokenizerState::RAWTEXTState);
    124 }
    125 
    126117
    127118void HTMLTokenizer::reset()
  • trunk/Source/WebCore/html/parser/HTMLTokenizer.h

    r139497 r142535  
    3030#include "HTMLParserOptions.h"
    3131#include "HTMLToken.h"
    32 #include "MarkupTokenizerBase.h"
     32#include "InputStreamPreprocessor.h"
    3333#include "SegmentedString.h"
    3434
     
    116116};
    117117
    118 class HTMLTokenizer : public MarkupTokenizerBase<HTMLToken, HTMLTokenizerState> {
     118class HTMLTokenizer {
    119119    WTF_MAKE_NONCOPYABLE(HTMLTokenizer);
    120120    WTF_MAKE_FAST_ALLOCATED;
     
    125125    void reset();
    126126
     127    // FIXME: HTMLTokenizerState::State should just be moved back into this class.
     128    typedef HTMLTokenizerState::State State;
     129
    127130#if ENABLE(THREADED_HTML_PARSER)
    128131
    129132    struct Checkpoint {
    130133        HTMLParserOptions options;
    131         HTMLTokenizerState::State state;
     134        State state;
    132135        UChar additionalAllowedCharacter;
    133136        bool skipNextNewLine;
     
    192195    void setShouldAllowCDATA(bool value) { m_shouldAllowCDATA = value; }
    193196
     197    State state() const { return m_state; }
     198    void setState(State state) { m_state = state; }
     199
     200    inline bool shouldSkipNullCharacters() const
     201    {
     202        return !m_forceNullCharacterReplacement
     203            && (m_state == HTMLTokenizerState::DataState
     204                || m_state == HTMLTokenizerState::RCDATAState
     205                || m_state == HTMLTokenizerState::RAWTEXTState);
     206    }
     207
    194208private:
    195209    explicit HTMLTokenizer(const HTMLParserOptions&);
     
    198212
    199213    inline void parseError();
     214
     215    inline void bufferCharacter(UChar character)
     216    {
     217        ASSERT(character != kEndOfFileMarker);
     218        m_token->ensureIsCharacterToken();
     219        m_token->appendToCharacter(character);
     220    }
     221
     222    inline bool emitAndResumeIn(SegmentedString& source, State state)
     223    {
     224        saveEndTagNameIfNeeded();
     225        m_state = state;
     226        source.advanceAndUpdateLineNumber();
     227        return true;
     228    }
    200229   
    201     inline bool emitAndResumeIn(SegmentedString& source, HTMLTokenizerState::State state)
     230    inline bool emitAndReconsumeIn(SegmentedString& source, State state)
    202231    {
    203232        saveEndTagNameIfNeeded();
    204         return MarkupTokenizerBase<HTMLToken, HTMLTokenizerState>::emitAndResumeIn(source, state);
    205     }
    206    
    207     inline bool emitAndReconsumeIn(SegmentedString& source, HTMLTokenizerState::State state)
    208     {
    209         saveEndTagNameIfNeeded();
    210         return MarkupTokenizerBase<HTMLToken, HTMLTokenizerState>::emitAndReconsumeIn(source, state);
    211     }
    212 
    213     inline bool flushEmitAndResumeIn(SegmentedString&, HTMLTokenizerState::State);
     233        m_state = state;
     234        return true;
     235    }
     236
     237    inline bool emitEndOfFile(SegmentedString& source)
     238    {
     239        if (haveBufferedCharacterToken())
     240            return true;
     241        m_state = HTMLTokenizerState::DataState;
     242        source.advanceAndUpdateLineNumber();
     243        m_token->clear();
     244        m_token->makeEndOfFile();
     245        return true;
     246    }
     247
     248    inline bool flushEmitAndResumeIn(SegmentedString&, State);
    214249
    215250    // Return whether we need to emit a character token before dealing with
     
    231266    inline bool isAppropriateEndTag();
    232267
     268
     269    inline bool haveBufferedCharacterToken()
     270    {
     271        return m_token->type() == HTMLToken::Type::Character;
     272    }
     273
     274    State m_state;
     275    bool m_forceNullCharacterReplacement;
     276    bool m_shouldAllowCDATA;
     277
     278    // m_token is owned by the caller. If nextToken is not on the stack,
     279    // this member might be pointing to unallocated memory.
     280    HTMLToken* m_token;
     281
     282    // http://www.whatwg.org/specs/web-apps/current-work/#additional-allowed-character
     283    UChar m_additionalAllowedCharacter;
     284
     285    // http://www.whatwg.org/specs/web-apps/current-work/#preprocessing-the-input-stream
     286    InputStreamPreprocessor<HTMLTokenizer> m_inputStreamPreprocessor;
     287
    233288    Vector<UChar, 32> m_appropriateEndTagName;
    234 
    235     bool m_shouldAllowCDATA;
    236289
    237290    // http://www.whatwg.org/specs/web-apps/current-work/#temporary-buffer
Note: See TracChangeset for help on using the changeset viewer.