Changeset 62519 in webkit


Ignore:
Timestamp:
Jul 5, 2010 9:58:14 PM (14 years ago)
Author:
abarth@webkit.org
Message:

2010-07-05 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

Implement InSelectMode
https://bugs.webkit.org/show_bug.cgi?id=41627

Massive test progression.

  • html5lib/runner-expected-html5.txt:

2010-07-05 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

Implement InSelectMode
https://bugs.webkit.org/show_bug.cgi?id=41627

  • html/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processStartTag): (WebCore::HTMLTreeBuilder::processEndTag): (WebCore::HTMLTreeBuilder::processCharacter): (WebCore::HTMLTreeBuilder::processEndOfFile):
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r62517 r62519  
     12010-07-05  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Implement InSelectMode
     6        https://bugs.webkit.org/show_bug.cgi?id=41627
     7
     8        Massive test progression.
     9
     10        * html5lib/runner-expected-html5.txt:
     11
    1122010-07-05  Yuzo Fujishima  <yuzo@google.com>
    213
  • trunk/LayoutTests/html5lib/runner-expected-html5.txt

    r62516 r62519  
    111125
    121228
    13 29
    141330
    151431
     
    504998
    5150100
    52 101
    5351103
    5452104
     
    203201|     <hr>
    204202|     <p>
    205 
    206 Test 29 of 113 in resources/tests1.dat failed. Input:
    207 <select><b><option><select><option></b></select>X
    208 Got:
    209 | <html>
    210 |   <head>
    211 |   <body>
    212 |     <select>
    213 Expected:
    214 | <html>
    215 |   <head>
    216 |   <body>
    217 |     <select>
    218 |       <option>
    219 |     <option>
    220 |       "X"
    221203
    222204Test 30 of 113 in resources/tests1.dat failed. Input:
     
    360342|       "C"
    361343|       <select>
     344|         "D"
     345|         "E"
    362346Expected:
    363347| <!DOCTYPE html>
     
    12511235|     <p>
    12521236
    1253 Test 101 of 113 in resources/tests1.dat failed. Input:
    1254 <select><b><option><select><option></b></select>
    1255 Got:
    1256 | <html>
    1257 |   <head>
    1258 |   <body>
    1259 |     <select>
    1260 Expected:
    1261 | <html>
    1262 |   <head>
    1263 |   <body>
    1264 |     <select>
    1265 |       <option>
    1266 |     <option>
    1267 
    12681237Test 103 of 113 in resources/tests1.dat failed. Input:
    12691238<a><table><td><a><table></table><a></tr><a></table><a>
     
    1482145132
    1483145234
    1484 35
    1485145336
    1486 37
    1487145438
    1488145542
    1489 46
    1490145647
    1491145748
     
    16331599|             "test"
    16341600
    1635 Test 35 of 59 in resources/tests2.dat failed. Input:
    1636 <!DOCTYPE html><select><option><optgroup>
    1637 Got:
    1638 | <!DOCTYPE html>
    1639 | <html>
    1640 |   <head>
    1641 |   <body>
    1642 |     <select>
    1643 Expected:
    1644 | <!DOCTYPE html>
    1645 | <html>
    1646 |   <head>
    1647 |   <body>
    1648 |     <select>
    1649 |       <option>
    1650 |       <optgroup>
    1651 
    16521601Test 36 of 59 in resources/tests2.dat failed. Input:
    16531602<!DOCTYPE html><select><optgroup><option></optgroup><option><select><option>
     
    16581607|   <body>
    16591608|     <select>
     1609|       <optgroup>
     1610|         <option>
     1611|         <option>
     1612|     <option>
    16601613Expected:
    16611614| <!DOCTYPE html>
     
    16681621|       <option>
    16691622|     <option>
    1670 
    1671 Test 37 of 59 in resources/tests2.dat failed. Input:
    1672 <!DOCTYPE html><select><optgroup><option><optgroup>
    1673 Got:
    1674 | <!DOCTYPE html>
    1675 | <html>
    1676 |   <head>
    1677 |   <body>
    1678 |     <select>
    1679 Expected:
    1680 | <!DOCTYPE html>
    1681 | <html>
    1682 |   <head>
    1683 |   <body>
    1684 |     <select>
    1685 |       <optgroup>
    1686 |         <option>
    1687 |       <optgroup>
    16881623
    16891624Test 38 of 59 in resources/tests2.dat failed. Input:
     
    17261661|           test="x"
    17271662|       <hr>
    1728 
    1729 Test 46 of 59 in resources/tests2.dat failed. Input:
    1730 <!DOCTYPE html><select><optgroup></optgroup></select>
    1731 Got:
    1732 | <!DOCTYPE html>
    1733 | <html>
    1734 |   <head>
    1735 |   <body>
    1736 |     <select>
    1737 Expected:
    1738 | <!DOCTYPE html>
    1739 | <html>
    1740 |   <head>
    1741 |   <body>
    1742 |     <select>
    1743 |       <optgroup>
    17441663
    17451664Test 47 of 59 in resources/tests2.dat failed. Input:
     
    249224119
    2493241210
    2494 13
    2495 14
    2496241315
    2497241416
     
    2500241719
    2501241820
    2502 21
    2503241924
    2504242025
     
    26362552|         " "
    26372553
    2638 Test 13 of 30 in resources/tests7.dat failed. Input:
    2639 <!doctype html><select><input>X
    2640 Got:
    2641 | <!DOCTYPE html>
    2642 | <html>
    2643 |   <head>
    2644 |   <body>
    2645 |     <select>
    2646 Expected:
    2647 | <!DOCTYPE html>
    2648 | <html>
    2649 |   <head>
    2650 |   <body>
    2651 |     <select>
    2652 |     <input>
    2653 |     "X"
    2654 
    2655 Test 14 of 30 in resources/tests7.dat failed. Input:
    2656 <!doctype html><select><select>X
    2657 Got:
    2658 | <!DOCTYPE html>
    2659 | <html>
    2660 |   <head>
    2661 |   <body>
    2662 |     <select>
    2663 Expected:
    2664 | <!DOCTYPE html>
    2665 | <html>
    2666 |   <head>
    2667 |   <body>
    2668 |     <select>
    2669 |     "X"
    2670 
    26712554Test 15 of 30 in resources/tests7.dat failed. Input:
    26722555<!doctype html><table><input type=hidDEN></table>
     
    27792662|       <tbody>
    27802663|         <tr>
    2781 
    2782 Test 21 of 30 in resources/tests7.dat failed. Input:
    2783 <!doctype html><select>X</select>
    2784 Got:
    2785 | <!DOCTYPE html>
    2786 | <html>
    2787 |   <head>
    2788 |   <body>
    2789 |     <select>
    2790 Expected:
    2791 | <!DOCTYPE html>
    2792 | <html>
    2793 |   <head>
    2794 |   <body>
    2795 |     <select>
    2796 |       "X"
    27972664
    27982665Test 24 of 30 in resources/tests7.dat failed. Input:
     
    29152782|   <body>
    29162783|     <select>
     2784|     <keygen>
     2785|       <option>
     2786|         "2048 (High Grade)"
     2787|       <option>
     2788|         "1024 (Medium Grade)"
     2789|       <option>
     2790|         "512 (Low Grade)"
    29172791Expected:
    29182792| <html>
     
    311529891
    311629902
    3117 4
    311829915
    311929926
     
    31663039|     <math math>
    31673040
    3168 Test 4 of 25 in resources/tests9.dat failed. Input:
    3169 <!DOCTYPE html><body><select><option><math></math></option></select>
    3170 Got:
    3171 | <!DOCTYPE html>
    3172 | <html>
    3173 |   <head>
    3174 |   <body>
    3175 |     <select>
    3176 Expected:
    3177 | <!DOCTYPE html>
    3178 | <html>
    3179 |   <head>
    3180 |   <body>
    3181 |     <select>
    3182 |       <option>
    3183 
    31843041Test 5 of 25 in resources/tests9.dat failed. Input:
    31853042<!DOCTYPE html><body><table><math></math></table>
     
    363534921
    363634932
    3637 4
    363834945
    363934956
     
    36853541|   <body>
    36863542|     <svg svg>
    3687 
    3688 Test 4 of 25 in resources/tests10.dat failed. Input:
    3689 <!DOCTYPE html><body><select><option><svg></svg></option></select>
    3690 Got:
    3691 | <!DOCTYPE html>
    3692 | <html>
    3693 |   <head>
    3694 |   <body>
    3695 |     <select>
    3696 Expected:
    3697 | <!DOCTYPE html>
    3698 | <html>
    3699 |   <head>
    3700 |   <body>
    3701 |     <select>
    3702 |       <option>
    37033543
    37043544Test 5 of 25 in resources/tests10.dat failed. Input:
     
    54695309resources/webkit01.dat:
    5470531017
    5471 31
    54725311
    54735312Test 17 of 31 in resources/webkit01.dat failed. Input:
     
    54865325|     <a>
    54875326|       "test< /A>"
    5488 
    5489 Test 31 of 31 in resources/webkit01.dat failed. Input:
    5490 <select><option>A<select><option>B<select><option>C<select><option>D<select><option>E<select><option>F<select><option>G<select>
    5491 Got:
    5492 | <html>
    5493 |   <head>
    5494 |   <body>
    5495 |     <select>
    5496 Expected:
    5497 | <html>
    5498 |   <head>
    5499 |   <body>
    5500 |     <select>
    5501 |       <option>
    5502 |         "A"
    5503 |     <option>
    5504 |       "B"
    5505 |       <select>
    5506 |         <option>
    5507 |           "C"
    5508 |     <option>
    5509 |       "D"
    5510 |       <select>
    5511 |         <option>
    5512 |           "E"
    5513 |     <option>
    5514 |       "F"
    5515 |       <select>
    5516 |         <option>
    5517 |           "G"
    55185327resources/doctype01.dat: PASS
    55195328
  • trunk/WebCore/ChangeLog

    r62514 r62519  
     12010-07-05  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Implement InSelectMode
     6        https://bugs.webkit.org/show_bug.cgi?id=41627
     7
     8        * html/HTMLTreeBuilder.cpp:
     9        (WebCore::HTMLTreeBuilder::processStartTag):
     10        (WebCore::HTMLTreeBuilder::processEndTag):
     11        (WebCore::HTMLTreeBuilder::processCharacter):
     12        (WebCore::HTMLTreeBuilder::processEndOfFile):
     13
    1142010-07-05  Fady Samuel  <fsamuel@chromium.org>
    215
  • trunk/WebCore/html/HTMLTreeBuilder.cpp

    r62509 r62519  
    900900        parseError(token);
    901901        break;
     902    case InSelectMode:
     903        ASSERT(insertionMode() == InSelectMode);
     904        if (token.name() == htmlTag) {
     905            insertHTMLStartTagInBody(token);
     906            return;
     907        }
     908        if (token.name() == optionTag) {
     909            if (currentElement()->hasTagName(optionTag)) {
     910                AtomicHTMLToken endOption(HTMLToken::EndTag, optionTag.localName());
     911                processEndTag(endOption);
     912            }
     913            insertElement(token);
     914            return;
     915        }
     916        if (token.name() == optgroupTag) {
     917            if (currentElement()->hasTagName(optionTag)) {
     918                AtomicHTMLToken endOption(HTMLToken::EndTag, optionTag.localName());
     919                processEndTag(endOption);
     920            }
     921            if (currentElement()->hasTagName(optgroupTag)) {
     922                AtomicHTMLToken endOptgroup(HTMLToken::EndTag, optgroupTag.localName());
     923                processEndTag(endOptgroup);
     924            }
     925            insertElement(token);
     926            return;
     927        }
     928        if (token.name() == selectTag) {
     929            parseError(token);
     930            AtomicHTMLToken endSelect(HTMLToken::EndTag, selectTag.localName());
     931            processEndTag(endSelect);
     932            return;
     933        }
     934        if (token.name() == inputTag || token.name() == keygenTag || token.name() == textareaTag) {
     935            parseError(token);
     936            notImplemented(); // fragment case
     937            AtomicHTMLToken endSelect(HTMLToken::EndTag, selectTag.localName());
     938            processEndTag(endSelect);
     939            processStartTag(token);
     940            return;
     941        }
     942        if (token.name() == scriptTag) {
     943            bool didProcess = processStartTagForInHead(token);
     944            ASSERT_UNUSED(didProcess, didProcess);
     945            return;
     946        }
     947        break;
    902948    default:
    903949        notImplemented();
     
    14171463        parseError(token);
    14181464        break;
     1465    case InSelectMode:
     1466        ASSERT(insertionMode() == InSelectMode);
     1467        if (token.name() == optgroupTag) {
     1468            if (currentElement()->hasTagName(optionTag))
     1469                notImplemented();
     1470            if (currentElement()->hasTagName(optgroupTag)) {
     1471                m_openElements.pop();
     1472                return;
     1473            }
     1474            parseError(token);
     1475            return;
     1476        }
     1477        if (token.name() == optionTag) {
     1478            if (currentElement()->hasTagName(optionTag)) {
     1479                m_openElements.pop();
     1480                return;
     1481            }
     1482            parseError(token);
     1483            return;
     1484        }
     1485        if (token.name() == selectTag) {
     1486            notImplemented(); // fragment case
     1487            m_openElements.popUntil(selectTag.localName());
     1488            m_openElements.pop();
     1489            resetInsertionModeAppropriately();
     1490            return;
     1491        }
     1492        break;
    14191493    default:
    14201494        notImplemented();
     
    14911565        parseError(token);
    14921566        break;
     1567    case InSelectMode:
     1568        ASSERT(insertionMode() == InSelectMode);
     1569        insertTextNode(token);
     1570        break;
    14931571    default:
    14941572        notImplemented();
     
    15421620        ASSERT(insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
    15431621        break;
     1622    case InSelectMode:
     1623        ASSERT(insertionMode() == InSelectMode);
     1624        if (currentElement() != m_openElements.htmlElement())
     1625            parseError(token);
     1626        break;
    15441627    default:
    15451628        notImplemented();
Note: See TracChangeset for help on using the changeset viewer.