Make forward-compatible the DOCTYPE handling for determining whether to be in quirks mode or strict mode: properly parse the DOCTYPE declaration and use a list of known public identifiers that should trigger quirks. Remove some remnants of modes that no longer exist. b=55264 r=harishd sr=vidur

git-svn-id: svn://10.0.0.236/trunk@102591 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
dbaron%fas.harvard.edu
2001-09-08 18:37:19 +00:00
parent 0998d9523b
commit e59c2701d9
24 changed files with 826 additions and 1328 deletions

View File

@@ -123,9 +123,6 @@ NS_IMPL_RELEASE(nsHTMLTokenizer)
if (aParseMode==eDTDMode_strict) {
mFlags = NS_IPARSER_FLAG_STRICT_MODE;
}
else if (aParseMode==eDTDMode_transitional) {
mFlags = NS_IPARSER_FLAG_TRANSITIONAL_MODE;
}
else if (aParseMode==eDTDMode_quirks) {
mFlags = NS_IPARSER_FLAG_QUIRKS_MODE;
}
@@ -139,17 +136,13 @@ NS_IMPL_RELEASE(nsHTMLTokenizer)
if (aDocType==ePlainText) {
mFlags |= NS_IPARSER_FLAG_PLAIN_TEXT;
}
else if (aDocType==eXMLText) {
mFlags |= NS_IPARSER_FLAG_XML_TEXT;
else if (aDocType==eXML) {
mFlags |= NS_IPARSER_FLAG_XML;
}
else if (aDocType==eXHTMLText) {
mFlags |= NS_IPARSER_FLAG_XHTML_TEXT;
}
else if (aDocType==eHTML3Text) {
mFlags |= NS_IPARSER_FLAG_HTML3_TEXT;
}
else if (aDocType==eHTML4Text) {
mFlags |= NS_IPARSER_FLAG_HTML4_TEXT;
else if (aDocType==eHTML_Quirks ||
aDocType==eHTML3_Quirks ||
aDocType==eHTML_Strict) {
mFlags |= NS_IPARSER_FLAG_HTML;
}
mFlags |= (aCommand==eViewSource)? NS_IPARSER_FLAG_VIEW_SOURCE:NS_IPARSER_FLAG_VIEW_NORMAL;
@@ -541,7 +534,7 @@ nsresult nsHTMLTokenizer::ConsumeTag(PRUnichar aChar,CToken*& aToken,nsScanner&
result=aScanner.Peek(theNextChar, 1);
if(NS_OK==result) {
// xml allow non ASCII tag name, consume as end tag. need to make xml view source work
PRBool isXML=(mFlags & (NS_IPARSER_FLAG_XML_TEXT | NS_IPARSER_FLAG_XHTML_TEXT));
PRBool isXML=(mFlags & NS_IPARSER_FLAG_XML);
if(nsCRT::IsAsciiAlpha(theNextChar)||(kGreaterThan==theNextChar)||
(isXML && (! nsCRT::IsAscii(theNextChar)))) {
result=ConsumeEndTag(aChar,aToken,aScanner);
@@ -621,7 +614,7 @@ nsresult nsHTMLTokenizer::ConsumeAttributes(PRUnichar aChar,CStartToken* aToken,
// support XML like syntax to fix bugs like 44186
if(!key.IsEmpty() && kForwardSlash==key.First() && text.IsEmpty()) {
aToken->SetEmpty(PR_TRUE);
isUsableAttr = !(mFlags & (NS_IPARSER_FLAG_STRICT_MODE|NS_IPARSER_FLAG_TRANSITIONAL_MODE));
isUsableAttr = !(mFlags & NS_IPARSER_FLAG_STRICT_MODE);
}
if(isUsableAttr) {
theAttrCount++;