diff --git a/htmlparser/src/CNavDTD.cpp b/htmlparser/src/CNavDTD.cpp index 0674dcb9587d..eadda1889eda 100644 --- a/htmlparser/src/CNavDTD.cpp +++ b/htmlparser/src/CNavDTD.cpp @@ -4,7 +4,7 @@ * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ - * + * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the @@ -669,8 +669,8 @@ eHTMLTags FindAutoCloseTargetForStartTag(eHTMLTags aCurrentTag,nsTagStack& aTagS eHTMLTags aPrevTag=aTagStack.mTags[theTopIndex-1]; if(nsHTMLElement::IsContainer(aCurrentTag)){ - if((aPrevTag==aCurrentTag) && (!gHTMLElements[aCurrentTag].CanSelfContain())){ - return aCurrentTag; + if(aPrevTag==aCurrentTag) { + return (gHTMLElements[aCurrentTag].CanSelfContain()) ? eHTMLTag_unknown: aCurrentTag; } if(nsHTMLElement::IsBlockCloser(aCurrentTag)) { @@ -740,9 +740,9 @@ nsresult CNavDTD::HandleDefaultStartToken(CToken* aToken,eHTMLTags aChildTag,nsI if(eHTMLTag_unknown!=theTarget){ result=CloseContainersTo(theTarget,PR_TRUE); theParentTag=mBodyContext->Last(); + theCanContainResult=CanContain(theParentTag,aChildTag); } - if(PR_FALSE==theCanContainResult){ if(CanPropagate(theParentTag,aChildTag)) result=CreateContextStackFor(aChildTag); diff --git a/htmlparser/src/nsElementTable.h b/htmlparser/src/nsElementTable.h index 7297235352ae..da42b0f15d7c 100644 --- a/htmlparser/src/nsElementTable.h +++ b/htmlparser/src/nsElementTable.h @@ -360,6 +360,8 @@ public: gHTMLElements[gStyleTags[index]].mSelfContained=PR_TRUE; } gHTMLElements[eHTMLTag_frameset].mSelfContained=PR_TRUE; + gHTMLElements[eHTMLTag_ol].mSelfContained=PR_TRUE; + gHTMLElements[eHTMLTag_ul].mSelfContained=PR_TRUE; } }; CTableInitializer gTableInitializer; diff --git a/parser/htmlparser/src/CNavDTD.cpp b/parser/htmlparser/src/CNavDTD.cpp index 0674dcb9587d..eadda1889eda 100644 --- a/parser/htmlparser/src/CNavDTD.cpp +++ b/parser/htmlparser/src/CNavDTD.cpp @@ -4,7 +4,7 @@ * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ - * + * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the @@ -669,8 +669,8 @@ eHTMLTags FindAutoCloseTargetForStartTag(eHTMLTags aCurrentTag,nsTagStack& aTagS eHTMLTags aPrevTag=aTagStack.mTags[theTopIndex-1]; if(nsHTMLElement::IsContainer(aCurrentTag)){ - if((aPrevTag==aCurrentTag) && (!gHTMLElements[aCurrentTag].CanSelfContain())){ - return aCurrentTag; + if(aPrevTag==aCurrentTag) { + return (gHTMLElements[aCurrentTag].CanSelfContain()) ? eHTMLTag_unknown: aCurrentTag; } if(nsHTMLElement::IsBlockCloser(aCurrentTag)) { @@ -740,9 +740,9 @@ nsresult CNavDTD::HandleDefaultStartToken(CToken* aToken,eHTMLTags aChildTag,nsI if(eHTMLTag_unknown!=theTarget){ result=CloseContainersTo(theTarget,PR_TRUE); theParentTag=mBodyContext->Last(); + theCanContainResult=CanContain(theParentTag,aChildTag); } - if(PR_FALSE==theCanContainResult){ if(CanPropagate(theParentTag,aChildTag)) result=CreateContextStackFor(aChildTag); diff --git a/parser/htmlparser/src/nsElementTable.h b/parser/htmlparser/src/nsElementTable.h index 7297235352ae..da42b0f15d7c 100644 --- a/parser/htmlparser/src/nsElementTable.h +++ b/parser/htmlparser/src/nsElementTable.h @@ -360,6 +360,8 @@ public: gHTMLElements[gStyleTags[index]].mSelfContained=PR_TRUE; } gHTMLElements[eHTMLTag_frameset].mSelfContained=PR_TRUE; + gHTMLElements[eHTMLTag_ol].mSelfContained=PR_TRUE; + gHTMLElements[eHTMLTag_ul].mSelfContained=PR_TRUE; } }; CTableInitializer gTableInitializer;