2010-07-03 Adam Barth <abarth@webkit.org>
authorabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 4 Jul 2010 05:09:51 +0000 (05:09 +0000)
committerabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 4 Jul 2010 05:09:51 +0000 (05:09 +0000)
        Reviewed by Maciej Stachowiak.

        Implement AfterAfterFramesetMode
        https://bugs.webkit.org/show_bug.cgi?id=41561

        Test coverage of this mode was a bit ... lacking, shall we say?  This
        patch adds a test for it.

        * html5lib/resources/webkit01.dat:
        * html5lib/runner-expected-html5.txt:
        * html5lib/runner-expected.txt:
        * html5lib/webkit-resumer-expected.txt:
2010-07-03  Adam Barth  <abarth@webkit.org>

        Reviewed by Maciej Stachowiak.

        Implement AfterAfterFramesetMode
        https://bugs.webkit.org/show_bug.cgi?id=41561

        This mode is almost unobservable.  The main way to observe it seems to
        be seeing where comment nodes get attached to the DOM.

        * html/HTMLTreeBuilder.cpp:
        (WebCore::HTMLTreeBuilder::processStartTag):
        (WebCore::HTMLTreeBuilder::processEndTag):
        (WebCore::HTMLTreeBuilder::processComment):
        (WebCore::HTMLTreeBuilder::processCharacter):
        (WebCore::HTMLTreeBuilder::processEndOfFile):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@62460 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/html5lib/resources/webkit01.dat
LayoutTests/html5lib/runner-expected-html5.txt
LayoutTests/html5lib/runner-expected.txt
LayoutTests/html5lib/webkit-resumer-expected.txt
WebCore/ChangeLog
WebCore/html/HTMLTreeBuilder.cpp

index d132c77..3cf522b 100644 (file)
@@ -1,3 +1,18 @@
+2010-07-03  Adam Barth  <abarth@webkit.org>
+
+        Reviewed by Maciej Stachowiak.
+
+        Implement AfterAfterFramesetMode
+        https://bugs.webkit.org/show_bug.cgi?id=41561
+
+        Test coverage of this mode was a bit ... lacking, shall we say?  This
+        patch adds a test for it.
+
+        * html5lib/resources/webkit01.dat:
+        * html5lib/runner-expected-html5.txt:
+        * html5lib/runner-expected.txt:
+        * html5lib/webkit-resumer-expected.txt:
+
 2010-07-03  Zhenyao Mo  <zmo@google.com>
 
         Reviewed by Dimitri Glazkov.
index 36c7907..01e45ff 100644 (file)
@@ -333,3 +333,23 @@ console.log("FOO<span>BAR</span>BAZ");
 |       <div>
 |       <rt>
 |         "xx"
+
+#data
+<html><frameset><!--1--><noframes>A</noframes><!--2--></frameset><!--3--><noframes>B</noframes><!--4--></html><!--5--><noframes>C</noframes><!--6-->
+#errors
+#document
+| <html>
+|   <head>
+|   <frameset>
+|     <!-- 1 -->
+|     <noframes>
+|       "A"
+|     <!-- 2 -->
+|   <!-- 3 -->
+|   <noframes>
+|     "B"
+|   <!-- 4 -->
+|   <noframes>
+|     "C"
+| <!-- 5 -->
+| <!-- 6 -->
index 0d82945..fac285f 100644 (file)
@@ -5437,7 +5437,7 @@ Expected:
 resources/webkit01.dat:
 17
 
-Test 17 of 29 in resources/webkit01.dat failed. Input:
+Test 17 of 30 in resources/webkit01.dat failed. Input:
 <A>test< /A>
 Got:
 | <html>
index 30197ed..97a2ceb 100644 (file)
@@ -4694,8 +4694,9 @@ resources/webkit01.dat:
 27
 28
 29
+30
 
-Test 17 of 29 in resources/webkit01.dat failed. Input:
+Test 17 of 30 in resources/webkit01.dat failed. Input:
 <A>test< /A>
 Got:
 | <html>
@@ -4711,7 +4712,7 @@ Expected:
 |     <a>
 |       "test< /A>"
 
-Test 20 of 29 in resources/webkit01.dat failed. Input:
+Test 20 of 30 in resources/webkit01.dat failed. Input:
 <body></br foo="bar"></body>
 Got:
 | <html>
@@ -4725,7 +4726,7 @@ Expected:
 |   <body>
 |     <br>
 
-Test 22 of 29 in resources/webkit01.dat failed. Input:
+Test 22 of 30 in resources/webkit01.dat failed. Input:
 <body></body></br foo="bar">
 Got:
 | <html>
@@ -4739,7 +4740,7 @@ Expected:
 |   <body>
 |     <br>
 
-Test 24 of 29 in resources/webkit01.dat failed. Input:
+Test 24 of 30 in resources/webkit01.dat failed. Input:
 <html><body></body></html><!-- Hi there -->
 Got:
 | <html>
@@ -4752,7 +4753,7 @@ Expected:
 |   <body>
 | <!--  Hi there  -->
 
-Test 26 of 29 in resources/webkit01.dat failed. Input:
+Test 26 of 30 in resources/webkit01.dat failed. Input:
 <html><body></body></html>x<!-- Hi there --></html><!-- Again -->
 Got:
 | <html>
@@ -4769,7 +4770,7 @@ Expected:
 |     <!--  Hi there  -->
 | <!--  Again  -->
 
-Test 27 of 29 in resources/webkit01.dat failed. Input:
+Test 27 of 30 in resources/webkit01.dat failed. Input:
 <html><body></body></html>x<!-- Hi there --></body></html><!-- Again -->
 Got:
 | <html>
@@ -4786,7 +4787,7 @@ Expected:
 |     <!--  Hi there  -->
 | <!--  Again  -->
 
-Test 28 of 29 in resources/webkit01.dat failed. Input:
+Test 28 of 30 in resources/webkit01.dat failed. Input:
 <html><body><ruby><div><rp>xx</rp></div></ruby></body></html>
 Got:
 | <html>
@@ -4805,7 +4806,7 @@ Expected:
 |       <rp>
 |         "xx"
 
-Test 29 of 29 in resources/webkit01.dat failed. Input:
+Test 29 of 30 in resources/webkit01.dat failed. Input:
 <html><body><ruby><div><rt>xx</rt></div></ruby></body></html>
 Got:
 | <html>
@@ -4823,6 +4824,36 @@ Expected:
 |       <div>
 |       <rt>
 |         "xx"
+
+Test 30 of 30 in resources/webkit01.dat failed. Input:
+<html><frameset><!--1--><noframes>A</noframes><!--2--></frameset><!--3--><noframes>B</noframes><!--4--></html><!--5--><noframes>C</noframes><!--6-->
+Got:
+| <html>
+|   <frameset>
+|     <!-- 1 -->
+|     <!-- 2 -->
+|   <!-- 3 -->
+|   <noframes>
+|   <!-- 4 -->
+|   <!-- 5 -->
+|   <noframes>
+|   <!-- 6 -->
+Expected:
+| <html>
+|   <head>
+|   <frameset>
+|     <!-- 1 -->
+|     <noframes>
+|       "A"
+|     <!-- 2 -->
+|   <!-- 3 -->
+|   <noframes>
+|     "B"
+|   <!-- 4 -->
+|   <noframes>
+|     "C"
+| <!-- 5 -->
+| <!-- 6 -->
 resources/doctype01.dat: PASS
 
 resources/scriptdata01.dat: PASS
index 4c1089b..e533b2d 100644 (file)
@@ -519,3 +519,150 @@ resources/webkit01.dat:
 1089.58
 1090.59
 1091.60
