Changeset 93460 in webkit


Ignore:
Timestamp:
Aug 19, 2011 5:45:52 PM (13 years ago)
Author:
jpfau@apple.com
Message:

New XML parser: text nodes outside of root element not created for document fragments
https://bugs.webkit.org/show_bug.cgi?id=66604

When intializing a fragment parser, declare that the first element has been seen. Also, flush the text nodes when finishing parsing a document.

Reviewed by Darin Adler.

  • xml/parser/NewXMLDocumentParser.cpp:

(WebCore::NewXMLDocumentParser::finish):

  • xml/parser/XMLTreeBuilder.cpp:

(WebCore::XMLTreeBuilder::XMLTreeBuilder):
(WebCore::XMLTreeBuilder::processToken):
(WebCore::XMLTreeBuilder::finish):

  • xml/parser/XMLTreeBuilder.h:
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r93459 r93460  
     12011-08-19  Jeffrey Pfau  <jpfau@apple.com>
     2
     3        New XML parser: text nodes outside of root element not created for document fragments
     4        https://bugs.webkit.org/show_bug.cgi?id=66604
     5
     6        When intializing a fragment parser, declare that the first element has been seen. Also, flush the text nodes when finishing parsing a document.
     7
     8        Reviewed by Darin Adler.
     9
     10        * xml/parser/NewXMLDocumentParser.cpp:
     11        (WebCore::NewXMLDocumentParser::finish):
     12        * xml/parser/XMLTreeBuilder.cpp:
     13        (WebCore::XMLTreeBuilder::XMLTreeBuilder):
     14        (WebCore::XMLTreeBuilder::processToken):
     15        (WebCore::XMLTreeBuilder::finish):
     16        * xml/parser/XMLTreeBuilder.h:
     17
    1182011-08-19  Jeff Miller  <jeffm@apple.com>
    219
  • trunk/Source/WebCore/xml/parser/NewXMLDocumentParser.cpp

    r93380 r93460  
    145145        return;
    146146
     147    m_treeBuilder->finish();
     148
    147149    m_finishWasCalled = true;
    148150    if (isParsing())
  • trunk/Source/WebCore/xml/parser/XMLTreeBuilder.cpp

    r93380 r93460  
    4848    , m_parser(parser)
    4949    , m_isXHTML(false)
     50    , m_sawFirstElement(false)
    5051{
    5152    m_currentNodeStack.append(NodeStackItem(document));
     
    5657    , m_parser(parser)
    5758    , m_isXHTML(false)
     59    , m_sawFirstElement(true)
    5860{
    5961    NodeStackItem stackItem(fragment);
     
    129131        break;
    130132    case XMLTokenTypes::EndOfFile:
    131         return;
    132     }
     133        exitText();
     134        return;
     135    }
     136}
     137
     138void XMLTreeBuilder::finish()
     139{
     140    exitText();
    133141}
    134142
  • trunk/Source/WebCore/xml/parser/XMLTreeBuilder.h

    r93380 r93460  
    5454
    5555    void processToken(const AtomicXMLToken&);
     56    void finish();
    5657
    5758private:
Note: See TracChangeset for help on using the changeset viewer.