Changeset 92709 in webkit
- Timestamp:
- Aug 9, 2011 2:32:04 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r92706 r92709 1 2011-08-09 Jeffrey Pfau <jpfau@apple.com> 2 3 Initial pass at a new XML tree builder 4 https://bugs.webkit.org/show_bug.cgi?id=65803 5 6 Reviewed by Adam Barth. 7 8 * GNUmakefile.list.am: 9 * WebCore.gypi: 10 * WebCore.pro: 11 * WebCore.vcproj/WebCore.vcproj: 12 * WebCore.xcodeproj/project.pbxproj: 13 * xml/parser/NewXMLDocumentParser.cpp: 14 (WebCore::NewXMLDocumentParser::NewXMLDocumentParser): 15 (WebCore::NewXMLDocumentParser::~NewXMLDocumentParser): 16 (WebCore::NewXMLDocumentParser::append): 17 (WebCore::NewXMLDocumentParser::finish): 18 (WebCore::NewXMLDocumentParser::finishWasCalled): 19 * xml/parser/NewXMLDocumentParser.h: 20 * xml/parser/XMLTreeBuilder.cpp: Added. 21 (WebCore::XMLTreeBuilder::XMLTreeBuilder): 22 (WebCore::XMLTreeBuilder::processToken): 23 (WebCore::XMLTreeBuilder::pushCurrentNode): 24 (WebCore::XMLTreeBuilder::popCurrentNode): 25 (WebCore::XMLTreeBuilder::processProcessingInstruction): 26 (WebCore::XMLTreeBuilder::processXMLDeclaration): 27 (WebCore::XMLTreeBuilder::processDOCTYPE): 28 (WebCore::XMLTreeBuilder::processStartTag): 29 (WebCore::XMLTreeBuilder::processEndTag): 30 (WebCore::XMLTreeBuilder::processCharacter): 31 (WebCore::XMLTreeBuilder::processCDATA): 32 (WebCore::XMLTreeBuilder::processComment): 33 (WebCore::XMLTreeBuilder::processEntity): 34 (WebCore::XMLTreeBuilder::processNamespaces): 35 (WebCore::XMLTreeBuilder::processAttributes): 36 (WebCore::XMLTreeBuilder::processXMLEntity): 37 (WebCore::XMLTreeBuilder::processHTMLEntity): 38 (WebCore::XMLTreeBuilder::add): 39 (WebCore::XMLTreeBuilder::appendToText): 40 (WebCore::XMLTreeBuilder::enterText): 41 (WebCore::XMLTreeBuilder::exitText): 42 (WebCore::XMLTreeBuilder::NodeStackItem::NodeStackItem): 43 (WebCore::XMLTreeBuilder::NodeStackItem::hasNamespaceURI): 44 (WebCore::XMLTreeBuilder::NodeStackItem::namespaceURI): 45 (WebCore::XMLTreeBuilder::NodeStackItem::setNamespaceURI): 46 (WebCore::XMLTreeBuilder::NodeStackItem::namespaceForPrefix): 47 * xml/parser/XMLTreeBuilder.h: Added. 48 (WebCore::XMLTreeBuilder::create): 49 (WebCore::XMLTreeBuilder::NodeStackItem::namespaceURI): 50 (WebCore::XMLTreeBuilder::NodeStackItem::setNamespaceURI): 51 (WebCore::XMLTreeBuilder::NodeStackItem::node): 52 (WebCore::XMLTreeBuilder::NodeStackItem::setNode): 53 1 54 2011-08-09 Mark Hahnenberg <mhahnenberg@apple.com> 2 55 -
trunk/Source/WebCore/GNUmakefile.list.am
r92693 r92709 3837 3837 Source/WebCore/xml/parser/XMLTokenizer.h \ 3838 3838 Source/WebCore/xml/parser/XMLToken.h \ 3839 Source/WebCore/xml/parser/XMLTreeBuilder.cpp \ 3840 Source/WebCore/xml/parser/XMLTreeBuilder.h \ 3839 3841 Source/WebCore/xml/DOMParser.cpp \ 3840 3842 Source/WebCore/xml/DOMParser.h \ -
trunk/Source/WebCore/WebCore.gypi
r92693 r92709 5136 5136 'xml/parser/XMLTokenizer.h', 5137 5137 'xml/parser/XMLToken.h', 5138 'xml/parser/XMLTreeBuilder.cpp', 5139 'xml/parser/XMLTreeBuilder.h', 5138 5140 'xml/DOMParser.cpp', 5139 5141 'xml/DOMParser.h', -
trunk/Source/WebCore/WebCore.pro
r92677 r92709 1209 1209 xml/parser/XMLCharacterReferenceParser.cpp \ 1210 1210 xml/parser/XMLDocumentParser.cpp \ 1211 xml/parser/XMLTokenizer.cpp 1211 xml/parser/XMLTokenizer.cpp \ 1212 xml/parser/XMLTreeBuilder.cpp 1212 1213 1213 1214 HEADERS += \ … … 2521 2522 xml/parser/XMLTokenizer.h \ 2522 2523 xml/parser/XMLToken.h \ 2524 xml/parser/XMLTreeBuilder.h \ 2523 2525 xml/DOMParser.h \ 2524 2526 xml/NativeXPathNSResolver.h \ -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r92677 r92709 42746 42746 </File> 42747 42747 <File 42748 RelativePath="..\xml\parser\NewXMLDocumentParser.h" 42749 > 42750 </File> 42751 <File 42752 RelativePath="..\xml\parser\NewXMLDocumentParser.cpp" 42753 > 42754 </File> 42755 <File 42748 42756 RelativePath="..\xml\parser\XMLDocumentParser.cpp" 42749 42757 > … … 42867 42875 <File 42868 42876 RelativePath="..\xml\parser\XMLTokenizer.h" 42877 > 42878 </File> 42879 <File 42880 RelativePath="..\xml\parser\XMLTreeBuilder.h" 42881 > 42882 </File> 42883 <File 42884 RelativePath="..\xml\parser\XMLTreeBuilder.cpp" 42869 42885 > 42870 42886 </File> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r92696 r92709 52 52 0014628A103CD1DE000B20DB /* OriginAccessEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00146288103CD1DE000B20DB /* OriginAccessEntry.cpp */; }; 53 53 0014628B103CD1DE000B20DB /* OriginAccessEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = 00146289103CD1DE000B20DB /* OriginAccessEntry.h */; }; 54 0035EBBB13F06FF200A56089 /* XMLTreeBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0035EBBA13F06FF200A56089 /* XMLTreeBuilder.h */; }; 55 0035EBBE13F0713C00A56089 /* XMLTreeBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0035EBBD13F0713C00A56089 /* XMLTreeBuilder.cpp */; }; 54 56 003F1FEA11E6AB43008258D9 /* UserContentTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 003F1FE911E6AB43008258D9 /* UserContentTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; 55 57 00A629C113D0BEC70050AC52 /* MarkupTokenBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 00A629C013D0BEC70050AC52 /* MarkupTokenBase.h */; }; … … 6489 6491 00146288103CD1DE000B20DB /* OriginAccessEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OriginAccessEntry.cpp; sourceTree = "<group>"; }; 6490 6492 00146289103CD1DE000B20DB /* OriginAccessEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OriginAccessEntry.h; sourceTree = "<group>"; }; 6493 0035EBBA13F06FF200A56089 /* XMLTreeBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLTreeBuilder.h; sourceTree = "<group>"; }; 6494 0035EBBD13F0713C00A56089 /* XMLTreeBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLTreeBuilder.cpp; sourceTree = "<group>"; }; 6491 6495 003F1FE911E6AB43008258D9 /* UserContentTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserContentTypes.h; sourceTree = "<group>"; }; 6492 6496 00A629C013D0BEC70050AC52 /* MarkupTokenBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkupTokenBase.h; sourceTree = "<group>"; }; … … 12869 12873 0002EC5613C3F67D00040D47 /* XMLTokenizer.cpp */, 12870 12874 0002EC5713C3F67D00040D47 /* XMLTokenizer.h */, 12875 0035EBBD13F0713C00A56089 /* XMLTreeBuilder.cpp */, 12876 0035EBBA13F06FF200A56089 /* XMLTreeBuilder.h */, 12871 12877 ); 12872 12878 path = parser; … … 23337 23343 0002EC5813C3F67D00040D47 /* XMLToken.h in Headers */, 23338 23344 0002EC5A13C3F67D00040D47 /* XMLTokenizer.h in Headers */, 23345 0035EBBB13F06FF200A56089 /* XMLTreeBuilder.h in Headers */, 23339 23346 5905ADC01302F3CE00F116DF /* XMLTreeViewer.h in Headers */, 23340 23347 1AB7FC690A8B92EC00D9D37B /* XPathEvaluator.h in Headers */, … … 26149 26156 1ACE53EA0A8D18E70022947D /* XMLSerializer.cpp in Sources */, 26150 26157 0002EC5913C3F67D00040D47 /* XMLTokenizer.cpp in Sources */, 26158 0035EBBE13F0713C00A56089 /* XMLTreeBuilder.cpp in Sources */, 26151 26159 5905ADBF1302F3CE00F116DF /* XMLTreeViewer.cpp in Sources */, 26152 26160 1AB7FC680A8B92EC00D9D37B /* XPathEvaluator.cpp in Sources */, -
trunk/Source/WebCore/xml/parser/NewXMLDocumentParser.cpp
r91811 r92709 28 28 29 29 #include "SegmentedString.h" 30 #include "XMLTreeBuilder.h" 30 31 31 32 namespace WebCore { … … 34 35 : ScriptableDocumentParser(document) 35 36 , m_tokenizer(XMLTokenizer::create()) 37 , m_finishWasCalled(false) 38 , m_treeBuilder(XMLTreeBuilder::create(this, document)) 39 { 40 } 41 42 NewXMLDocumentParser::~NewXMLDocumentParser() 36 43 { 37 44 } … … 64 71 #endif 65 72 66 if (m_token.type() == XMLTokenTypes::EndOfFile) 73 AtomicXMLToken token(m_token); 74 m_treeBuilder->processToken(token); 75 76 if (m_token.type() == XMLTokenTypes::EndOfFile || !isParsing()) 67 77 break; 68 78 … … 74 84 void NewXMLDocumentParser::finish() 75 85 { 76 } 86 ASSERT(!m_finishWasCalled); 87 m_finishWasCalled = true; 77 88 78 void NewXMLDocumentParser::detach() 79 { 80 ScriptableDocumentParser::detach(); 89 if (isParsing()) 90 prepareToStopParsing(); 91 document()->setReadyState(Document::Interactive); 92 document()->finishedParsing(); 81 93 } 82 94 … … 88 100 bool NewXMLDocumentParser::finishWasCalled() 89 101 { 90 return false; 91 } 92 93 bool NewXMLDocumentParser::processingData() const 94 { 95 return false; 96 } 97 98 void NewXMLDocumentParser::prepareToStopParsing() 99 { 100 } 101 102 void NewXMLDocumentParser::stopParsing() 103 { 102 return m_finishWasCalled; 104 103 } 105 104 -
trunk/Source/WebCore/xml/parser/NewXMLDocumentParser.h
r91811 r92709 37 37 38 38 class Document; 39 class ContainerNode; 40 class XMLTreeBuilder; 39 41 40 42 class NewXMLDocumentParser : public ScriptableDocumentParser { … … 45 47 return adoptRef(new NewXMLDocumentParser(document)); 46 48 } 47 49 48 50 virtual TextPosition0 textPosition() const; 49 51 virtual int lineNumber() const; 52 53 // DocumentParser 54 virtual bool hasInsertionPoint(); 55 virtual bool finishWasCalled(); 56 virtual bool isWaitingForScripts() const; 57 virtual bool isExecutingScript() const; 58 virtual void executeScriptsWaitingForStylesheets(); 50 59 51 60 protected: … … 54 63 virtual void finish(); 55 64 56 57 65 private: 58 66 NewXMLDocumentParser(Document*); 59 60 // DocumentParser 61 virtual void detach(); 62 virtual bool hasInsertionPoint(); 63 virtual bool finishWasCalled(); 64 virtual bool processingData() const; 65 virtual void prepareToStopParsing(); 66 virtual void stopParsing(); 67 virtual bool isWaitingForScripts() const; 68 virtual bool isExecutingScript() const; 69 virtual void executeScriptsWaitingForStylesheets(); 67 virtual ~NewXMLDocumentParser(); 70 68 71 69 OwnPtr<XMLTokenizer> m_tokenizer; 72 70 XMLToken m_token; 71 72 bool m_finishWasCalled; 73 74 OwnPtr<XMLTreeBuilder> m_treeBuilder; 73 75 }; 74 76
Note: See TracChangeset
for help on using the changeset viewer.