Changeset 61822 in webkit
- Timestamp:
- Jun 24, 2010 10:31:48 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r61818 r61822 1 2010-06-24 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Sketch out BeforeHeadMode tree builder state 6 https://bugs.webkit.org/show_bug.cgi?id=41183 7 8 This makes procesToken recursive, which might not be the best idea. 9 Also, we can now make fake AtomicHTMLTokens for use by the algorithm. 10 11 * html/HTMLToken.h: 12 (WebCore::AtomicHTMLToken::AtomicHTMLToken): 13 * html/HTMLTreeBuilder.cpp: 14 (WebCore::HTMLTreeBuilder::processToken): 15 (WebCore::HTMLTreeBuilder::insertElement): 16 * html/HTMLTreeBuilder.h: 17 1 18 2010-06-22 Antonio Gomes <tonikitoo@webkit.org> 2 19 -
trunk/WebCore/html/HTMLToken.h
r61791 r61822 323 323 } 324 324 325 AtomicHTMLToken(HTMLToken::Type type, AtomicString name) 326 : m_type(type) 327 , m_name(name) 328 { 329 } 330 325 331 HTMLToken::Type type() const { return m_type; } 326 332 -
trunk/WebCore/html/HTMLTreeBuilder.cpp
r61793 r61822 45 45 46 46 static const int uninitializedLineNumberValue = -1; 47 48 namespace { 49 50 inline bool isTreeBuilderWhiteSpace(UChar cc) 51 { 52 return cc == '\t' || cc == '\x0A' || cc == '\x0C' || cc == '\x0D' || cc == ' '; 53 } 54 55 } // namespace 47 56 48 57 HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, HTMLDocument* document, bool reportErrors) … … 243 252 return insertComment(token); 244 253 case HTMLToken::Character: 245 if ( cc == '\t' || cc == '\x0A' || cc == '\x0C' || cc == '\x0D' || cc == ' ')254 if (isTreeBuilderWhiteSpace(cc)) 246 255 return 0; 247 256 break; … … 267 276 return insertComment(token); 268 277 case HTMLToken::Character: 269 if ( cc == '\t' || cc == '\x0A' || cc == '\x0C' || cc == '\x0D' || cc == ' ')278 if (isTreeBuilderWhiteSpace(cc)) 270 279 return 0; 271 280 break; … … 289 298 goto reprocessToken; 290 299 } 291 case BeforeHeadMode: 300 case BeforeHeadMode: { 301 switch (token.type()) { 302 case HTMLToken::Uninitialized: 303 ASSERT_NOT_REACHED(); 304 break; 305 case HTMLToken::Character: 306 if (isTreeBuilderWhiteSpace(cc)) 307 return 0; 308 break; 309 case HTMLToken::Comment: 310 return insertComment(token); 311 case HTMLToken::DOCTYPE: 312 parseError(token); 313 return 0; 314 case HTMLToken::StartTag: 315 if (token.name() == htmlTag) { 316 notImplemented(); 317 return 0; 318 } 319 if (token.name() == headTag) { 320 m_headElement = insertElement(token); 321 setInsertionMode(InHeadMode); 322 return m_headElement; 323 } 324 break; 325 case HTMLToken::EndTag: 326 if (token.name() == headTag || token.name() == bodyTag || token.name() == brTag) { 327 AtomicHTMLToken fakeHead(HTMLToken::StartTag, headTag.localName()); 328 processToken(fakeHead); 329 goto reprocessToken; 330 } 331 parseError(token); 332 return 0; 333 case HTMLToken::EndOfFile: 334 break; 335 } 336 AtomicHTMLToken fakeHead(HTMLToken::StartTag, headTag.localName()); 337 processToken(fakeHead); 338 goto reprocessToken; 339 } 292 340 case InHeadMode: 293 341 case InHeadNoscriptMode: … … 329 377 } 330 378 379 PassRefPtr<Node> HTMLTreeBuilder::insertElement(AtomicHTMLToken& token) 380 { 381 ASSERT_UNUSED(token, token.type() == HTMLToken::StartTag); 382 return 0; 383 } 384 331 385 void HTMLTreeBuilder::finished() 332 386 { -
trunk/WebCore/html/HTMLTreeBuilder.h
r61793 r61822 105 105 PassRefPtr<Node> insertDoctype(AtomicHTMLToken&); 106 106 PassRefPtr<Node> insertComment(AtomicHTMLToken&); 107 PassRefPtr<Node> insertElement(AtomicHTMLToken&); 108 109 RefPtr<Node> m_headElement; 107 110 108 111 // FIXME: Implement error reporting.
Note: See TracChangeset
for help on using the changeset viewer.