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;