Changeset 62532 in webkit
- Timestamp:
- Jul 6, 2010 12:35:17 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r62531 r62532 1 2010-07-06 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Implement defaut cases for InTableMode 6 https://bugs.webkit.org/show_bug.cgi?id=41656 7 8 * html5lib/runner-expected-html5.txt: 9 1 10 2010-07-05 Nikolas Zimmermann <nzimmermann@rim.com> 2 11 -
trunk/LayoutTests/html5lib/runner-expected-html5.txt
r62525 r62532 251 251 | "hello" 252 252 | <table> 253 | <font> 254 | <b> 253 255 | <tbody> 254 256 | <tr> … … 836 838 | "aba" 837 839 | <table> 840 | <a> 841 | <a> 842 | href="foo" 838 843 | <tbody> 839 844 | <tr> … … 896 901 | <body> 897 902 | <table> 903 | <a> 904 | href="blah" 898 905 | <tbody> 899 906 | <tr> … … 1008 1015 | <a> 1009 1016 | <table> 1017 | <a> 1018 | <a> 1010 1019 | <p> 1011 1020 | <a> 1012 | <a>1013 1021 | <div> 1014 1022 | <a> … … 1432 1440 | <body> 1433 1441 | <table> 1434 | <tbody> 1435 | <tr> 1436 | <td> 1442 | <plaintext> 1437 1443 Expected: 1438 1444 | <html> … … 2224 2230 | <body> 2225 2231 | <table> 2232 | <title> 2233 | "X" 2226 2234 Expected: 2227 2235 | <!DOCTYPE html> … … 2241 2249 | <body> 2242 2250 | <table> 2251 | <meta> 2243 2252 Expected: 2244 2253 | <!DOCTYPE html> … … 2441 2450 | <body> 2442 2451 | <table> 2452 | <select> 2453 | "X" 2443 2454 | <tbody> 2444 2455 | <tr> … … 2491 2502 | <body> 2492 2503 | <table> 2504 | <b> 2493 2505 | <tbody> 2494 2506 | <tr> … … 2671 2683 | <body> 2672 2684 | <table> 2685 | <div> 2686 | <div> 2673 2687 Expected: 2674 2688 | <html> … … 2816 2830 | <body> 2817 2831 | <table> 2832 | <math> 2818 2833 Expected: 2819 2834 | <!DOCTYPE html> … … 2832 2847 | <body> 2833 2848 | <table> 2849 | <math> 2850 | <mi> 2834 2851 Expected: 2835 2852 | <!DOCTYPE html> … … 2850 2867 | <body> 2851 2868 | <table> 2869 | <math> 2870 | <mi> 2871 | <mi> 2852 2872 Expected: 2853 2873 | <!DOCTYPE html> … … 3096 3116 | <body> 3097 3117 | <table> 3118 | <select> 3119 | "foobarbaz" 3098 3120 | <p> 3099 3121 | "quux" … … 3319 3341 | <body> 3320 3342 | <table> 3343 | <svg> 3321 3344 Expected: 3322 3345 | <!DOCTYPE html> … … 3335 3358 | <body> 3336 3359 | <table> 3360 | <svg> 3361 | <g> 3337 3362 Expected: 3338 3363 | <!DOCTYPE html> … … 3353 3378 | <body> 3354 3379 | <table> 3380 | <svg> 3381 | <g> 3382 | <g> 3355 3383 Expected: 3356 3384 | <!DOCTYPE html> … … 3599 3627 | <body> 3600 3628 | <table> 3629 | <select> 3630 | "foobarbaz" 3601 3631 | <p> 3602 3632 | "quux" … … 4902 4932 | <body> 4903 4933 | <table> 4934 | <meta> 4904 4935 Expected: 4905 4936 | <!DOCTYPE html> … … 4993 5024 | <div> 4994 5025 | <table> 5026 | <a> 4995 5027 | <tbody> 4996 5028 | <tr> … … 5014 5046 187 5015 5047 188 5016 1895017 5048 5018 5049 Test 187 of 189 in resources/tests16.dat failed. Input: … … 5058 5089 | <font> 5059 5090 | <span> 5060 5061 Test 189 of 189 in resources/tests16.dat failed. Input:5062 <!doctype html><form><table></form><form></table></form>5063 Got:5064 | <!DOCTYPE html>5065 | <html>5066 | <head>5067 | <body>5068 | <form>5069 | <table>5070 Expected:5071 | <!DOCTYPE html>5072 | <html>5073 | <head>5074 | <body>5075 | <form>5076 | <table>5077 | <form>5078 5091 resources/webkit01.dat: PASS 5079 5092 … … 5223 5236 | <head> 5224 5237 | <body> 5225 | <table> 5238 | <p> 5239 | <a> 5240 | <table> 5241 | <a> 5226 5242 Expected: 5227 5243 | <html> … … 5269 5285 | <body> 5270 5286 | <table> 5287 | <select> 5288 | <option> 5289 | "3" 5271 5290 Expected: 5272 5291 | <html> … … 5285 5304 | <body> 5286 5305 | <table> 5306 | <select> 5287 5307 Expected: 5288 5308 | <html> … … 5300 5320 | <body> 5301 5321 | <table> 5322 | <select> 5302 5323 Expected: 5303 5324 | <html> … … 5314 5335 | <body> 5315 5336 | <table> 5337 | <select> 5338 | <option> 5339 | "A" 5316 5340 | <tbody> 5317 5341 | <tr> -
trunk/WebCore/ChangeLog
r62531 r62532 1 2010-07-06 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Implement defaut cases for InTableMode 6 https://bugs.webkit.org/show_bug.cgi?id=41656 7 8 * html/HTMLTreeBuilder.cpp: 9 (WebCore::HTMLTreeBuilder::processStartTag): 10 (WebCore::HTMLTreeBuilder::processEndTagForInBody): 11 (WebCore::HTMLTreeBuilder::processEndTag): 12 * html/HTMLTreeBuilder.h: 13 1 14 2010-07-05 Nikolas Zimmermann <nzimmermann@rim.com> 2 15 -
trunk/WebCore/html/HTMLTreeBuilder.cpp
r62527 r62532 864 864 if (currentElement()->hasTagName(tableTag) || currentElement()->hasTagName(tbodyTag) || currentElement()->hasTagName(tfootTag) || currentElement()->hasTagName(theadTag) || currentElement()->hasTagName(trTag)) 865 865 notImplemented(); // "whenever a node would be inserted into the current node, it must instead be foster parented." 866 // FIXME:processStartTagForInBody(token);866 processStartTagForInBody(token); 867 867 break; 868 868 case InColumnGroupMode: … … 1301 1301 } 1302 1302 1303 void HTMLTreeBuilder::processEndTagForInBody(AtomicHTMLToken& token) 1304 { 1305 ASSERT(token.type() == HTMLToken::EndTag); 1306 if (token.name() == bodyTag) { 1307 processBodyEndTagForInBody(token); 1308 return; 1309 } 1310 if (token.name() == htmlTag) { 1311 AtomicHTMLToken endBody(HTMLToken::EndTag, bodyTag.localName()); 1312 if (processBodyEndTagForInBody(endBody)) 1313 processEndTag(token); 1314 return; 1315 } 1316 if (token.name() == addressTag || token.name() == articleTag || token.name() == asideTag || token.name() == blockquoteTag || token.name() == buttonTag || token.name() == centerTag || token.name() == "details" || token.name() == dirTag || token.name() == divTag || token.name() == dlTag || token.name() == fieldsetTag || token.name() == "figure" || token.name() == footerTag || token.name() == headerTag || token.name() == hgroupTag || token.name() == listingTag || token.name() == menuTag || token.name() == navTag || token.name() == olTag || token.name() == preTag || token.name() == sectionTag || token.name() == ulTag) { 1317 if (!m_openElements.inScope(token.name())) { 1318 parseError(token); 1319 return; 1320 } 1321 generateImpliedEndTags(); 1322 if (currentElement()->tagQName() != token.name()) 1323 parseError(token); 1324 m_openElements.popUntil(token.name()); 1325 m_openElements.pop(); 1326 } 1327 if (token.name() == formTag) { 1328 RefPtr<Element> node = m_formElement.release(); 1329 if (!node || !m_openElements.inScope(node.get())) { 1330 parseError(token); 1331 return; 1332 } 1333 generateImpliedEndTags(); 1334 if (currentElement() != node.get()) 1335 parseError(token); 1336 m_openElements.remove(node.get()); 1337 } 1338 if (token.name() == pTag) { 1339 if (!m_openElements.inScope(token.name())) { 1340 parseError(token); 1341 notImplemented(); 1342 return; 1343 } 1344 generateImpliedEndTagsWithExclusion(token.name()); 1345 if (!currentElement()->hasLocalName(token.name())) 1346 parseError(token); 1347 m_openElements.popUntil(token.name()); 1348 m_openElements.pop(); 1349 return; 1350 } 1351 if (token.name() == liTag) { 1352 if (!m_openElements.inListItemScope(token.name())) { 1353 parseError(token); 1354 return; 1355 } 1356 generateImpliedEndTagsWithExclusion(token.name()); 1357 if (!currentElement()->hasLocalName(token.name())) 1358 parseError(token); 1359 m_openElements.popUntil(token.name()); 1360 m_openElements.pop(); 1361 return; 1362 } 1363 if (token.name() == ddTag || token.name() == dtTag) { 1364 if (!m_openElements.inScope(token.name())) { 1365 parseError(token); 1366 return; 1367 } 1368 generateImpliedEndTagsWithExclusion(token.name()); 1369 if (!currentElement()->hasLocalName(token.name())) 1370 parseError(token); 1371 m_openElements.popUntil(token.name()); 1372 m_openElements.pop(); 1373 return; 1374 } 1375 if (isNumberedHeaderTag(token.name())) { 1376 if (!m_openElements.inScope(token.name())) { 1377 parseError(token); 1378 return; 1379 } 1380 generateImpliedEndTags(); 1381 if (!currentElement()->hasLocalName(token.name())) 1382 parseError(token); 1383 m_openElements.popUntil(token.name()); 1384 m_openElements.pop(); 1385 return; 1386 } 1387 if (token.name() == "sarcasm") { 1388 notImplemented(); // Take a deep breath. 1389 return; 1390 } 1391 if (isFormattingTag(token.name())) { 1392 callTheAdoptionAgency(token); 1393 return; 1394 } 1395 if (token.name() == appletTag || token.name() == marqueeTag || token.name() == objectTag) { 1396 if (!m_openElements.inScope(token.name())) { 1397 parseError(token); 1398 return; 1399 } 1400 generateImpliedEndTags(); 1401 if (currentElement()->tagQName() != token.name()) 1402 parseError(token); 1403 m_openElements.popUntil(token.name()); 1404 m_openElements.pop(); 1405 m_activeFormattingElements.clearToLastMarker(); 1406 return; 1407 } 1408 if (token.name() == brTag) { 1409 parseError(token); 1410 reconstructTheActiveFormattingElements(); 1411 // Notice that we lose the attributes. 1412 AtomicHTMLToken startBr(HTMLToken::StartTag, token.name()); 1413 insertSelfClosingElement(startBr); 1414 m_framesetOk = false; 1415 return; 1416 } 1417 processAnyOtherEndTagForInBody(token); 1418 } 1419 1303 1420 void HTMLTreeBuilder::processEndTag(AtomicHTMLToken& token) 1304 1421 { … … 1348 1465 case InBodyMode: 1349 1466 ASSERT(insertionMode() == InBodyMode); 1350 if (token.name() == bodyTag) { 1351 processBodyEndTagForInBody(token); 1352 return; 1353 } 1354 if (token.name() == htmlTag) { 1355 AtomicHTMLToken endBody(HTMLToken::EndTag, bodyTag.localName()); 1356 if (processBodyEndTagForInBody(endBody)) 1357 processEndTag(token); 1358 return; 1359 } 1360 if (token.name() == addressTag || token.name() == articleTag || token.name() == asideTag || token.name() == blockquoteTag || token.name() == buttonTag || token.name() == centerTag || token.name() == "details" || token.name() == dirTag || token.name() == divTag || token.name() == dlTag || token.name() == fieldsetTag || token.name() == "figure" || token.name() == footerTag || token.name() == headerTag || token.name() == hgroupTag || token.name() == listingTag || token.name() == menuTag || token.name() == navTag || token.name() == olTag || token.name() == preTag || token.name() == sectionTag || token.name() == ulTag) { 1361 if (!m_openElements.inScope(token.name())) { 1362 parseError(token); 1363 return; 1364 } 1365 generateImpliedEndTags(); 1366 if (currentElement()->tagQName() != token.name()) 1367 parseError(token); 1368 m_openElements.popUntil(token.name()); 1369 m_openElements.pop(); 1370 } 1371 if (token.name() == formTag) { 1372 RefPtr<Element> node = m_formElement.release(); 1373 if (!node || !m_openElements.inScope(node.get())) { 1374 parseError(token); 1375 return; 1376 } 1377 generateImpliedEndTags(); 1378 if (currentElement() != node.get()) 1379 parseError(token); 1380 m_openElements.remove(node.get()); 1381 } 1382 if (token.name() == pTag) { 1383 if (!m_openElements.inScope(token.name())) { 1384 parseError(token); 1385 notImplemented(); 1386 return; 1387 } 1388 generateImpliedEndTagsWithExclusion(token.name()); 1389 if (!currentElement()->hasLocalName(token.name())) 1390 parseError(token); 1391 m_openElements.popUntil(token.name()); 1392 m_openElements.pop(); 1393 return; 1394 } 1395 if (token.name() == liTag) { 1396 if (!m_openElements.inListItemScope(token.name())) { 1397 parseError(token); 1398 return; 1399 } 1400 generateImpliedEndTagsWithExclusion(token.name()); 1401 if (!currentElement()->hasLocalName(token.name())) 1402 parseError(token); 1403 m_openElements.popUntil(token.name()); 1404 m_openElements.pop(); 1405 return; 1406 } 1407 if (token.name() == ddTag || token.name() == dtTag) { 1408 if (!m_openElements.inScope(token.name())) { 1409 parseError(token); 1410 return; 1411 } 1412 generateImpliedEndTagsWithExclusion(token.name()); 1413 if (!currentElement()->hasLocalName(token.name())) 1414 parseError(token); 1415 m_openElements.popUntil(token.name()); 1416 m_openElements.pop(); 1417 return; 1418 } 1419 if (isNumberedHeaderTag(token.name())) { 1420 if (!m_openElements.inScope(token.name())) { 1421 parseError(token); 1422 return; 1423 } 1424 generateImpliedEndTags(); 1425 if (!currentElement()->hasLocalName(token.name())) 1426 parseError(token); 1427 m_openElements.popUntil(token.name()); 1428 m_openElements.pop(); 1429 return; 1430 } 1431 if (token.name() == "sarcasm") { 1432 notImplemented(); // Take a deep breath. 1433 return; 1434 } 1435 if (isFormattingTag(token.name())) { 1436 callTheAdoptionAgency(token); 1437 return; 1438 } 1439 if (token.name() == appletTag || token.name() == marqueeTag || token.name() == objectTag) { 1440 if (!m_openElements.inScope(token.name())) { 1441 parseError(token); 1442 return; 1443 } 1444 generateImpliedEndTags(); 1445 if (currentElement()->tagQName() != token.name()) 1446 parseError(token); 1447 m_openElements.popUntil(token.name()); 1448 m_openElements.pop(); 1449 m_activeFormattingElements.clearToLastMarker(); 1450 return; 1451 } 1452 if (token.name() == brTag) { 1453 parseError(token); 1454 reconstructTheActiveFormattingElements(); 1455 // Notice that we lose the attributes. 1456 AtomicHTMLToken startBr(HTMLToken::StartTag, token.name()); 1457 insertSelfClosingElement(startBr); 1458 m_framesetOk = false; 1459 return; 1460 } 1461 processAnyOtherEndTagForInBody(token); 1467 processEndTagForInBody(token); 1462 1468 break; 1463 1469 case InTableMode: … … 1478 1484 return; 1479 1485 } 1480 notImplemented(); 1486 // FIXME: Do we need to worry about "whenever a node would be inserted into the current node, it must instead be foster parented"? 1487 processEndTagForInBody(token); 1481 1488 break; 1482 1489 case AfterBodyMode: -
trunk/WebCore/html/HTMLTreeBuilder.h
r62527 r62532 124 124 bool processStartTagForInHead(AtomicHTMLToken&); 125 125 void processStartTagForInBody(AtomicHTMLToken&); 126 void processEndTagForInBody(AtomicHTMLToken&); 126 127 PassRefPtr<NamedNodeMap> attributesForIsindexInput(AtomicHTMLToken&); 127 128 void processIsindexStartTagForBody(AtomicHTMLToken&);
Note: See TracChangeset
for help on using the changeset viewer.