Changeset 61825 in webkit
- Timestamp:
- Jun 24, 2010 10:36:55 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r61824 r61825 1 2010-06-24 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Sketch out AfterHeadMode for tree builder 6 https://bugs.webkit.org/show_bug.cgi?id=41191 7 8 This mode is fairly similar to the others. I needed to change some of 9 the types around w.r.t. Nodes/Elements. 10 11 * html/HTMLTreeBuilder.cpp: 12 (WebCore::HTMLTreeBuilder::HTMLTreeBuilder): 13 (WebCore::HTMLTreeBuilder::processToken): 14 (WebCore::HTMLTreeBuilder::insertElement): 15 * html/HTMLTreeBuilder.h: 16 (WebCore::HTMLTreeBuilder::ElementStack::push): 17 (WebCore::HTMLTreeBuilder::ElementStack::remove): 18 1 19 2010-06-24 Adam Barth <abarth@webkit.org> 2 20 -
trunk/WebCore/html/HTMLTreeBuilder.cpp
r61824 r61825 56 56 57 57 HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, HTMLDocument* document, bool reportErrors) 58 : m_document(document) 58 : m_framesetOk(true) 59 , m_document(document) 59 60 , m_reportErrors(reportErrors) 60 61 , m_isPaused(false) … … 71 72 // minimize code duplication between these constructors. 72 73 HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, DocumentFragment* fragment, FragmentScriptingPermission scriptingPermission) 73 : m_document(fragment->document()) 74 : m_framesetOk(true) 75 , m_document(fragment->document()) 74 76 , m_reportErrors(false) // FIXME: Why not report errors in fragments? 75 77 , m_isPaused(false) … … 440 442 parseError(token); 441 443 return 0; 442 break;443 444 case HTMLToken::Character: 444 445 notImplemented(); … … 454 455 goto reprocessToken; 455 456 } 456 case AfterHeadMode: 457 case AfterHeadMode: { 458 switch (token.type()) { 459 case HTMLToken::Uninitialized: 460 ASSERT_NOT_REACHED(); 461 break; 462 case HTMLToken::Character: 463 if (isTreeBuilderWhiteSpace(cc)) { 464 insertCharacter(cc); 465 return 0; 466 } 467 break; 468 case HTMLToken::Comment: 469 return insertComment(token); 470 case HTMLToken::DOCTYPE: 471 parseError(token); 472 return 0; 473 case HTMLToken::StartTag: 474 if (token.name() == htmlTag) { 475 notImplemented(); 476 return 0; 477 } 478 if (token.name() == bodyTag) { 479 m_framesetOk = false; 480 return insertElement(token); 481 } 482 if (token.name() == framesetTag) { 483 PassRefPtr<Node> node = insertElement(token); 484 setInsertionMode(InFramesetMode); 485 return node; 486 } 487 if (token.name() == baseTag || token.name() == linkTag || token.name() == metaTag || token.name() == noframesTag || token.name() == scriptTag || token.name() == styleTag || token.name() == titleTag) { 488 parseError(token); 489 ASSERT(m_headElement); 490 m_openElements.push(m_headElement.get()); 491 notImplemented(); 492 m_openElements.remove(m_headElement.get()); 493 } 494 if (token.name() == headTag) { 495 parseError(token); 496 return 0; 497 } 498 break; 499 case HTMLToken::EndTag: 500 if (token.name() == bodyTag || token.name() == htmlTag || token.name() == brTag) 501 break; 502 parseError(token); 503 return 0; 504 case HTMLToken::EndOfFile: 505 break; 506 } 507 AtomicHTMLToken fakeBody(HTMLToken::StartTag, bodyTag.localName()); 508 processToken(fakeBody); 509 m_framesetOk = true; 510 goto reprocessToken; 511 } 457 512 case InBodyMode: 458 513 case TextMode: … … 491 546 } 492 547 493 PassRefPtr< Node> HTMLTreeBuilder::insertElement(AtomicHTMLToken& token)548 PassRefPtr<Element> HTMLTreeBuilder::insertElement(AtomicHTMLToken& token) 494 549 { 495 550 ASSERT_UNUSED(token, token.type() == HTMLToken::StartTag); -
trunk/WebCore/html/HTMLTreeBuilder.h
r61823 r61825 103 103 public: 104 104 void pop() { } 105 void push(Element*) { } 106 void remove(Element*) { } 105 107 Element* top() const { return 0; } 106 108 }; … … 111 113 PassRefPtr<Node> insertDoctype(AtomicHTMLToken&); 112 114 PassRefPtr<Node> insertComment(AtomicHTMLToken&); 113 PassRefPtr< Node> insertElement(AtomicHTMLToken&);115 PassRefPtr<Element> insertElement(AtomicHTMLToken&); 114 116 void insertCharacter(UChar cc); 115 117 PassRefPtr<Node> insertGenericRCDATAElement(AtomicHTMLToken&); … … 117 119 PassRefPtr<Node> insertScriptElement(AtomicHTMLToken&); 118 120 119 RefPtr< Node> m_headElement;121 RefPtr<Element> m_headElement; 120 122 ElementStack m_openElements; 123 bool m_framesetOk; 121 124 122 125 // FIXME: Implement error reporting.
Note: See TracChangeset
for help on using the changeset viewer.