+1092.1
+1093.2
+1094.3
+1095.4
+1096.5
+1097.6
+1098.7
+1099.8
+1100.9
+1101.10
+1102.11
+1103.12
+1104.13
+1105.14
+1106.15
+1107.16
+1108.17
+1109.18
+1110.19
+1111.20
+1112.21
+1113.22
+1114.23
+1115.24
+1116.25
+1117.26
+1118.27
+1119.28
+1120.29
+1121.30
+1122.31
+1123.32
+1124.33
+1125.34
+1126.35
+1127.36
+1128.37
+1129.38
+1130.39
+1131.40
+1132.41
+1133.42
+1134.43
+1135.44
+1136.45
+1137.46
+1138.47
+1139.48
+1140.49
+1141.50
+1142.51
+1143.52
+1144.53
+1145.54
+1146.55
+1147.56
+1148.57
+1149.58
+1150.59
+1151.60
+1152.61
+1153.62
+1154.63
+1155.64
+1156.65
+1157.66
+1158.67
+1159.68
+1160.69
+1161.70
+1162.71
+1163.72
+1164.73
+1165.74
+1166.75
+1167.76
+1168.77
+1169.78
+1170.79
+1171.80
+1172.81
+1173.82
+1174.83
+1175.84
+1176.85
+1177.86
+1178.87
+1179.88
+1180.89
+1181.90
+1182.91
+1183.92
+1184.93
+1185.94
+1186.95
+1187.96
+1188.97
+1189.98
+1190.99
+1191.100
+1192.101
+1193.102
+1194.103
+1195.104
+1196.105
+1197.106
+1198.107
+1199.108
+1200.109
+1201.110
+1202.111
+1203.112
+1204.113
+1205.114
+1206.115
+1207.116
+1208.117
+1209.118
+1210.119
+1211.120
+1212.121
+1213.122
+1214.123
+1215.124
+1216.125
+1217.126
+1218.127
+1219.128
+1220.129
+1221.130
+1222.131
+1223.132
+1224.133
+1225.134
+1226.135
+1227.136
+1228.137
+1229.138
+1230.139
+1231.140
+1232.141
+1233.142
+1234.143
+1235.144
+1236.145
+1237.146
+1238.147
index 544e4fc..c2fb261 100644 (file)
@@ -1,3 +1,20 @@
+2010-07-03  Adam Barth  <abarth@webkit.org>
+
+        Reviewed by Maciej Stachowiak.
+
+        Implement AfterAfterFramesetMode
+        https://bugs.webkit.org/show_bug.cgi?id=41561
+
+        This mode is almost unobservable.  The main way to observe it seems to
+        be seeing where comment nodes get attached to the DOM.
+
+        * html/HTMLTreeBuilder.cpp:
+        (WebCore::HTMLTreeBuilder::processStartTag):
+        (WebCore::HTMLTreeBuilder::processEndTag):
+        (WebCore::HTMLTreeBuilder::processComment):
+        (WebCore::HTMLTreeBuilder::processCharacter):
+        (WebCore::HTMLTreeBuilder::processEndOfFile):
+
 2010-07-03  Zhenyao Mo  <zmo@google.com>
 
         Reviewed by Dimitri Glazkov.
index 9606156..24556c1 100644 (file)
@@ -645,7 +645,8 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
         parseError(token);
         break;
     case AfterFramesetMode:
-        ASSERT(insertionMode() == AfterFramesetMode);
+    case AfterAfterFramesetMode:
+        ASSERT(insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
         if (token.name() == htmlTag) {
             insertHTMLStartTagInBody(token);
             return;
@@ -902,6 +903,9 @@ void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
             m_insertionMode = AfterAfterFramesetMode;
             return;
         }
+        // Fall through.
+    case AfterAfterFramesetMode:
+        ASSERT(insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
         parseError(token);
         break;
     default:
@@ -911,7 +915,7 @@ void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token)
 
 void HTMLTreeBuilder::processComment(AtomicHTMLToken& token)
 {
-    if (m_insertionMode == InitialMode || m_insertionMode == BeforeHTMLMode || m_insertionMode == AfterAfterBodyMode) {
+    if (m_insertionMode == InitialMode || m_insertionMode == BeforeHTMLMode || m_insertionMode == AfterAfterBodyMode || m_insertionMode == AfterAfterFramesetMode) {
         insertCommentOnDocument(token);
         return;
     }
@@ -974,7 +978,8 @@ void HTMLTreeBuilder::processCharacter(AtomicHTMLToken& token)
         break;
     case InFramesetMode:
     case AfterFramesetMode:
-        ASSERT(insertionMode() == InFramesetMode || insertionMode() == AfterFramesetMode);
+    case AfterAfterFramesetMode:
+        ASSERT(insertionMode() == InFramesetMode || insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
         parseError(token);
         break;
     default:
@@ -1025,7 +1030,8 @@ void HTMLTreeBuilder::processEndOfFile(AtomicHTMLToken& token)
             parseError(token);
         break;
     case AfterFramesetMode:
-        ASSERT(insertionMode() == AfterFramesetMode);
+    case AfterAfterFramesetMode:
+        ASSERT(insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
         break;
     default:
         notImplemented();