Changeset 62370 in webkit


Ignore:
Timestamp:
Jul 2, 2010 1:29:43 AM (14 years ago)
Author:
abarth@webkit.org
Message:

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

Reviewed by Eric Seidel.

Implement AfterBodyMode for HTML5 tree builder
https://bugs.webkit.org/show_bug.cgi?id=41500

Update expected results to show test progression. Also, add some test
cases to cover how attributes on </br> tags are handled.

  • html5lib/resources/webkit01.dat:
  • html5lib/runner-expected-html5.txt:
  • html5lib/runner-expected.txt:
  • html5lib/webkit-resumer-expected.txt:

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

Reviewed by Eric Seidel.

Implement AfterBodyMode for HTML5 tree builder
https://bugs.webkit.org/show_bug.cgi?id=41500

In the coarse of implementing this state, I ran into an ASSERT in how
</br> tags where handled, which I fixed. Technically, that could be a
separate patch, but it seemed harmless to include it here (with tests).

  • html/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processStartTag): (WebCore::HTMLTreeBuilder::processEndTag): (WebCore::HTMLTreeBuilder::processComment): (WebCore::HTMLTreeBuilder::processCharacter): (WebCore::HTMLTreeBuilder::processEndOfFile): (WebCore::HTMLTreeBuilder::insertCommentOnHTMLHtmlElement):
  • html/HTMLTreeBuilder.h:
Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r62369 r62370  
     12010-07-02  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Implement AfterBodyMode for HTML5 tree builder
     6        https://bugs.webkit.org/show_bug.cgi?id=41500
     7
     8        Update expected results to show test progression.  Also, add some test
     9        cases to cover how attributes on </br> tags are handled.
     10
     11        * html5lib/resources/webkit01.dat:
     12        * html5lib/runner-expected-html5.txt:
     13        * html5lib/runner-expected.txt:
     14        * html5lib/webkit-resumer-expected.txt:
     15
    1162010-07-02  Adam Barth  <abarth@webkit.org>
    217
  • trunk/LayoutTests/html5lib/resources/webkit01.dat

    r62166 r62370  
    229229|     foo="bar"
    230230|     yo="mama"
     231
     232#data
     233<body></br foo="bar"></body>
     234#errors
     235#document
     236| <html>
     237|   <head>
     238|   <body>
     239|     <br>
     240
     241#data
     242<bdy><br foo="bar"></body>
     243#errors
     244#document
     245| <html>
     246|   <head>
     247|   <body>
     248|     <bdy>
     249|       <br>
     250|         foo="bar"
     251
     252#data
     253<body></body></br foo="bar">
     254#errors
     255#document
     256| <html>
     257|   <head>
     258|   <body>
     259|     <br>
     260
     261#data
     262<bdy></body><br foo="bar">
     263#errors
     264#document
     265| <html>
     266|   <head>
     267|   <body>
     268|     <bdy>
     269|       <br>
     270|         foo="bar"
  • trunk/LayoutTests/html5lib/runner-expected-html5.txt

    r62369 r62370  
    474789
    484890
    49 92
    504993
    515094
     
    368367|             "do"
    369368|         "you"
    370 |         <!-- do -->
     369|   <!-- do -->
    371370Expected:
    372371| <!DOCTYPE html>
     
    11571156|       <a>
    11581157
    1159 Test 92 of 113 in resources/tests1.dat failed. Input:
    1160 <head></html><meta><p>
    1161 Got:
    1162 | <html>
    1163 |   <head>
    1164 |   <body>
    1165 Expected:
    1166 | <html>
    1167 |   <head>
    1168 |   <body>
    1169 |     <meta>
    1170 |     <p>
    1171 
    11721158Test 93 of 113 in resources/tests1.dat failed. Input:
    11731159<b><table><td><i></table>
     
    15071493|   <head>
    15081494|   <body>
     1495|     <br>
    15091496Expected:
    15101497| <html>
     
    1552153948
    1553154049
    1554 51
    1555154153
    1556154254
    1557 55
    1558154358
    15591544
     
    17411726|   <head>
    17421727|   <body>
     1728|     "X"
     1729|     "X"
    17431730|     "X"
    17441731Expected:
     
    19361923|   <body>
    19371924
    1938 Test 51 of 59 in resources/tests2.dat failed. Input:
    1939 <!DOCTYPE html>X</body><html id="x">
    1940 Got:
    1941 | <!DOCTYPE html>
    1942 | <html>
    1943 |   <head>
    1944 |   <body>
    1945 |     "X"
    1946 Expected:
    1947 | <!DOCTYPE html>
    1948 | <html>
    1949 |   id="x"
    1950 |   <head>
    1951 |   <body>
    1952 |     "X"
    1953 
    19541925Test 53 of 59 in resources/tests2.dat failed. Input:
    19551926<!DOCTYPE html>X</html>X
     
    19601931|   <body>
    19611932|     "X"
     1933|     "X"
     1934|     "X"
    19621935Expected:
    19631936| <!DOCTYPE html>
     
    19751948|   <body>
    19761949|     "X"
     1950|     " "
     1951|     " "
    19771952Expected:
    19781953| <!DOCTYPE html>
     
    19811956|   <body>
    19821957|     "X "
    1983 
    1984 Test 55 of 59 in resources/tests2.dat failed. Input:
    1985 <!DOCTYPE html>X</html><p>X
    1986 Got:
    1987 | <!DOCTYPE html>
    1988 | <html>
    1989 |   <head>
    1990 |   <body>
    1991 |     "X"
    1992 Expected:
    1993 | <!DOCTYPE html>
    1994 | <html>
    1995 |   <head>
    1996 |   <body>
    1997 |     "X"
    1998 |     <p>
    1999 |       "X"
    20001958
    20011959Test 58 of 59 in resources/tests2.dat failed. Input:
     
    38033761|   <head>
    38043762|   <body>
     3763|     <math>
     3764|       <mi>
     3765|         "foo"
     3766|       <mi>
     3767|         "bar"
     3768|       <p>
     3769|         "baz"
    38053770Expected:
    38063771| <!DOCTYPE html>
     
    42914256|   <head>
    42924257|   <body>
     4258|     <svg>
     4259|       <g>
     4260|         "foo"
     4261|       <g>
     4262|         "bar"
     4263|       <p>
     4264|         "baz"
    42934265Expected:
    42944266| <!DOCTYPE html>
     
    544054121
    544154132
    5442 4
    544354145
    5444 6
    544554157
    544654168
     
    55165486|             "X"
    55175487
    5518 Test 4 of 14 in resources/tests15.dat failed. Input:
    5519 <!doctype html></body><meta>
    5520 Got:
    5521 | <!DOCTYPE html>
    5522 | <html>
    5523 |   <head>
    5524 |   <body>
    5525 Expected:
    5526 | <!DOCTYPE html>
    5527 | <html>
    5528 |   <head>
    5529 |   <body>
    5530 |     <meta>
    5531 
    55325488Test 5 of 14 in resources/tests15.dat failed. Input:
    55335489<html></html><!-- foo -->
     
    55425498|   <body>
    55435499| <!--  foo  -->
    5544 
    5545 Test 6 of 14 in resources/tests15.dat failed. Input:
    5546 <!doctype html></body><title>X</title>
    5547 Got:
    5548 | <!DOCTYPE html>
    5549 | <html>
    5550 |   <head>
    5551 |   <body>
    5552 Expected:
    5553 | <!DOCTYPE html>
    5554 | <html>
    5555 |   <head>
    5556 |   <body>
    5557 |     <title>
    5558 |       "X"
    55595500
    55605501Test 7 of 14 in resources/tests15.dat failed. Input:
     
    5751569217
    57525693
    5753 Test 17 of 19 in resources/webkit01.dat failed. Input:
     5694Test 17 of 23 in resources/webkit01.dat failed. Input:
    57545695<A>test< /A>
    57555696Got:
  • trunk/LayoutTests/html5lib/runner-expected.txt

    r62237 r62370  
    46884688resources/webkit01.dat:
    4689468917
    4690 
    4691 Test 17 of 19 in resources/webkit01.dat failed. Input:
     469020
     469122
     4692
     4693Test 17 of 23 in resources/webkit01.dat failed. Input:
    46924694<A>test< /A>
    46934695Got:
     
    47044706|     <a>
    47054707|       "test< /A>"
     4708
     4709Test 20 of 23 in resources/webkit01.dat failed. Input:
     4710<body></br foo="bar"></body>
     4711Got:
     4712| <html>
     4713|   <head>
     4714|   <body>
     4715|     <br>
     4716|       foo="bar"
     4717Expected:
     4718| <html>
     4719|   <head>
     4720|   <body>
     4721|     <br>
     4722
     4723Test 22 of 23 in resources/webkit01.dat failed. Input:
     4724<body></body></br foo="bar">
     4725Got:
     4726| <html>
     4727|   <head>
     4728|   <body>
     4729|     <br>
     4730|       foo="bar"
     4731Expected:
     4732| <html>
     4733|   <head>
     4734|   <body>
     4735|     <br>
    47064736resources/doctype01.dat: PASS
    47074737
  • trunk/LayoutTests/html5lib/webkit-resumer-expected.txt

    r62233 r62370  
    169169602.10
    170170603.11
     171648.1
     172649.2
     173650.3
     174651.4
     175652.5
     176653.6
     177654.7
     178655.8
     179656.9
     180657.10
     181658.11
     182659.12
     183660.13
     184661.14
     185662.15
     186663.16
     187664.17
     188665.18
     189666.19
     190667.20
     191668.21
     192669.22
     193670.23
     194671.24
     195672.25
     196673.26
     197674.27
     198700.1
     199701.2
     200702.3
     201703.4
     202704.5
     203705.6
     204706.7
     205707.8
     206708.9
     207709.10
     208710.11
     209711.12
     210712.13
     211713.14
     212714.15
     213715.16
     214716.17
     215717.18
     216718.19
     217719.20
     218720.21
     219721.22
     220722.23
     221723.24
     222724.25
     223725.26
     224726.27
  • trunk/WebCore/ChangeLog

    r62369 r62370  
     12010-07-02  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Implement AfterBodyMode for HTML5 tree builder
     6        https://bugs.webkit.org/show_bug.cgi?id=41500
     7
     8        In the coarse of implementing this state, I ran into an ASSERT in how
     9        </br> tags where handled, which I fixed.  Technically, that could be a
     10        separate patch, but it seemed harmless to include it here (with tests).
     11
     12        * html/HTMLTreeBuilder.cpp:
     13        (WebCore::HTMLTreeBuilder::processStartTag):
     14        (WebCore::HTMLTreeBuilder::processEndTag):
     15        (WebCore::HTMLTreeBuilder::processComment):
     16        (WebCore::HTMLTreeBuilder::processCharacter):
     17        (WebCore::HTMLTreeBuilder::processEndOfFile):
     18        (WebCore::HTMLTreeBuilder::insertCommentOnHTMLHtmlElement):
     19        * html/HTMLTreeBuilder.h:
     20
    1212010-07-02  Adam Barth  <abarth@webkit.org>
    222
  • trunk/WebCore/html/HTMLTreeBuilder.cpp

    r62369 r62370  
    565565        insertElement(token);
    566566        break;
     567    case AfterBodyMode:
     568        ASSERT(insertionMode() == AfterBodyMode);
     569        if (token.name() == htmlTag) {
     570            insertHTMLStartTagInBody(token);
     571            return;
     572        }
     573        m_insertionMode = InBodyMode;
     574        processStartTag(token);
     575        break;
    567576    case InHeadNoscriptMode:
    568577        ASSERT(insertionMode() == InHeadNoscriptMode);
     
    750759            parseError(token);
    751760            reconstructTheActiveFormattingElements();
    752             insertSelfClosingElement(token);
     761            // Notice that we lose the attributes.
     762            AtomicHTMLToken startBr(HTMLToken::StartTag, token.name());
     763            insertSelfClosingElement(startBr);
    753764            m_framesetOk = false;
    754765            return;
     
    761772        m_openElements.popUntil(token.name());
    762773        m_openElements.pop();
     774        break;
     775    case AfterBodyMode:
     776        ASSERT(insertionMode() == AfterBodyMode);
     777        if (token.name() == htmlTag) {
     778            if (m_isParsingFragment) {
     779                parseError(token);
     780                return;
     781            }
     782            m_insertionMode = AfterAfterBodyMode;
     783            return;
     784        }
     785        m_insertionMode = InBodyMode;
     786        processEndTag(token);
    763787        break;
    764788    case InHeadNoscriptMode:
     
    802826        return;
    803827    }
     828    if (m_insertionMode == AfterBodyMode) {
     829        insertCommentOnHTMLHtmlElement(token);
     830        return;
     831    }
    804832    insertComment(token);
    805833}
     
    839867        insertTextNode(token);
    840868        break;
     869    case AfterBodyMode:
     870        ASSERT(insertionMode() == AfterBodyMode);
     871        m_insertionMode = InBodyMode;
     872        processCharacter(token);
    841873    case TextMode:
    842874        notImplemented();
     
    880912        notImplemented();
    881913        break;
     914    case AfterBodyMode:
     915        ASSERT(insertionMode() == AfterBodyMode);
     916        notImplemented();
     917        break;
    882918    case InHeadNoscriptMode:
    883919        ASSERT(insertionMode() == InHeadNoscriptMode);
     
    9891025    ASSERT(token.type() == HTMLToken::Comment);
    9901026    attach(m_document, Comment::create(m_document, token.comment()));
     1027}
     1028
     1029void HTMLTreeBuilder::insertCommentOnHTMLHtmlElement(AtomicHTMLToken& token)
     1030{
     1031    ASSERT(token.type() == HTMLToken::Comment);
     1032    attach(m_openElements.htmlElement(), Comment::create(m_document, token.comment()));
    9911033}
    9921034
  • trunk/WebCore/html/HTMLTreeBuilder.h

    r62235 r62370  
    143143    void insertComment(AtomicHTMLToken&);
    144144    void insertCommentOnDocument(AtomicHTMLToken&);
     145    void insertCommentOnHTMLHtmlElement(AtomicHTMLToken&);
    145146    void insertHTMLHtmlElement(AtomicHTMLToken&);
    146147    void insertHTMLHeadElement(AtomicHTMLToken&);
Note: See TracChangeset for help on using the changeset viewer.