Changeset 61925 in webkit
- Timestamp:
- Jun 25, 2010 5:47:59 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r61921 r61925 1 2010-06-25 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 We should parse <html> 6 https://bugs.webkit.org/show_bug.cgi?id=41239 7 8 This patch is hard to test, but I think this patch lets us parse a 9 document consisting of only an <html> start tag. 10 11 * html/HTMLTreeBuilder.cpp: 12 (WebCore::HTMLTreeBuilder::constructTreeFromToken): 13 (WebCore::HTMLTreeBuilder::insertHTMLStartTagBeforeHTML): 14 (WebCore::HTMLTreeBuilder::insertHTMLStartTagInBody): 15 (WebCore::HTMLTreeBuilder::processStartTag): 16 (WebCore::HTMLTreeBuilder::processDefaultForBeforeHTMLMode): 17 * html/HTMLTreeBuilder.h: 18 (WebCore::HTMLTreeBuilder::ElementStack::push): 19 1 20 2010-06-25 Dan Bernstein <mitz@apple.com> 2 21 -
trunk/WebCore/html/HTMLTreeBuilder.cpp
r61915 r61925 33 33 #include "HTMLToken.h" 34 34 #include "HTMLDocument.h" 35 #include "HTMLHtmlElement.h" 35 36 #include "LegacyHTMLDocumentParser.h" 36 37 #include "HTMLNames.h" … … 226 227 227 228 AtomicHTMLToken token(rawToken); 228 returnprocessToken(token);229 processToken(token); 229 230 } 230 231 … … 265 266 } 266 267 268 void HTMLTreeBuilder::insertHTMLStartTagBeforeHTML(AtomicHTMLToken&) 269 { 270 RefPtr<Element> element = HTMLHtmlElement::create(m_document); 271 // FIXME: Add attributes to |element|. 272 m_document->addChild(element); 273 m_openElements.push(element.release()); 274 } 275 276 void HTMLTreeBuilder::insertHTMLStartTagInBody(AtomicHTMLToken&) 277 { 278 notImplemented(); 279 } 280 267 281 void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token) 268 282 { … … 275 289 ASSERT(insertionMode() == BeforeHTMLMode); 276 290 if (token.name() == htmlTag) { 277 notImplemented();291 insertHTMLStartTagBeforeHTML(token); 278 292 setInsertionMode(BeforeHeadMode); 279 293 return; … … 284 298 ASSERT(insertionMode() == BeforeHeadMode); 285 299 if (token.name() == htmlTag) { 286 notImplemented();300 insertHTMLStartTagInBody(token); 287 301 return; 288 302 } … … 297 311 ASSERT(insertionMode() == InHeadMode); 298 312 if (token.name() == htmlTag) { 299 notImplemented();313 insertHTMLStartTagInBody(token); 300 314 return; 301 315 } … … 343 357 ASSERT(insertionMode() == AfterHeadMode); 344 358 if (token.name() == htmlTag) { 345 notImplemented();359 insertHTMLStartTagInBody(token); 346 360 return; 347 361 } … … 359 373 parseError(token); 360 374 ASSERT(m_headElement); 361 m_openElements.push(m_headElement .get());375 m_openElements.push(m_headElement); 362 376 notImplemented(); 363 377 m_openElements.remove(m_headElement.get()); … … 377 391 ASSERT(insertionMode() == InHeadNoscriptMode); 378 392 if (token.name() == htmlTag) { 379 notImplemented();393 insertHTMLStartTagInBody(token); 380 394 return; 381 395 } … … 524 538 void HTMLTreeBuilder::processDefaultForBeforeHTMLMode(AtomicHTMLToken&) 525 539 { 526 notImplemented(); 540 AtomicHTMLToken startHTML(HTMLToken::StartTag, htmlTag.localName()); 541 insertHTMLStartTagBeforeHTML(startHTML); 527 542 setInsertionMode(BeforeHeadMode); 528 543 } -
trunk/WebCore/html/HTMLTreeBuilder.h
r61915 r61925 103 103 public: 104 104 void pop() { } 105 void push( Element*) { }105 void push(PassRefPtr<Element>) { } 106 106 void remove(Element*) { } 107 107 Element* top() const { return 0; } … … 134 134 void insertGenericRawTextElement(AtomicHTMLToken&); 135 135 void insertScriptElement(AtomicHTMLToken&); 136 137 void insertHTMLStartTagBeforeHTML(AtomicHTMLToken&); 138 void insertHTMLStartTagInBody(AtomicHTMLToken&); 136 139 137 140 RefPtr<Element> m_headElement;
Note: See TracChangeset
for help on using the changeset viewer.