Changeset 62914 in webkit
- Timestamp:
- Jul 9, 2010 1:11:28 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r62912 r62914 1 2010-07-09 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Implementing pending table characters 6 https://bugs.webkit.org/show_bug.cgi?id=41916 7 8 This doesn't quite fix all the tests, but it fixes a bunch of them. 9 10 * html5lib/runner-expected-html5.txt: 11 1 12 2010-07-08 Adam Barth <abarth@webkit.org> 2 13 -
trunk/LayoutTests/html5lib/runner-expected-html5.txt
r62912 r62914 65 65 | <div> 66 66 | "hello" 67 | "excite!" 67 68 | <b> 68 69 | "me!" 69 70 | <table> 70 | "excite!"71 71 | <tbody> 72 72 | <tr> … … 153 153 | href="foo" 154 154 | "br" 155 | "x" 155 156 | <table> 156 157 | <tbody> 157 158 | <tr> 158 159 | <td> 159 | "x"160 160 | "aoe" 161 161 Expected: … … 189 189 | href="blah" 190 190 | "aba" 191 | "x" 191 192 | <table> 192 193 | <tbody> … … 196 197 | href="foo" 197 198 | "br" 198 | "x"199 199 | "aoe" 200 200 Expected: … … 223 223 | href="blah" 224 224 | "aba" 225 | "x" 225 226 | <table> 226 227 | <tbody> … … 230 231 | href="foo" 231 232 | "br" 232 | "x"233 233 | "aoe" 234 234 Expected: … … 283 283 | <a> 284 284 | <a> 285 resources/tests2.dat: 286 13 287 288 Test 13 of 59 in resources/tests2.dat failed. Input: 289 <!DOCTYPE html><table><tr>TEST 290 Got: 291 | <!DOCTYPE html> 292 | <html> 293 | <head> 294 | <body> 295 | <table> 296 | <tbody> 297 | <tr> 298 | "TEST" 299 Expected: 300 | <!DOCTYPE html> 301 | <html> 302 | <head> 303 | <body> 304 | "TEST" 305 | <table> 306 | <tbody> 307 | <tr> 285 resources/tests2.dat: PASS 286 308 287 resources/tests3.dat: 309 288 16 … … 413 392 414 393 resources/tests6.dat: 415 26416 394 27 417 395 30 … … 421 399 47 422 400 423 Test 26 of 51 in resources/tests6.dat failed. Input:424 <table><colgroup>foo425 Got:426 | <html>427 | <head>428 | <body>429 | <table>430 | <colgroup>431 | "foo"432 Expected:433 | <html>434 | <head>435 | <body>436 | "foo"437 | <table>438 | <colgroup>439 440 401 Test 27 of 51 in resources/tests6.dat failed. Input: 441 402 foo<col> … … 493 454 | <body> 494 455 resources/tests7.dat: 495 6496 16497 456 24 498 457 27 … … 501 460 30 502 461 503 Test 6 of 30 in resources/tests7.dat failed. Input:504 <!doctype html><table>X<tr><td><table> <meta></table></table>505 Got:506 | <!DOCTYPE html>507 | <html>508 | <head>509 | <body>510 | <table>511 | "X"512 | <tbody>513 | <tr>514 | <td>515 | <meta>516 | <table>517 | " "518 Expected:519 | <!DOCTYPE html>520 | <html>521 | <head>522 | <body>523 | "X"524 | <table>525 | <tbody>526 | <tr>527 | <td>528 | <meta>529 | <table>530 | " "531 532 Test 16 of 30 in resources/tests7.dat failed. Input:533 <!doctype html><table>X<input type=hidDEN></table>534 Got:535 | <!DOCTYPE html>536 | <html>537 | <head>538 | <body>539 | <table>540 | "X"541 | <input>542 | type="hidDEN"543 Expected:544 | <!DOCTYPE html>545 | <html>546 | <head>547 | <body>548 | "X"549 | <table>550 | <input>551 | type="hidDEN"552 553 462 Test 24 of 30 in resources/tests7.dat failed. Input: 554 463 <body>X</body></body> … … 567 476 | <body> 568 477 | <b> 478 | "bbb" 569 479 | <table> 570 480 | <tbody> … … 572 482 | <td> 573 483 | "aaa" 574 | "bbb"575 484 | "ccc" 576 485 Expected: … … 596 505 | <body> 597 506 | "A" 507 | " B" 508 | " B" 598 509 | <table> 599 510 | <tbody> 600 511 | <tr> 601 | " B"602 | " B"603 512 Expected: 604 513 | <html> … … 617 526 | <body> 618 527 | "A" 528 | " B" 619 529 | <table> 620 530 | <tbody> 621 531 | <tr> 622 | " B"623 532 | " C" 624 533 Expected: … … 654 563 resources/tests8.dat: 655 564 6 656 7657 565 658 566 Test 6 of 9 in resources/tests8.dat failed. Input: … … 663 571 | <body> 664 572 | "x" 665 | <table>666 | "x"573 | "x" 574 | <table> 667 575 Expected: 668 576 | <html> … … 670 578 | <body> 671 579 | "xx" 672 | <table>673 674 Test 7 of 9 in resources/tests8.dat failed. Input:675 x<table><table>x676 Got:677 | <html>678 | <head>679 | <body>680 | "x"681 | <table>682 | <table>683 | "x"684 Expected:685 | <html>686 | <head>687 | <body>688 | "x"689 | <table>690 | "x"691 580 | <table> 692 581 resources/tests9.dat: … … 2780 2669 resources/tests14.dat: PASS 2781 2670 2782 resources/tests15.dat: 2783 7 2784 8 2785 9 2786 10 2787 11 2788 2789 Test 7 of 14 in resources/tests15.dat failed. Input: 2790 <!doctype html><table> X<meta></table> 2791 Got: 2792 | <!DOCTYPE html> 2793 | <html> 2794 | <head> 2795 | <body> 2796 | <meta> 2797 | <table> 2798 | " X" 2799 Expected: 2800 | <!DOCTYPE html> 2801 | <html> 2802 | <head> 2803 | <body> 2804 | " X" 2805 | <meta> 2806 | <table> 2807 2808 Test 8 of 14 in resources/tests15.dat failed. Input: 2809 <!doctype html><table> x</table> 2810 Got: 2811 | <!DOCTYPE html> 2812 | <html> 2813 | <head> 2814 | <body> 2815 | <table> 2816 | " x" 2817 Expected: 2818 | <!DOCTYPE html> 2819 | <html> 2820 | <head> 2821 | <body> 2822 | " x" 2823 | <table> 2824 2825 Test 9 of 14 in resources/tests15.dat failed. Input: 2826 <!doctype html><table> x </table> 2827 Got: 2828 | <!DOCTYPE html> 2829 | <html> 2830 | <head> 2831 | <body> 2832 | <table> 2833 | " x " 2834 Expected: 2835 | <!DOCTYPE html> 2836 | <html> 2837 | <head> 2838 | <body> 2839 | " x " 2840 | <table> 2841 2842 Test 10 of 14 in resources/tests15.dat failed. Input: 2843 <!doctype html><table><tr> x</table> 2844 Got: 2845 | <!DOCTYPE html> 2846 | <html> 2847 | <head> 2848 | <body> 2849 | <table> 2850 | <tbody> 2851 | <tr> 2852 | " x" 2853 Expected: 2854 | <!DOCTYPE html> 2855 | <html> 2856 | <head> 2857 | <body> 2858 | " x" 2859 | <table> 2860 | <tbody> 2861 | <tr> 2862 2863 Test 11 of 14 in resources/tests15.dat failed. Input: 2864 <!doctype html><table>X<style> <tr>x </style> </table> 2865 Got: 2866 | <!DOCTYPE html> 2867 | <html> 2868 | <head> 2869 | <body> 2870 | <table> 2871 | "X" 2872 | <style> 2873 | " <tr>x " 2874 | " " 2875 Expected: 2876 | <!DOCTYPE html> 2877 | <html> 2878 | <head> 2879 | <body> 2880 | "X" 2881 | <table> 2882 | <style> 2883 | " <tr>x " 2884 | " " 2671 resources/tests15.dat: PASS 2672 2885 2673 resources/tests16.dat: PASS 2886 2674 … … 2950 2738 resources/isindex.dat: PASS 2951 2739 2952 resources/tables01.dat: 2953 4 2954 2955 Test 4 of 15 in resources/tables01.dat failed. Input: 2956 <table><colgroup></html>foo 2957 Got: 2958 | <html> 2959 | <head> 2960 | <body> 2961 | <table> 2962 | <colgroup> 2963 | "foo" 2964 Expected: 2965 | <html> 2966 | <head> 2967 | <body> 2968 | "foo" 2969 | <table> 2970 | <colgroup> 2740 resources/tables01.dat: PASS 2971 2741 #EOF -
trunk/WebCore/ChangeLog
r62912 r62914 1 2010-07-09 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Implementing pending table characters 6 https://bugs.webkit.org/show_bug.cgi?id=41916 7 8 This turned out to not be as scary as I thought it would be. 9 10 * html/HTMLTreeBuilder.cpp: 11 (WebCore::HTMLTreeBuilder::processDoctypeToken): 12 (WebCore::HTMLTreeBuilder::processStartTag): 13 (WebCore::HTMLTreeBuilder::processEndTag): 14 (WebCore::HTMLTreeBuilder::processComment): 15 (WebCore::HTMLTreeBuilder::processCharacter): 16 (WebCore::HTMLTreeBuilder::processEndOfFile): 17 (WebCore::HTMLTreeBuilder::processDefaultForInTableTextMode): 18 * html/HTMLTreeBuilder.h: 19 1 20 2010-07-08 Adam Barth <abarth@webkit.org> 2 21 -
trunk/WebCore/html/HTMLTreeBuilder.cpp
r62912 r62914 108 108 m_current = m_end; 109 109 return String(start, m_current - start); 110 } 111 112 void giveRemainingTo(Vector<UChar>& recipient) 113 { 114 recipient.append(m_current, m_end - m_current); 115 m_current = m_end; 110 116 } 111 117 … … 532 538 { 533 539 ASSERT(token.type() == HTMLToken::DOCTYPE); 534 if ( insertionMode()== InitialMode) {540 if (m_insertionMode == InitialMode) { 535 541 m_tree.insertDoctype(token); 542 return; 543 } 544 if (m_insertionMode == InTableTextMode) { 545 processDefaultForInTableTextMode(token); 546 processDoctypeToken(token); 536 547 return; 537 548 } … … 1329 1340 } 1330 1341 break; 1342 case InTableTextMode: 1343 processDefaultForInTableTextMode(token); 1344 processStartTag(token); 1345 break; 1331 1346 case TextMode: 1332 case InTableTextMode:1333 1347 case InForeignContentMode: 1334 1348 notImplemented(); … … 2110 2124 break; 2111 2125 case InTableTextMode: 2126 processDefaultForInTableTextMode(token); 2127 processEndTag(token); 2128 break; 2112 2129 case InForeignContentMode: 2113 2130 notImplemented(); … … 2128 2145 if (m_insertionMode == AfterBodyMode) { 2129 2146 m_tree.insertCommentOnHTMLHtmlElement(token); 2147 return; 2148 } 2149 if (m_insertionMode == InTableTextMode) { 2150 processDefaultForInTableTextMode(token); 2151 processComment(token); 2130 2152 return; 2131 2153 } … … 2204 2226 case InRowMode: { 2205 2227 ASSERT(insertionMode() == InTableMode || insertionMode() == InTableBodyMode || insertionMode() == InRowMode); 2206 notImplemented(); // Crazy pending characters. 2207 m_tree.insertTextNode(buffer.takeRemaining()); 2208 break; 2228 ASSERT(m_pendingTableCharacters.isEmpty()); 2229 m_originalInsertionMode = m_insertionMode; 2230 m_insertionMode = InTableTextMode; 2231 // Fall through. 2209 2232 } 2210 2233 case InTableTextMode: { 2211 notImplemented(); // Crazy pending characters.2234 buffer.giveRemainingTo(m_pendingTableCharacters); 2212 2235 break; 2213 2236 } … … 2345 2368 processEndOfFile(token); 2346 2369 break; 2370 case InTableTextMode: 2371 processDefaultForInTableTextMode(token); 2372 processEndOfFile(token); 2373 break; 2347 2374 case TextMode: 2348 case InTableTextMode:2349 2375 case InCaptionMode: 2350 2376 case InRowMode: … … 2392 2418 processStartTag(startBody); 2393 2419 m_framesetOk = true; 2420 } 2421 2422 void HTMLTreeBuilder::processDefaultForInTableTextMode(AtomicHTMLToken& token) 2423 { 2424 String characters = String::adopt(m_pendingTableCharacters); 2425 if (hasNonWhitespace(characters)) { 2426 parseError(token); 2427 HTMLConstructionSite::RedirectToFosterParentGuard redirecter(m_tree, requiresRedirectToFosterParent(m_tree.currentElement())); 2428 m_tree.reconstructTheActiveFormattingElements(); 2429 m_tree.insertTextNode(characters); 2430 m_framesetOk = false; 2431 m_insertionMode = m_originalInsertionMode; 2432 return; 2433 } 2434 m_tree.insertTextNode(characters); 2435 m_insertionMode = m_originalInsertionMode; 2394 2436 } 2395 2437 -
trunk/WebCore/html/HTMLTreeBuilder.h
r62912 r62914 151 151 void processDefaultForInHeadNoscriptMode(AtomicHTMLToken&); 152 152 void processDefaultForAfterHeadMode(AtomicHTMLToken&); 153 void processDefaultForInTableTextMode(AtomicHTMLToken&); 153 154 154 155 PassRefPtr<NamedNodeMap> attributesForIsindexInput(AtomicHTMLToken&); … … 188 189 InsertionMode m_originalInsertionMode; 189 190 InsertionMode m_secondaryInsertionMode; 191 192 // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#pending-table-character-tokens 193 Vector<UChar> m_pendingTableCharacters; 190 194 191 195 // HTML5 spec requires that we be able to change the state of the tokenizer
Note: See TracChangeset
for help on using the changeset viewer.