Changeset 61914 in webkit
- Timestamp:
- Jun 25, 2010 4:32:11 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r61913 r61914 1 2010-06-25 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Darin Adler. 4 5 Tree builder doesn't need to return a Node 6 https://bugs.webkit.org/show_bug.cgi?id=41225 7 8 The old tree builder returned the newly inserted Node, but the new tree 9 builder doesn't need to do that as far as I can tell. Removing the 10 return value cuts down on a bunch of accounting. 11 12 * html/HTMLTreeBuilder.cpp: 13 (WebCore::HTMLTreeBuilder::passTokenToLegacyParser): 14 (WebCore::HTMLTreeBuilder::constructTreeFromToken): 15 (WebCore::HTMLTreeBuilder::processToken): 16 (WebCore::HTMLTreeBuilder::insertDoctype): 17 (WebCore::HTMLTreeBuilder::insertComment): 18 (WebCore::HTMLTreeBuilder::insertGenericRCDATAElement): 19 (WebCore::HTMLTreeBuilder::insertGenericRawTextElement): 20 (WebCore::HTMLTreeBuilder::insertScriptElement): 21 * html/HTMLTreeBuilder.h: 22 1 23 2010-06-25 Zhenyao Mo <zmo@google.com> 2 24 -
trunk/WebCore/html/HTMLTreeBuilder.cpp
r61825 r61914 167 167 } 168 168 169 PassRefPtr<Node>HTMLTreeBuilder::passTokenToLegacyParser(HTMLToken& token)169 void HTMLTreeBuilder::passTokenToLegacyParser(HTMLToken& token) 170 170 { 171 171 if (token.type() == HTMLToken::DOCTYPE) { … … 177 177 178 178 m_legacyTreeBuilder->parseDoctypeToken(&doctypeToken); 179 return 0;179 return; 180 180 } 181 181 … … 215 215 setInsertionMode(AfterFramesetMode); 216 216 } 217 return result.release(); 218 } 219 220 PassRefPtr<Node> HTMLTreeBuilder::constructTreeFromToken(HTMLToken& rawToken) 217 } 218 219 void HTMLTreeBuilder::constructTreeFromToken(HTMLToken& rawToken) 221 220 { 222 221 // Make MSVC ignore our unreachable code for now. 223 if (true) 224 return passTokenToLegacyParser(rawToken); 222 if (true) { 223 passTokenToLegacyParser(rawToken); 224 return; 225 } 225 226 226 227 AtomicHTMLToken token(rawToken); … … 235 236 for (unsigned i = 0; i < characters->length(); ++i) 236 237 processToken(token, (*characters)[i]); 237 return 0; // FIXME: Should we be returning the Text node?238 return; 238 239 } 239 240 return processToken(token); 240 241 } 241 242 242 PassRefPtr<Node>HTMLTreeBuilder::processToken(AtomicHTMLToken& token, UChar cc)243 void HTMLTreeBuilder::processToken(AtomicHTMLToken& token, UChar cc) 243 244 { 244 245 reprocessToken: … … 250 251 break; 251 252 case HTMLToken::DOCTYPE: 252 return insertDoctype(token); 253 insertDoctype(token); 254 return; 253 255 case HTMLToken::Comment: 254 return insertComment(token); 256 insertComment(token); 257 return; 255 258 case HTMLToken::Character: 256 259 if (isTreeBuilderWhiteSpace(cc)) 257 return 0;260 return; 258 261 break; 259 262 case HTMLToken::StartTag: … … 274 277 case HTMLToken::DOCTYPE: 275 278 parseError(token); 276 return 0;279 return; 277 280 case HTMLToken::Comment: 278 return insertComment(token); 281 insertComment(token); 282 return; 279 283 case HTMLToken::Character: 280 284 if (isTreeBuilderWhiteSpace(cc)) 281 return 0;285 return; 282 286 break; 283 287 case HTMLToken::StartTag: … … 285 289 notImplemented(); 286 290 setInsertionMode(BeforeHeadMode); 287 return 0;291 return; 288 292 } 289 293 break; … … 292 296 break; 293 297 parseError(token); 294 return 0;298 return; 295 299 case HTMLToken::EndOfFile: 296 300 break; … … 307 311 case HTMLToken::Character: 308 312 if (isTreeBuilderWhiteSpace(cc)) 309 return 0;313 return; 310 314 break; 311 315 case HTMLToken::Comment: 312 return insertComment(token); 316 insertComment(token); 317 return; 313 318 case HTMLToken::DOCTYPE: 314 319 parseError(token); 315 return 0;320 return; 316 321 case HTMLToken::StartTag: 317 322 if (token.name() == htmlTag) { 318 323 notImplemented(); 319 return 0;324 return; 320 325 } 321 326 if (token.name() == headTag) { 322 327 m_headElement = insertElement(token); 323 328 setInsertionMode(InHeadMode); 324 return m_headElement;329 return; 325 330 } 326 331 break; … … 332 337 } 333 338 parseError(token); 334 return 0;339 return; 335 340 case HTMLToken::EndOfFile: 336 341 break; … … 347 352 case HTMLToken::Character: 348 353 insertCharacter(cc); 349 break;354 return; 350 355 case HTMLToken::Comment: 351 return insertComment(token); 356 insertComment(token); 357 return; 352 358 case HTMLToken::DOCTYPE: 353 359 parseError(token); 354 return 0;360 return; 355 361 case HTMLToken::StartTag: 356 362 if (token.name() == htmlTag) { 357 363 notImplemented(); 358 return 0;364 return; 359 365 } 360 366 // FIXME: Atomize "command". 361 367 if (token.name() == baseTag || token.name() == "command" || token.name() == linkTag) { 362 PassRefPtr<Node> node =insertElement(token);368 insertElement(token); 363 369 m_openElements.pop(); 364 370 notImplemented(); 365 return node;366 371 } 367 372 if (token.name() == metaTag) { 368 PassRefPtr<Node> node =insertElement(token);373 insertElement(token); 369 374 m_openElements.pop(); 370 375 notImplemented(); 371 return node; 372 } 373 if (token.name() == titleTag) 374 return insertGenericRCDATAElement(token); 376 } 377 if (token.name() == titleTag) { 378 insertGenericRCDATAElement(token); 379 return; 380 } 375 381 if (token.name() == noscriptTag) { 376 if (isScriptingFlagEnabled(m_document->frame())) 377 return insertGenericRawTextElement(token); 378 PassRefPtr<Node> node = insertElement(token); 382 if (isScriptingFlagEnabled(m_document->frame())) { 383 insertGenericRawTextElement(token); 384 return; 385 } 386 insertElement(token); 379 387 setInsertionMode(InHeadNoscriptMode); 380 return node; 381 } 382 if (token.name() == noframesTag || token.name() == styleTag) 383 return insertGenericRawTextElement(token); 384 if (token.name() == scriptTag) 385 return insertScriptElement(token); 388 } 389 if (token.name() == noframesTag || token.name() == styleTag) { 390 insertGenericRawTextElement(token); 391 return; 392 } 393 if (token.name() == scriptTag) { 394 insertScriptElement(token); 395 return; 396 } 386 397 if (token.name() == headTag) { 387 398 notImplemented(); 388 return 0;399 return; 389 400 } 390 401 break; … … 394 405 m_openElements.pop(); 395 406 setInsertionMode(AfterHeadMode); 396 return 0;407 return; 397 408 } 398 409 if (token.name() == bodyTag || token.name() == htmlTag || token.name() == brTag) 399 410 break; 400 411 parseError(token); 401 return 0;412 return; 402 413 break; 403 414 case HTMLToken::EndOfFile: … … 415 426 case HTMLToken::DOCTYPE: 416 427 parseError(token); 417 return 0;428 return; 418 429 case HTMLToken::StartTag: 419 430 if (token.name() == htmlTag) { 420 431 notImplemented(); 421 return 0;432 return; 422 433 } 423 434 if (token.name() == linkTag || token.name() == metaTag || token.name() == noframesTag || token.name() == styleTag) { 424 435 notImplemented(); 425 return 0;436 return; 426 437 } 427 438 if (token.name() == htmlTag || token.name() == noscriptTag) { 428 439 parseError(token); 429 return 0;440 return; 430 441 } 431 442 break; … … 436 447 ASSERT(m_openElements.top()->tagQName() == headTag); 437 448 setInsertionMode(InHeadMode); 438 return 0;449 return; 439 450 } 440 451 if (token.name() == brTag) 441 452 break; 442 453 parseError(token); 443 return 0;454 return; 444 455 case HTMLToken::Character: 445 456 notImplemented(); … … 447 458 case HTMLToken::Comment: 448 459 notImplemented(); 449 return 0;460 return; 450 461 case HTMLToken::EndOfFile: 451 462 break; … … 463 474 if (isTreeBuilderWhiteSpace(cc)) { 464 475 insertCharacter(cc); 465 return 0;476 return; 466 477 } 467 478 break; 468 479 case HTMLToken::Comment: 469 return insertComment(token); 480 insertComment(token); 481 return; 470 482 case HTMLToken::DOCTYPE: 471 483 parseError(token); 472 return 0;484 return; 473 485 case HTMLToken::StartTag: 474 486 if (token.name() == htmlTag) { 475 487 notImplemented(); 476 return 0;488 return; 477 489 } 478 490 if (token.name() == bodyTag) { 479 491 m_framesetOk = false; 480 return insertElement(token); 492 insertElement(token); 493 return; 481 494 } 482 495 if (token.name() == framesetTag) { 483 PassRefPtr<Node> node =insertElement(token);496 insertElement(token); 484 497 setInsertionMode(InFramesetMode); 485 return node;498 return; 486 499 } 487 500 if (token.name() == baseTag || token.name() == linkTag || token.name() == metaTag || token.name() == noframesTag || token.name() == scriptTag || token.name() == styleTag || token.name() == titleTag) { … … 491 504 notImplemented(); 492 505 m_openElements.remove(m_headElement.get()); 506 return; 493 507 } 494 508 if (token.name() == headTag) { 495 509 parseError(token); 496 return 0;510 return; 497 511 } 498 512 break; … … 501 515 break; 502 516 parseError(token); 503 return 0;517 return; 504 518 case HTMLToken::EndOfFile: 505 519 break; … … 527 541 case AfterAfterBodyMode: 528 542 case AfterAfterFramesetMode: 543 notImplemented(); 529 544 ASSERT_NOT_REACHED(); 530 545 } 531 532 // Implementation coming in the next patch. 533 return 0; 534 } 535 536 PassRefPtr<Node> HTMLTreeBuilder::insertDoctype(AtomicHTMLToken& token) 546 ASSERT_NOT_REACHED(); 547 } 548 549 void HTMLTreeBuilder::insertDoctype(AtomicHTMLToken& token) 537 550 { 538 551 ASSERT_UNUSED(token, token.type() == HTMLToken::DOCTYPE); 539 return 0; 540 } 541 542 PassRefPtr<Node> HTMLTreeBuilder::insertComment(AtomicHTMLToken& token) 552 } 553 554 void HTMLTreeBuilder::insertComment(AtomicHTMLToken& token) 543 555 { 544 556 ASSERT_UNUSED(token, token.type() == HTMLToken::Comment); 545 return 0;546 557 } 547 558 … … 557 568 } 558 569 559 PassRefPtr<Node>HTMLTreeBuilder::insertGenericRCDATAElement(AtomicHTMLToken& token)570 void HTMLTreeBuilder::insertGenericRCDATAElement(AtomicHTMLToken& token) 560 571 { 561 572 ASSERT_UNUSED(token, token.type() == HTMLToken::StartTag); 562 return 0; 563 } 564 565 PassRefPtr<Node> HTMLTreeBuilder::insertGenericRawTextElement(AtomicHTMLToken& token) 573 } 574 575 void HTMLTreeBuilder::insertGenericRawTextElement(AtomicHTMLToken& token) 566 576 { 567 577 ASSERT_UNUSED(token, token.type() == HTMLToken::StartTag); 568 return 0; 569 } 570 571 PassRefPtr<Node> HTMLTreeBuilder::insertScriptElement(AtomicHTMLToken& token) 578 } 579 580 void HTMLTreeBuilder::insertScriptElement(AtomicHTMLToken& token) 572 581 { 573 582 ASSERT_UNUSED(token, token.type() == HTMLToken::StartTag); 574 return 0;575 583 } 576 584 -
trunk/WebCore/html/HTMLTreeBuilder.h
r61825 r61914 58 58 59 59 // The token really should be passed as a const& since it's never modified. 60 PassRefPtr<Node>constructTreeFromToken(HTMLToken&);60 void constructTreeFromToken(HTMLToken&); 61 61 // Must be called when parser is paused before calling the parser again. 62 62 PassRefPtr<Element> takeScriptToProcess(int& scriptStartLine); … … 108 108 }; 109 109 110 PassRefPtr<Node>passTokenToLegacyParser(HTMLToken&);111 PassRefPtr<Node>processToken(AtomicHTMLToken&, UChar cc = 0);110 void passTokenToLegacyParser(HTMLToken&); 111 void processToken(AtomicHTMLToken&, UChar cc = 0); 112 112 113 PassRefPtr<Node>insertDoctype(AtomicHTMLToken&);114 PassRefPtr<Node>insertComment(AtomicHTMLToken&);113 void insertDoctype(AtomicHTMLToken&); 114 void insertComment(AtomicHTMLToken&); 115 115 PassRefPtr<Element> insertElement(AtomicHTMLToken&); 116 116 void insertCharacter(UChar cc); 117 PassRefPtr<Node>insertGenericRCDATAElement(AtomicHTMLToken&);118 PassRefPtr<Node>insertGenericRawTextElement(AtomicHTMLToken&);119 PassRefPtr<Node>insertScriptElement(AtomicHTMLToken&);117 void insertGenericRCDATAElement(AtomicHTMLToken&); 118 void insertGenericRawTextElement(AtomicHTMLToken&); 119 void insertScriptElement(AtomicHTMLToken&); 120 120 121 121 RefPtr<Element> m_headElement;
Note: See TracChangeset
for help on using the changeset viewer.