Changeset 139760 in webkit


Ignore:
Timestamp:
Jan 15, 2013 11:06:25 AM (11 years ago)
Author:
tonyg@chromium.org
Message:

Make AtomicMarkupTokenBase use a bare UChar* for external characters
https://bugs.webkit.org/show_bug.cgi?id=106919

Reviewed by Eric Seidel.

This allows an arbitrary backing for external characters which is necessary for the threaded HTML parser.

No new tests because no new functionality.

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::ExternalCharacterTokenBuffer):
(WebCore::HTMLTreeBuilder::processTokenInForeignContent):

  • xml/parser/MarkupTokenBase.h:

(WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase):
(WebCore::AtomicMarkupTokenBase::characters):
(AtomicMarkupTokenBase):
(WebCore::AtomicMarkupTokenBase::charactersLength):
(WebCore::AtomicMarkupTokenBase::clearExternalCharacters):

  • xml/parser/XMLTreeBuilder.cpp:

(WebCore::XMLTreeBuilder::processCharacter):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r139756 r139760  
     12013-01-15  Tony Gentilcore  <tonyg@chromium.org>
     2
     3        Make AtomicMarkupTokenBase use a bare UChar* for external characters
     4        https://bugs.webkit.org/show_bug.cgi?id=106919
     5
     6        Reviewed by Eric Seidel.
     7
     8        This allows an arbitrary backing for external characters which is necessary for the threaded HTML parser.
     9
     10        No new tests because no new functionality.
     11
     12        * html/parser/HTMLTreeBuilder.cpp:
     13        (WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::ExternalCharacterTokenBuffer):
     14        (WebCore::HTMLTreeBuilder::processTokenInForeignContent):
     15        * xml/parser/MarkupTokenBase.h:
     16        (WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase):
     17        (WebCore::AtomicMarkupTokenBase::characters):
     18        (AtomicMarkupTokenBase):
     19        (WebCore::AtomicMarkupTokenBase::charactersLength):
     20        (WebCore::AtomicMarkupTokenBase::clearExternalCharacters):
     21        * xml/parser/XMLTreeBuilder.cpp:
     22        (WebCore::XMLTreeBuilder::processCharacter):
     23
    1242013-01-15  Arko Saha  <arko@motorola.com>
    225
  • trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp

    r139523 r139760  
    150150public:
    151151    explicit ExternalCharacterTokenBuffer(AtomicHTMLToken* token)
    152         : m_current(token->characters().data())
    153         , m_end(m_current + token->characters().size())
     152        : m_current(token->characters())
     153        , m_end(m_current + token->charactersLength())
    154154        , m_isAll8BitData(token->isAll8BitData())
    155155    {
     
    28552855        return;
    28562856    case HTMLTokenTypes::Character: {
    2857         String characters = String(token->characters().data(), token->characters().size());
     2857        String characters = String(token->characters(), token->charactersLength());
    28582858        m_tree.insertTextNode(characters);
    28592859        if (m_framesetOk && !isAllWhitespaceOrReplacementCharacters(characters))
  • trunk/Source/WebCore/xml/parser/MarkupTokenBase.h

    r132373 r139760  
    459459            break;
    460460        case Token::Type::Character:
    461             m_externalCharacters = &token->characters();
     461            m_externalCharacters = token->characters().data();
     462            m_externalCharactersLength = token->characters().size();
    462463            m_isAll8BitData = token->isAll8BitData();
    463464            break;
     
    471472        , m_name(name)
    472473        , m_externalCharacters(0)
     474        , m_externalCharactersLength(0)
    473475        , m_isAll8BitData(false)
    474476        , m_attributes(attributes)
     
    515517    }
    516518
    517     const typename Token::DataVector& characters() const
     519    const UChar* characters() const
    518520    {
    519521        ASSERT(m_type == Token::Type::Character);
    520         return *m_externalCharacters;
     522        return m_externalCharacters;
     523    }
     524
     525    size_t charactersLength() const
     526    {
     527        ASSERT(m_type == Token::Type::Character);
     528        return m_externalCharactersLength;
    521529    }
    522530
     
    549557    {
    550558        m_externalCharacters = 0;
     559        m_externalCharactersLength = 0;
    551560        m_isAll8BitData = false;
    552561    }
     
    576585    // FIXME: Add a mechanism for "internalizing" the characters when the
    577586    //        HTMLToken is destructed.
    578     const typename Token::DataVector* m_externalCharacters;
     587    const UChar* m_externalCharacters;
     588    size_t m_externalCharactersLength;
    579589    bool m_isAll8BitData;
    580590
  • trunk/Source/WebCore/xml/parser/XMLTreeBuilder.cpp

    r133976 r139760  
    274274void XMLTreeBuilder::processCharacter(const AtomicXMLToken& token)
    275275{
    276     appendToText(token.characters().data(), token.characters().size());
     276    appendToText(token.characters(), token.charactersLength());
    277277}
    278278
Note: See TracChangeset for help on using the changeset viewer.