Changeset 62573 in webkit


Ignore:
Timestamp:
Jul 6, 2010 11:33:36 AM (14 years ago)
Author:
abarth@webkit.org
Message:

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

Reviewed by Eric Seidel.

Implement InTableBodyMode
https://bugs.webkit.org/show_bug.cgi?id=41671

In the process of implementing this patch, Eric and I discussed some of
the high-level organization of the HTMLTreeBuilder class. We'd like to
split it up into smaller pieces. In the meantime, I've reordered some
of the declarations in the header to make the relations between the
different kinds of functions clearer.

  • html/HTMLElementStack.cpp:
  • html/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processIsindexStartTagForInBody): (WebCore::HTMLTreeBuilder::processStartTagForInBody): (WebCore::HTMLTreeBuilder::processStartTagForInTable): (WebCore::HTMLTreeBuilder::processStartTag): (WebCore::HTMLTreeBuilder::processEndTagForInTable): (WebCore::HTMLTreeBuilder::processEndTag): (WebCore::HTMLTreeBuilder::processCharacter): (WebCore::HTMLTreeBuilder::processEndOfFile):
  • html/HTMLTreeBuilder.h:

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

Reviewed by Eric Seidel.

Implement InTableBodyMode
https://bugs.webkit.org/show_bug.cgi?id=41671

  • html5lib/runner-expected-html5.txt:
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r62568 r62573  
     12010-07-06  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Implement InTableBodyMode
     6        https://bugs.webkit.org/show_bug.cgi?id=41671
     7
     8        * html5lib/runner-expected-html5.txt:
     9
    1102010-07-06  Varun Jain  <varunjain@chromium.org>
    211
  • trunk/LayoutTests/html5lib/runner-expected-html5.txt

    r62563 r62573  
     1CONSOLE MESSAGE: line 1: SyntaxError: Parse error
    12CONSOLE MESSAGE: line 1: SyntaxError: Parse error
    23CONSOLE MESSAGE: line 2: PASS
     
    45Content-Type: text/plain
    56resources/tests1.dat:
    6 21
    7730
    8832
     
    1717103
    1818104
    19 107
    2019109
    2120110
    2221112
    23 
    24 Test 21 of 113 in resources/tests1.dat failed. Input:
    25 <b><table><td></b><i></table>X
    26 Got:
    27 | <html>
    28 |   <head>
    29 |   <body>
    30 |     <b>
    31 |       <table>
    32 |         <tbody>
    33 |           <tr>
    34 |             <td>
    35 |               <i>
    36 Expected:
    37 | <html>
    38 |   <head>
    39 |   <body>
    40 |     <b>
    41 |       <table>
    42 |         <tbody>
    43 |           <tr>
    44 |             <td>
    45 |               <i>
    46 |       "X"
    4722
    4823Test 30 of 113 in resources/tests1.dat failed. Input:
     
    6035|                 <table>
    6136|               <a>
     37|           <a>
     38|       <a>
     39|         <b>
     40|           "X"
     41|         "C"
     42|       <a>
     43|         "Y"
    6244Expected:
    6345| <html>
     
    213195|           <tr>
    214196|             <td>
     197|           "x"
     198|     "aoe"
    215199Expected:
    216200| <html>
     
    250234|                 href="foo"
    251235|                 "br"
     236|           "x"
     237|       "aoe"
    252238Expected:
    253239| <html>
     
    282268|               href="foo"
    283269|               "br"
     270|         "x"
     271|     "aoe"
    284272Expected:
    285273| <html>
     
    370358|                 <table>
    371359|               <a>
     360|           <a>
     361|       <a>
    372362Expected:
    373363| <html>
     
    422412|       <li>
    423413
    424 Test 107 of 113 in resources/tests1.dat failed. Input:
    425 <h1><table><td><h3></table><h3></h1>
    426 Got:
    427 | <html>
    428 |   <head>
    429 |   <body>
    430 |     <h1>
    431 |       <table>
    432 |         <tbody>
    433 |           <tr>
    434 |             <td>
    435 |               <h3>
    436 Expected:
    437 | <html>
    438 |   <head>
    439 |   <body>
    440 |     <h1>
    441 |       <table>
    442 |         <tbody>
    443 |           <tr>
    444 |             <td>
    445 |               <h3>
    446 |     <h3>
    447 
    448414Test 109 of 113 in resources/tests1.dat failed. Input:
    449415<table><col><tbody><col><tr><col><td><col></table><col>
     
    456422|         <col>
    457423|       <tbody>
    458 |         <tr>
     424|       <colgroup>
     425|         <col>
     426|       <tbody>
     427|         <tr>
     428|       <colgroup>
     429|         <col>
     430|       <tbody>
    459431|         <tr>
    460432|           <td>
     
    488460|       <colgroup>
    489461|       <tbody>
    490 |         <tr>
     462|       <colgroup>
     463|       <tbody>
     464|         <tr>
     465|       <colgroup>
     466|       <tbody>
    491467|         <tr>
    492468|           <td>
     
    516492|       <tbody>
    517493|         <tr>
     494|     <p>
    518495Expected:
    519496| <html>
     
    119011677
    119111688
    1192 10
    1193116915
    1194117016
     
    12961272|   <body>
    12971273
    1298 Test 10 of 30 in resources/tests7.dat failed. Input:
    1299 <!doctype html><table><TBODY><script> <tr>x </script> </table>
    1300 Got:
    1301 | <!DOCTYPE html>
    1302 | <html>
    1303 |   <head>
    1304 |   <body>
    1305 |     <table>
    1306 |       <tbody>
    1307 |         <tr>
    1308 |           "x  "
    1309 Expected:
    1310 | <!DOCTYPE html>
    1311 | <html>
    1312 |   <head>
    1313 |   <body>
    1314 |     <table>
    1315 |       <tbody>
    1316 |         <script>
    1317 |           " <tr>x "
    1318 |         " "
    1319 
    13201274Test 15 of 30 in resources/tests7.dat failed. Input:
    13211275<!doctype html><table><input type=hidDEN></table>
     
    14551409|           <td>
    14561410|             "aaa"
     1411|         "bbb"
     1412|     "ccc"
    14571413Expected:
    14581414| <html>
     
    14811437|         <tr>
    14821438|           " B"
     1439|         " B"
    14831440Expected:
    14841441| <html>
     
    15011458|         <tr>
    15021459|           " B"
     1460|         " C"
    15031461Expected:
    15041462| <html>
     
    1693165114
    1694165215
    1695 16
    1696165317
    1697165418
     
    18041761|     <table>
    18051762|       <tbody>
     1763|         <math>
     1764|           <mi>
     1765|             "foo"
     1766|           <mi>
     1767|             "bar"
    18061768Expected:
    18071769| <!DOCTYPE html>
     
    20392001|     <table>
    20402002|       <colgroup>
    2041 |     <p>
    2042 |       "quux"
    2043 
    2044 Test 16 of 25 in resources/tests9.dat failed. Input:
    2045 <!DOCTYPE html><body><table><tr><td><select><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux
    2046 Got:
    2047 | <!DOCTYPE html>
    2048 | <html>
    2049 |   <head>
    2050 |   <body>
    2051 |     <table>
    2052 |       <tbody>
    2053 |         <tr>
    2054 |           <td>
    2055 |             <select>
    2056 |               "foobarbaz"
    2057 Expected:
    2058 | <!DOCTYPE html>
    2059 | <html>
    2060 |   <head>
    2061 |   <body>
    2062 |     <table>
    2063 |       <tbody>
    2064 |         <tr>
    2065 |           <td>
    2066 |             <select>
    2067 |               "foobarbaz"
    20682003|     <p>
    20692004|       "quux"
     
    2255219014
    2256219115
    2257 16
    2258219217
    2259219318
     
    23662300|     <table>
    23672301|       <tbody>
     2302|         <svg>
     2303|           <g>
     2304|             "foo"
     2305|           <g>
     2306|             "bar"
    23682307Expected:
    23692308| <!DOCTYPE html>
     
    26012540|     <table>
    26022541|       <colgroup>
    2603 |     <p>
    2604 |       "quux"
    2605 
    2606 Test 16 of 25 in resources/tests10.dat failed. Input:
    2607 <!DOCTYPE html><body><table><tr><td><select><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
    2608 Got:
    2609 | <!DOCTYPE html>
    2610 | <html>
    2611 |   <head>
    2612 |   <body>
    2613 |     <table>
    2614 |       <tbody>
    2615 |         <tr>
    2616 |           <td>
    2617 |             <select>
    2618 |               "foobarbaz"
    2619 Expected:
    2620 | <!DOCTYPE html>
    2621 | <html>
    2622 |   <head>
    2623 |   <body>
    2624 |     <table>
    2625 |       <tbody>
    2626 |         <tr>
    2627 |           <td>
    2628 |             <select>
    2629 |               "foobarbaz"
    26302542|     <p>
    26312543|       "quux"
     
    37653677|             <td>
    37663678|               <img>
     3679|       <g>
     3680|         "quux"
     3681|       "bar"
    37673682Expected:
    37683683| <!DOCTYPE html>
     
    38203735|                       <td>
    38213736|                         <img>
     3737|                 <g>
     3738|                   "quux"
     3739|                 "bar"
    38223740Expected:
    38233741| <!DOCTYPE html>
     
    421741359
    4218413610
    4219 12
    4220 13
    42214137
    42224138Test 4 of 14 in resources/tables01.dat failed. Input:
     
    43134229|           <td>
    43144230|             "B"
    4315 
    4316 Test 12 of 14 in resources/tables01.dat failed. Input:
    4317 <table><td>A</table>B
    4318 Got:
    4319 | <html>
    4320 |   <head>
    4321 |   <body>
    4322 |     <table>
    4323 |       <tbody>
    4324 |         <tr>
    4325 |           <td>
    4326 |             "A"
    4327 Expected:
    4328 | <html>
    4329 |   <head>
    4330 |   <body>
    4331 |     <table>
    4332 |       <tbody>
    4333 |         <tr>
    4334 |           <td>
    4335 |             "A"
    4336 |     "B"
    4337 
    4338 Test 13 of 14 in resources/tables01.dat failed. Input:
    4339 <table><tr><caption>
    4340 Got:
    4341 | <html>
    4342 |   <head>
    4343 |   <body>
    4344 |     <table>
    4345 |       <tbody>
    4346 |         <tr>
    4347 Expected:
    4348 | <html>
    4349 |   <head>
    4350 |   <body>
    4351 |     <table>
    4352 |       <tbody>
    4353 |         <tr>
    4354 |       <caption>
    43554231#EOF
  • trunk/WebCore/ChangeLog

    r62571 r62573  
     12010-07-06  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Implement InTableBodyMode
     6        https://bugs.webkit.org/show_bug.cgi?id=41671
     7
     8        In the process of implementing this patch, Eric and I discussed some of
     9        the high-level organization of the HTMLTreeBuilder class.  We'd like to
     10        split it up into smaller pieces.  In the meantime, I've reordered some
     11        of the declarations in the header to make the relations between the
     12        different kinds of functions clearer.
     13
     14        * html/HTMLElementStack.cpp:
     15        * html/HTMLTreeBuilder.cpp:
     16        (WebCore::HTMLTreeBuilder::processIsindexStartTagForInBody):
     17        (WebCore::HTMLTreeBuilder::processStartTagForInBody):
     18        (WebCore::HTMLTreeBuilder::processStartTagForInTable):
     19        (WebCore::HTMLTreeBuilder::processStartTag):
     20        (WebCore::HTMLTreeBuilder::processEndTagForInTable):
     21        (WebCore::HTMLTreeBuilder::processEndTag):
     22        (WebCore::HTMLTreeBuilder::processCharacter):
     23        (WebCore::HTMLTreeBuilder::processEndOfFile):
     24        * html/HTMLTreeBuilder.h:
     25
    1262010-07-06  Leandro Pereira  <leandro@profusion.mobi>
    227
  • trunk/WebCore/html/HTMLElementStack.cpp

    r62563 r62573  
    6363        || element->hasTagName(ulTag);
    6464}
     65
    6566inline bool isTableScopeMarker(Element* element)
    6667{
  • trunk/WebCore/html/HTMLTreeBuilder.cpp

    r62563 r62573  
    494494}
    495495
    496 void HTMLTreeBuilder::processIsindexStartTagForBody(AtomicHTMLToken& token)
    497 {
     496void HTMLTreeBuilder::processIsindexStartTagForInBody(AtomicHTMLToken& token)
     497{
     498    ASSERT(token.type() == HTMLToken::StartTag);
     499    ASSERT(token.name() == isindexTag);
    498500    parseError(token);
    499501    if (m_formElement)
     
    667669    }
    668670    if (token.name() == isindexTag) {
    669         processIsindexStartTagForBody(token);
     671        processIsindexStartTagForInBody(token);
    670672        return;
    671673    }
     
    769771    processFakeEndTag(thTag);
    770772    ASSERT(insertionMode() == InRowMode);
     773}
     774
     775void HTMLTreeBuilder::processStartTagForInTable(AtomicHTMLToken& token)
     776{
     777    ASSERT(token.type() == HTMLToken::StartTag);
     778    if (token.name() == captionTag) {
     779        m_openElements.popUntilTableScopeMarker();
     780        m_activeFormattingElements.appendMarker();
     781        insertElement(token);
     782        m_insertionMode = InCaptionMode;
     783        return;
     784    }
     785    if (token.name() == colgroupTag) {
     786        m_openElements.popUntilTableScopeMarker();
     787        insertElement(token);
     788        m_insertionMode = InColumnGroupMode;
     789        return;
     790    }
     791    if (token.name() == colTag) {
     792        processFakeStartTag(colgroupTag);
     793        ASSERT(InColumnGroupMode);
     794        processStartTag(token);
     795        return;
     796    }
     797    if (isTableBodyContextTag(token.name())) {
     798        m_openElements.popUntilTableScopeMarker();
     799        insertElement(token);
     800        m_insertionMode = InTableBodyMode;
     801        return;
     802    }
     803    if (token.name() == tdTag || token.name() == thTag || token.name() == trTag) {
     804        processFakeStartTag(tbodyTag);
     805        ASSERT(insertionMode() == InTableBodyMode);
     806        processStartTag(token);
     807        return;
     808    }
     809    if (token.name() == tableTag) {
     810        notImplemented();
     811        return;
     812    }
     813    if (token.name() == styleTag || token.name() == scriptTag) {
     814        processStartTagForInHead(token);
     815        return;
     816    }
     817    if (token.name() == inputTag) {
     818        notImplemented();
     819        return;
     820    }
     821    if (token.name() == formTag) {
     822        parseError(token);
     823        if (m_formElement)
     824            return;
     825        insertSelfClosingElement(token);
     826        return;
     827    }
     828    parseError(token);
     829    if (currentElement()->hasTagName(tableTag) || isTableBodyContextTag(currentElement()->localName()) || currentElement()->hasTagName(trTag))
     830        notImplemented(); // "whenever a node would be inserted into the current node, it must instead be foster parented."
     831    processStartTagForInBody(token);
    771832}
    772833
     
    844905    case InTableMode:
    845906        ASSERT(insertionMode() == InTableMode);
    846         if (token.name() == captionTag) {
    847             m_openElements.popUntilTableScopeMarker();
    848             m_activeFormattingElements.appendMarker();
    849             insertElement(token);
    850             m_insertionMode = InCaptionMode;
    851             return;
    852         }
    853         if (token.name() == colgroupTag) {
    854             m_openElements.popUntilTableScopeMarker();
    855             insertElement(token);
    856             m_insertionMode = InColumnGroupMode;
    857             return;
    858         }
    859         if (token.name() == colTag) {
    860             processFakeStartTag(colgroupTag);
    861             ASSERT(InColumnGroupMode);
    862             processStartTag(token);
    863             return;
    864         }
    865         if (isTableBodyContextTag(token.name())) {
    866             m_openElements.popUntilTableScopeMarker();
    867             insertElement(token);
    868             m_insertionMode = InTableBodyMode;
    869             return;
    870         }
    871         if (token.name() == tdTag || token.name() == thTag || token.name() == trTag) {
    872             processFakeStartTag(tbodyTag);
    873             ASSERT(insertionMode() == InTableBodyMode);
    874             processStartTag(token);
    875             return;
    876         }
    877         if (token.name() == tableTag) {
    878             notImplemented();
    879             return;
    880         }
    881         if (token.name() == styleTag || token.name() == scriptTag) {
    882             processStartTagForInHead(token);
    883             return;
    884         }
    885         if (token.name() == inputTag) {
    886             notImplemented();
    887             return;
    888         }
    889         if (token.name() == formTag) {
    890             parseError(token);
    891             if (m_formElement)
    892                 return;
    893             insertSelfClosingElement(token);
    894             return;
    895         }
    896         parseError(token);
    897         if (currentElement()->hasTagName(tableTag) || isTableBodyContextTag(currentElement()->localName()) || currentElement()->hasTagName(trTag))
    898             notImplemented(); // "whenever a node would be inserted into the current node, it must instead be foster parented."
    899         processStartTagForInBody(token);
     907        processStartTagForInTable(token);
    900908        break;
    901909    case InCaptionMode:
     
    944952        }
    945953        if (token.name() == captionTag || token.name() == colTag || token.name() == colgroupTag || isTableBodyContextTag(token.name())) {
    946             notImplemented();
    947             return;
    948         }
    949         notImplemented(); // process using "in table" rules
     954            // FIXME: This is slow.
     955            if (!m_openElements.inTableScope(tbodyTag.localName()) && !m_openElements.inTableScope(theadTag.localName()) && !m_openElements.inTableScope(tfootTag.localName())) {
     956                ASSERT(m_isParsingFragment);
     957                parseError(token);
     958                return;
     959            }
     960            m_openElements.popUntilTableBodyScopeMarker();
     961            ASSERT(currentElement()->tagQName() == tbodyTag || currentElement()->tagQName() == tfootTag || currentElement()->tagQName() == theadTag);
     962            processFakeEndTag(currentElement()->tagQName());
     963            processStartTag(token);
     964            return;
     965        }
     966        processStartTagForInTable(token);
    950967        break;
    951968    case InRowMode:
     
    15221539}
    15231540
     1541void HTMLTreeBuilder::processEndTagForInTable(AtomicHTMLToken& token)
     1542{
     1543    ASSERT(token.type() == HTMLToken::EndTag);
     1544    if (token.name() == tableTag) {
     1545        if (!m_openElements.inTableScope(token.name())) {
     1546            ASSERT(m_isParsingFragment);
     1547            parseError(token);
     1548            return;
     1549        }
     1550        m_openElements.popUntil(tableTag.localName());
     1551        m_openElements.pop();
     1552        resetInsertionModeAppropriately();
     1553        return;
     1554    }
     1555    if (token.name() == bodyTag || token.name() == captionTag || token.name() == colTag || token.name() == colgroupTag || token.name() == htmlTag || token.name() == tbodyTag || token.name() == tdTag || token.name() == tfootTag || token.name() == thTag || token.name() == theadTag || token.name() == trTag) {
     1556        parseError(token);
     1557        return;
     1558    }
     1559    // FIXME: Do we need to worry about "whenever a node would be inserted into the current node, it must instead be foster parented"?
     1560    processEndTagForInBody(token);
     1561}
     1562
    15241563void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
    15251564{
     
    15731612    case InTableMode:
    15741613        ASSERT(insertionMode() == InTableMode);
    1575         if (token.name() == tableTag) {
    1576             if (!m_openElements.inTableScope(token.name())) {
    1577                 ASSERT(m_isParsingFragment);
    1578                 parseError(token);
    1579                 return;
    1580             }
    1581             m_openElements.popUntil(tableTag.localName());
    1582             m_openElements.pop();
    1583             resetInsertionModeAppropriately();
    1584             return;
    1585         }
    1586         if (token.name() == bodyTag || token.name() == captionTag || token.name() == colTag || token.name() == colgroupTag || token.name() == htmlTag || token.name() == tbodyTag || token.name() == tdTag || token.name() == tfootTag || token.name() == thTag || token.name() == theadTag || token.name() == trTag) {
    1587             parseError(token);
    1588             return;
    1589         }
    1590         // FIXME: Do we need to worry about "whenever a node would be inserted into the current node, it must instead be foster parented"?
    1591         processEndTagForInBody(token);
     1614        processEndTagForInTable(token);
    15921615        break;
    15931616    case InCaptionMode:
     
    16941717        processEndTagForInBody(token);
    16951718        break;
     1719    case InTableBodyMode:
     1720        ASSERT(insertionMode() == InTableBodyMode);
     1721        if (token.name() == tbodyTag || token.name() == tfootTag || token.name() == theadTag) {
     1722            if (!m_openElements.inTableScope(token.name())) {
     1723                parseError(token);
     1724                return;
     1725            }
     1726            m_openElements.popUntilTableBodyScopeMarker();
     1727            m_openElements.pop();
     1728            m_insertionMode = InTableMode;
     1729            return;
     1730        }
     1731        if (token.name() == tableTag) {
     1732            // FIXME: This is slow.
     1733            if (!m_openElements.inTableScope(tbodyTag.localName()) && !m_openElements.inTableScope(theadTag.localName()) && !m_openElements.inTableScope(tfootTag.localName())) {
     1734                ASSERT(m_isParsingFragment);
     1735                parseError(token);
     1736                return;
     1737            }
     1738            m_openElements.popUntilTableBodyScopeMarker();
     1739            ASSERT(currentElement()->tagQName() == tbodyTag || currentElement()->tagQName() == tfootTag || currentElement()->tagQName() == theadTag);
     1740            processFakeEndTag(currentElement()->tagQName());
     1741            processEndTag(token);
     1742            return;
     1743        }
     1744        if (token.name() == bodyTag || token.name() == captionTag || token.name() == colTag || token.name() == colgroupTag || token.name() == htmlTag || token.name() == tdTag || token.name() == thTag || token.name() == trTag) {
     1745            parseError(token);
     1746            return;
     1747        }
     1748        processEndTagForInTable(token);
     1749        break;
    16961750    case AfterBodyMode:
    16971751        ASSERT(insertionMode() == AfterBodyMode);
     
    18611915        break;
    18621916    case InTableMode:
     1917    case InTableBodyMode:
    18631918    case InRowMode:
    1864         ASSERT(insertionMode() == InTableMode || insertionMode() == InRowMode);
     1919        ASSERT(insertionMode() == InTableMode || insertionMode() == InTableBodyMode || insertionMode() == InRowMode);
    18651920        notImplemented(); // Crazy pending characters.
    18661921        insertTextNode(token);
     
    19472002    case InFramesetMode:
    19482003    case InTableMode:
     2004    case InTableBodyMode:
    19492005    case InSelectInTableMode:
    19502006    case InSelectMode:
    1951         ASSERT(insertionMode() == InSelectMode || insertionMode() == InSelectInTableMode || insertionMode() == InTableMode || insertionMode() == InFramesetMode);
     2007        ASSERT(insertionMode() == InSelectMode || insertionMode() == InSelectInTableMode || insertionMode() == InTableMode || insertionMode() == InFramesetMode || insertionMode() == InTableBodyMode);
    19522008        if (currentElement() != m_openElements.htmlElement())
    19532009            parseError(token);
  • trunk/WebCore/html/HTMLTreeBuilder.h

    r62563 r62573  
    105105    void passTokenToLegacyParser(HTMLToken&);
    106106
    107     // Specialized functions for processing the different types of tokens.
    108107    void processToken(AtomicHTMLToken&);
     108
    109109    void processDoctypeToken(AtomicHTMLToken&);
    110110    void processStartTag(AtomicHTMLToken&);
     
    114114    void processEndOfFile(AtomicHTMLToken&);
    115115
     116    bool processStartTagForInHead(AtomicHTMLToken&);
     117    void processStartTagForInBody(AtomicHTMLToken&);
     118    void processStartTagForInTable(AtomicHTMLToken&);
     119    void processEndTagForInBody(AtomicHTMLToken&);
     120    void processEndTagForInTable(AtomicHTMLToken&);
     121
     122    void processIsindexStartTagForInBody(AtomicHTMLToken&);
     123    bool processBodyEndTagForInBody(AtomicHTMLToken&);
     124    bool processCaptionEndTagForInCaption();
     125    bool processColgroupEndTagForInColumnGroup();
     126    bool processTrEndTagForInRow();
     127    // FIXME: This function should be inlined into its one call site or it
     128    // needs to assert which tokens it can be called with.
     129    void processAnyOtherEndTagForInBody(AtomicHTMLToken&);
     130
     131    void processFakeStartTag(const QualifiedName&, PassRefPtr<NamedNodeMap> attributes = 0);
     132    void processFakeEndTag(const QualifiedName&);
     133    void processFakeCharacters(const String&);
     134    void processFakePEndTagIfPInScope();
     135
    116136    // Default processing for the different insertion modes.
     137    // FIXME: These functions need to be renamed to remove "process" from their names.
    117138    void processDefaultForInitialMode(AtomicHTMLToken&);
    118139    void processDefaultForBeforeHTMLMode(AtomicHTMLToken&);
     
    122143    void processDefaultForAfterHeadMode(AtomicHTMLToken&);
    123144
    124     bool processStartTagForInHead(AtomicHTMLToken&);
    125     void processStartTagForInBody(AtomicHTMLToken&);
    126     void processEndTagForInBody(AtomicHTMLToken&);
    127145    PassRefPtr<NamedNodeMap> attributesForIsindexInput(AtomicHTMLToken&);
    128     void processIsindexStartTagForBody(AtomicHTMLToken&);
    129     bool processBodyEndTagForInBody(AtomicHTMLToken&);
    130     bool processCaptionEndTagForInCaption();
    131     bool processColgroupEndTagForInColumnGroup();
    132     bool processTrEndTagForInRow();
    133     void processAnyOtherEndTagForInBody(AtomicHTMLToken&);
    134 
    135     void processFakeStartTag(const QualifiedName&, PassRefPtr<NamedNodeMap> attributes = 0);
    136     void processFakeEndTag(const QualifiedName&);
    137     void processFakeCharacters(const String&);
    138     void processFakePEndTagIfPInScope();
    139146
    140147    HTMLElementStack::ElementRecord* furthestBlockForFormattingElement(Element*);
Note: See TracChangeset for help on using the changeset viewer.