Changeset 60826 in webkit
- Timestamp:
- Jun 8, 2010 12:15:52 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r60825 r60826 1 2010-06-08 Adam Barth <abarth@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Implement HTML5's forceQuirks flag 6 https://bugs.webkit.org/show_bug.cgi?id=40284 7 8 I didn't implement this before because I didn't know how to test it, 9 but now I do. 10 11 Tests: 12 * fast/doctypes/doctype-parsing.html. 13 14 When we actually implement the quirks mode handling in the tree 15 builder, we'll probably want to add to this test. 16 17 * html/HTML5Lexer.cpp: 18 (WebCore::HTML5Lexer::nextToken): 19 * html/HTML5Token.h: 20 (WebCore::HTML5Token::forceQuirks): 21 (WebCore::HTML5Token::setForceQuirks): 22 * html/HTML5TreeBuilder.cpp: 23 (WebCore::HTML5TreeBuilder::passTokenToLegacyParser): 24 * html/HTMLParser.cpp: 25 (WebCore::HTMLParser::parseDoctypeToken): 26 * html/HTMLTokenizer.h: 27 (WebCore::DoctypeToken::reset): 28 1 29 2010-06-08 Adam Barth <abarth@webkit.org> 2 30 -
trunk/WebCore/html/HTML5Lexer.cpp
r60790 r60826 1352 1352 emitParseError(); 1353 1353 m_token->beginDOCTYPE(); 1354 notImplemented();1354 m_token->setForceQuirks(); 1355 1355 EMIT_AND_RESUME_IN(DataState); 1356 1356 } else { … … 1402 1402 } 1403 1403 emitParseError(); 1404 notImplemented();1404 m_token->setForceQuirks(); 1405 1405 ADVANCE_TO(BogusDOCTYPEState); 1406 1406 } … … 1422 1422 } else if (cc == '>') { 1423 1423 emitParseError(); 1424 notImplemented();1425 EMIT_AND_RESUME_IN(DataState); 1426 } else { 1427 emitParseError(); 1428 notImplemented();1424 m_token->setForceQuirks(); 1425 EMIT_AND_RESUME_IN(DataState); 1426 } else { 1427 emitParseError(); 1428 m_token->setForceQuirks(); 1429 1429 ADVANCE_TO(BogusDOCTYPEState); 1430 1430 } … … 1444 1444 } else if (cc == '>') { 1445 1445 emitParseError(); 1446 notImplemented();1447 EMIT_AND_RESUME_IN(DataState); 1448 } else { 1449 emitParseError(); 1450 notImplemented();1446 m_token->setForceQuirks(); 1447 EMIT_AND_RESUME_IN(DataState); 1448 } else { 1449 emitParseError(); 1450 m_token->setForceQuirks(); 1451 1451 ADVANCE_TO(BogusDOCTYPEState); 1452 1452 } … … 1460 1460 else if (cc == '>') { 1461 1461 emitParseError(); 1462 notImplemented();1462 m_token->setForceQuirks(); 1463 1463 EMIT_AND_RESUME_IN(DataState); 1464 1464 } else { … … 1475 1475 else if (cc == '>') { 1476 1476 emitParseError(); 1477 notImplemented();1477 m_token->setForceQuirks(); 1478 1478 EMIT_AND_RESUME_IN(DataState); 1479 1479 } else { … … 1500 1500 } else { 1501 1501 emitParseError(); 1502 notImplemented();1502 m_token->setForceQuirks(); 1503 1503 ADVANCE_TO(BogusDOCTYPEState); 1504 1504 } … … 1520 1520 } else { 1521 1521 emitParseError(); 1522 notImplemented();1522 m_token->setForceQuirks(); 1523 1523 ADVANCE_TO(BogusDOCTYPEState); 1524 1524 } … … 1540 1540 } else if (cc == '>') { 1541 1541 emitParseError(); 1542 notImplemented();1543 EMIT_AND_RESUME_IN(DataState); 1544 } else { 1545 emitParseError(); 1546 notImplemented();1542 m_token->setForceQuirks(); 1543 EMIT_AND_RESUME_IN(DataState); 1544 } else { 1545 emitParseError(); 1546 m_token->setForceQuirks(); 1547 1547 ADVANCE_TO(BogusDOCTYPEState); 1548 1548 } … … 1562 1562 } else if (cc == '>') { 1563 1563 emitParseError(); 1564 notImplemented();1565 EMIT_AND_RESUME_IN(DataState); 1566 } else { 1567 emitParseError(); 1568 notImplemented();1564 m_token->setForceQuirks(); 1565 EMIT_AND_RESUME_IN(DataState); 1566 } else { 1567 emitParseError(); 1568 m_token->setForceQuirks(); 1569 1569 ADVANCE_TO(BogusDOCTYPEState); 1570 1570 } … … 1578 1578 else if (cc == '>') { 1579 1579 emitParseError(); 1580 notImplemented();1580 m_token->setForceQuirks(); 1581 1581 EMIT_AND_RESUME_IN(DataState); 1582 1582 } else { … … 1593 1593 else if (cc == '>') { 1594 1594 emitParseError(); 1595 notImplemented();1595 m_token->setForceQuirks(); 1596 1596 EMIT_AND_RESUME_IN(DataState); 1597 1597 } else { -
trunk/WebCore/html/HTML5Token.h
r60738 r60826 213 213 } 214 214 215 bool forceQuirks() 216 { 217 ASSERT(m_type == DOCTYPE); 218 return m_doctypeData->m_forceQuirks; 219 } 220 221 void setForceQuirks() 222 { 223 ASSERT(m_type == DOCTYPE); 224 m_doctypeData->m_forceQuirks = true; 225 } 226 215 227 void appendToPublicIdentifier(UChar character) 216 228 { -
trunk/WebCore/html/HTML5TreeBuilder.cpp
r60738 r60826 139 139 doctypeToken.m_publicID = token.publicIdentifier(); 140 140 doctypeToken.m_systemID = token.systemIdentifier(); 141 doctypeToken.m_forceQuirks = token.forceQuirks(); 141 142 142 143 m_legacyHTMLParser->parseDoctypeToken(&doctypeToken); -
trunk/WebCore/html/HTMLParser.cpp
r60418 r60826 344 344 if (m_document->doctype() || m_isParsingFragment || m_current != m_document) 345 345 return; 346 346 347 347 // Make a new doctype node and set it as our doctype. 348 348 m_document->addChild(DocumentType::create(m_document, String::adopt(t->m_name), String::adopt(t->m_publicID), String::adopt(t->m_systemID))); 349 if (t->m_forceQuirks) 350 m_document->setParseMode(Document::Compat); 349 351 } 350 352 -
trunk/WebCore/html/HTMLTokenizer.h
r60786 r60826 118 118 m_state = DoctypeBegin; 119 119 m_source.clear(); 120 m_forceQuirks = false; 120 121 } 121 122 … … 127 128 Vector<UChar> m_systemID; 128 129 DoctypeState m_state; 129 130 130 131 Vector<UChar> m_source; 132 133 bool m_forceQuirks; // Used by the HTML5 parser. 131 134 }; 132 135
Note: See TracChangeset
for help on using the changeset viewer.