Title: [93460] trunk/Source/WebCore
Revision
93460
Author
[email protected]
Date
2011-08-19 17:45:52 -0700 (Fri, 19 Aug 2011)

Log 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:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (93459 => 93460)


--- trunk/Source/WebCore/ChangeLog	2011-08-20 00:41:58 UTC (rev 93459)
+++ trunk/Source/WebCore/ChangeLog	2011-08-20 00:45:52 UTC (rev 93460)
@@ -1,3 +1,20 @@
+2011-08-19  Jeffrey Pfau  <[email protected]>
+
+        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:
+
 2011-08-19  Jeff Miller  <[email protected]>
 
         MediaPlayerPrivateAVFoundationCF should use AVCFURLAssetCopyAudiovisualMIMETypes() to get list of supported MIME types

Modified: trunk/Source/WebCore/xml/parser/NewXMLDocumentParser.cpp (93459 => 93460)


--- trunk/Source/WebCore/xml/parser/NewXMLDocumentParser.cpp	2011-08-20 00:41:58 UTC (rev 93459)
+++ trunk/Source/WebCore/xml/parser/NewXMLDocumentParser.cpp	2011-08-20 00:45:52 UTC (rev 93460)
@@ -144,6 +144,8 @@
     if (m_parserPaused)
         return;
 
+    m_treeBuilder->finish();
+
     m_finishWasCalled = true;
     if (isParsing())
         prepareToStopParsing();

Modified: trunk/Source/WebCore/xml/parser/XMLTreeBuilder.cpp (93459 => 93460)


--- trunk/Source/WebCore/xml/parser/XMLTreeBuilder.cpp	2011-08-20 00:41:58 UTC (rev 93459)
+++ trunk/Source/WebCore/xml/parser/XMLTreeBuilder.cpp	2011-08-20 00:45:52 UTC (rev 93460)
@@ -47,6 +47,7 @@
     : m_document(document)
     , m_parser(parser)
     , m_isXHTML(false)
+    , m_sawFirstElement(false)
 {
     m_currentNodeStack.append(NodeStackItem(document));
 }
@@ -55,6 +56,7 @@
     : m_document(fragment->document())
     , m_parser(parser)
     , m_isXHTML(false)
+    , m_sawFirstElement(true)
 {
     NodeStackItem stackItem(fragment);
 
@@ -128,10 +130,16 @@
         processEntity(token);
         break;
     case XMLTokenTypes::EndOfFile:
+        exitText();
         return;
     }
 }
 
+void XMLTreeBuilder::finish()
+{
+    exitText();
+}
+
 void XMLTreeBuilder::pushCurrentNode(const NodeStackItem& stackItem)
 {
     ASSERT(stackItem.node());

Modified: trunk/Source/WebCore/xml/parser/XMLTreeBuilder.h (93459 => 93460)


--- trunk/Source/WebCore/xml/parser/XMLTreeBuilder.h	2011-08-20 00:41:58 UTC (rev 93459)
+++ trunk/Source/WebCore/xml/parser/XMLTreeBuilder.h	2011-08-20 00:45:52 UTC (rev 93460)
@@ -53,6 +53,7 @@
     }
 
     void processToken(const AtomicXMLToken&);
+    void finish();
 
 private:
     XMLTreeBuilder(NewXMLDocumentParser*, Document*);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to