diff --git a/htmlparser/src/CNavDTD.cpp b/htmlparser/src/CNavDTD.cpp
index 370e34061be..f2462fe16e1 100644
--- a/htmlparser/src/CNavDTD.cpp
+++ b/htmlparser/src/CNavDTD.cpp
@@ -396,10 +396,15 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) const {
case eHTMLTag_link:
break; //singletons can't contain anything...
- // XXX hey rickg: listing is like xmp or plaintext and has
- // NOTHING to do with html lists.
+ case eHTMLTag_listitem:
+ if (eHTMLTag_listitem == aChild) {
+ return PR_FALSE;
+ }
+ result = PR_TRUE;
+ break;
+
case eHTMLTag_listing:
- result=PRBool(eHTMLTag_listitem==aChild); break;
+ result = PR_TRUE; break;
case eHTMLTag_map:
result=PRBool(eHTMLTag_area==aChild); break;
@@ -413,6 +418,14 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) const {
case eHTMLTag_meta:
break; //singletons can't contain other tags
+ case eHTMLTag_menu:
+ case eHTMLTag_dir:
+ case eHTMLTag_ol:
+ case eHTMLTag_ul:
+ // XXX kipp was here
+ result = PR_TRUE;
+ break;
+
case eHTMLTag_noframes:
if(eHTMLTag_body==aChild)
result=PR_TRUE;
@@ -427,23 +440,8 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) const {
case eHTMLTag_object:
result=PRBool(0!=strchr(gTagSet2,aChild)); break;
- case eHTMLTag_menu:
- case eHTMLTag_dir:
- case eHTMLTag_ol:
- case eHTMLTag_ul:
- // XXX kipp was here
- result = PR_TRUE;
- break;
-
- case eHTMLTag_listitem:
- if (eHTMLTag_listitem == aChild) {
- return PR_FALSE;
- }
- result = PR_TRUE;
- break;
-
case eHTMLTag_option:
- break; //singletons can't contain other tags
+ result=PR_TRUE; break; //for now, allow select to contain anything...
case eHTMLTag_paragraph:
if(eHTMLTag_paragraph==aChild)
@@ -669,10 +667,11 @@ PRBool CNavDTD::CanOmitEndTag(PRInt32 aParent,PRInt32 aChild) const {
}
break;
+ case eHTMLTag_select: case eHTMLTag_option:
case eHTMLTag_button: case eHTMLTag_fieldset:
case eHTMLTag_input: case eHTMLTag_isindex:
case eHTMLTag_label: case eHTMLTag_legend:
- case eHTMLTag_select: case eHTMLTag_textarea:
+ case eHTMLTag_textarea:
if(PR_FALSE==mParser->HasOpenForm())
result=PR_TRUE;
break;
@@ -721,7 +720,8 @@ PRBool CNavDTD::IsContainer(PRInt32 aTag) const {
case eHTMLTag_input: case eHTMLTag_isindex:
case eHTMLTag_link:
case eHTMLTag_math: case eHTMLTag_meta:
- case eHTMLTag_option: case eHTMLTag_param:
+// case eHTMLTag_option:
+ case eHTMLTag_param:
case eHTMLTag_style: case eHTMLTag_spacer:
case eHTMLTag_wbr:
case eHTMLTag_form:
diff --git a/parser/htmlparser/src/CNavDTD.cpp b/parser/htmlparser/src/CNavDTD.cpp
index 370e34061be..f2462fe16e1 100644
--- a/parser/htmlparser/src/CNavDTD.cpp
+++ b/parser/htmlparser/src/CNavDTD.cpp
@@ -396,10 +396,15 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) const {
case eHTMLTag_link:
break; //singletons can't contain anything...
- // XXX hey rickg: listing is like xmp or plaintext and has
- // NOTHING to do with html lists.
+ case eHTMLTag_listitem:
+ if (eHTMLTag_listitem == aChild) {
+ return PR_FALSE;
+ }
+ result = PR_TRUE;
+ break;
+
case eHTMLTag_listing:
- result=PRBool(eHTMLTag_listitem==aChild); break;
+ result = PR_TRUE; break;
case eHTMLTag_map:
result=PRBool(eHTMLTag_area==aChild); break;
@@ -413,6 +418,14 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) const {
case eHTMLTag_meta:
break; //singletons can't contain other tags
+ case eHTMLTag_menu:
+ case eHTMLTag_dir:
+ case eHTMLTag_ol:
+ case eHTMLTag_ul:
+ // XXX kipp was here
+ result = PR_TRUE;
+ break;
+
case eHTMLTag_noframes:
if(eHTMLTag_body==aChild)
result=PR_TRUE;
@@ -427,23 +440,8 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) const {
case eHTMLTag_object:
result=PRBool(0!=strchr(gTagSet2,aChild)); break;
- case eHTMLTag_menu:
- case eHTMLTag_dir:
- case eHTMLTag_ol:
- case eHTMLTag_ul:
- // XXX kipp was here
- result = PR_TRUE;
- break;
-
- case eHTMLTag_listitem:
- if (eHTMLTag_listitem == aChild) {
- return PR_FALSE;
- }
- result = PR_TRUE;
- break;
-
case eHTMLTag_option:
- break; //singletons can't contain other tags
+ result=PR_TRUE; break; //for now, allow select to contain anything...
case eHTMLTag_paragraph:
if(eHTMLTag_paragraph==aChild)
@@ -669,10 +667,11 @@ PRBool CNavDTD::CanOmitEndTag(PRInt32 aParent,PRInt32 aChild) const {
}
break;
+ case eHTMLTag_select: case eHTMLTag_option:
case eHTMLTag_button: case eHTMLTag_fieldset:
case eHTMLTag_input: case eHTMLTag_isindex:
case eHTMLTag_label: case eHTMLTag_legend:
- case eHTMLTag_select: case eHTMLTag_textarea:
+ case eHTMLTag_textarea:
if(PR_FALSE==mParser->HasOpenForm())
result=PR_TRUE;
break;
@@ -721,7 +720,8 @@ PRBool CNavDTD::IsContainer(PRInt32 aTag) const {
case eHTMLTag_input: case eHTMLTag_isindex:
case eHTMLTag_link:
case eHTMLTag_math: case eHTMLTag_meta:
- case eHTMLTag_option: case eHTMLTag_param:
+// case eHTMLTag_option:
+ case eHTMLTag_param:
case eHTMLTag_style: case eHTMLTag_spacer:
case eHTMLTag_wbr:
case eHTMLTag_form: