Bug 458983: dead stuff in nsHTMLElement r+sr=mrbkap
authorTaras Glek <tglek@mozilla.com>
Thu, 09 Oct 2008 13:46:16 -0700
changeset 20217 8ba4bc3e2d8bdee74a6f63d09897b25649a79160
parent 20216 edadac8d8a502e1a512eaf167c5540ce658f551a
child 20218 0522128f56035f5e94744443faee73431146a0a4
push idunknown
push userunknown
push dateunknown
bugs458983
milestone1.9.1b2pre
Bug 458983: dead stuff in nsHTMLElement r+sr=mrbkap
parser/htmlparser/src/nsElementTable.cpp
parser/htmlparser/src/nsElementTable.h
--- a/parser/htmlparser/src/nsElementTable.cpp
+++ b/parser/htmlparser/src/nsElementTable.cpp
@@ -191,1230 +191,1111 @@ PRBool CanBeContainedLI(eHTMLTags aChild
 const nsHTMLElement gHTMLElements[] = {
   {
     /*tag*/                             eHTMLTag_unknown,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,  
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kNone,
     /*special props, prop-range*/       kNonContainer, 10,
-    /*special parents,kids,skip*/       0,&gUnknownKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gUnknownKids,
   },
   {
     /*tag*/                             eHTMLTag_a,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, kInlineEntity, kNone,  
     /*special props, prop-range*/       kVerifyHierarchy, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_abbr,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_acronym,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_address,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kBlock, kInlineEntity, kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gAddressKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gAddressKids,
   },
   {
     /*tag*/                             eHTMLTag_applet,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kSelf|kInlineEntity|kFlowEntity), kNone,
     /*special props, prop-range*/       kRequiresBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gContainsParam,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gContainsParam,
   },
   {
     /*tag*/                             eHTMLTag_area,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gAreaParent,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kInlineEntity, kSelf,
     /*special props, prop-range*/       kNonContainer,kDefaultPropRange,
-    /*special parents,kids,skip*/       &gAreaParent,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gAreaParent,0,
   },
 #if defined(MOZ_MEDIA)
   {
     /*tag*/                             eHTMLTag_audio,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0, 0, 0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kFlowEntity|kSelf), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gAudioKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gAudioKids,
   },
 #endif
   {
     /*tag*/                             eHTMLTag_b,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kInlineEntity|kSelf), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_base,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInHead,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kHeadContent, kNone, kNone,
     /*special props, prop-range*/       kNonContainer, kNoPropRange,
-    /*special parents,kids,skip*/       &gInHead,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInHead,0,
   },
   {
     /*tag*/                             eHTMLTag_basefont,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, kInlineEntity, kNone,
     /*special props, prop-range*/       kNonContainer, kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_bdo,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_bgsound,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          (kFlowEntity|kHeadMisc), kNone, kNone,
     /*special props, prop-range*/       kNonContainer,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_big,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kInlineEntity|kSelf), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_blink,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kFlowEntity|kSelf), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_blockquote,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,  //remove excludeable parents to fix bug 53473
     /*parent,incl,exclgroups*/          kBlock, (kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_body,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_frameset,
     /*rootnodes,endrootnodes*/          &gInHTML,&gInHTML,
     /*autoclose starttags and endtags*/ &gBodyAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kHTMLContent,(kFlowEntity|kSelf), kNone,
     /*special props, prop-range*/       kOmitEndTag, kBodyPropRange,
-    /*special parents,kids,skip*/       0,&gBodyKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gBodyKids,
   },
   {
     /*tag*/                             eHTMLTag_br,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, kNone, kNone,
     /*special props, prop-range*/       kRequiresBody|kNonContainer, kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_button,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFormControl, kFlowEntity, kFormControl,
     /*special props, prop-range*/       kRequiresBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gButtonKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gButtonKids,
   },
   {
     /*tag*/                             eHTMLTag_canvas,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kFlowEntity|kSelf), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_caption,
     /*req-parent excl-parent*/          eHTMLTag_table,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInTable,&gInTable,
     /*autoclose starttags and endtags*/ &gCaptionAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kFlowEntity, kSelf,
     /*special props, prop-range*/       (kNoPropagate|kNoStyleLeaksOut),kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInTable,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInTable,0,
   },
   {
     /*tag*/                             eHTMLTag_center,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kBlock, (kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_cite,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_code,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_col,
     /*req-parent excl-parent*/          eHTMLTag_table,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gColParents,&gColParents,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kNone,
     /*special props, prop-range*/       kNoPropagate|kNonContainer,kDefaultPropRange,
-    /*special parents,kids,skip*/       &gColParents,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gColParents,0,
   },
   {
     /*tag*/                             eHTMLTag_colgroup,
     /*req-parent excl-parent*/          eHTMLTag_table,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInTable,&gInTable,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kNone,
     /*special props, prop-range*/       kNoPropagate,kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInTable,&gColgroupKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInTable,&gColgroupKids,
   },
   {
     /*tag*/                             eHTMLTag_dd,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gDTCloseTags,0,&gDLKids,0,
     /*parent,incl,exclgroups*/          kInlineEntity, kFlowEntity, kNone,
     /*special props, prop-range*/       kNoPropagate|kMustCloseSelf|kVerifyHierarchy|kRequiresBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInDL,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInDL,0,
   },
   {
     /*tag*/                             eHTMLTag_del,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, (kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInBody,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInBody,0,
   },
   {
     /*tag*/                             eHTMLTag_dfn,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_dir,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gOLRootTags,&gOLRootTags,
     /*autoclose starttags and endtags*/ &gOLAutoClose, &gULCloseTags, 0,0,
     /*parent,incl,exclgroups*/          kList, (kFlowEntity|kSelf), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gULKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gULKids,
   },
   {
     /*tag*/                             eHTMLTag_div,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gDivAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kBlock, (kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_dl,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gDLRootTags,&gRootTags,  //fix bug 57634
     /*autoclose starttags and endtags*/ 0,0,0,&gDTKids,           // DT should not contain DL - bug 100466
     /*parent,incl,exclgroups*/          kBlock, kSelf|kFlowEntity, kNone,
     /*special props, prop-range*/       0, kNoPropRange,
-    /*special parents,kids,skip*/       0,&gDLKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gDLKids,
   },
   {
     /*tag*/                             eHTMLTag_dt,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gDTCloseTags,0,&gDLKids,0,
     /*parent,incl,exclgroups*/          kInlineEntity, (kFlowEntity-kHeading), kNone,  // dt's parent group is inline - bug 65467
     /*special props, prop-range*/       (kNoPropagate|kMustCloseSelf|kVerifyHierarchy|kRequiresBody),kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInDL,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInDL,0,
   },
   {
     /*tag*/                             eHTMLTag_em,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_embed,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, kNone, kNone,
     /*special props, prop-range*/       kNonContainer|kRequiresBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gContainsParam,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gContainsParam,
   },
   {
     /*tag*/                             eHTMLTag_fieldset,
     /*requiredAncestor*/                eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kBlock, (kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       kNoPropagate,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gFieldsetKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gFieldsetKids,
   },
   {
     /*tag*/                             eHTMLTag_font,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gFontKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gFontKids,
   },
   {
     /*tag*/                             eHTMLTag_form,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kBlock, kFlowEntity, kNone,
     /*special props, prop-range*/       kNoStyleLeaksIn, kNoPropRange,
-    /*special parents,kids,skip*/       0,&gFormKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gFormKids,
   },
   {
     /*tag*/                             eHTMLTag_frame, 
     /*req-parent excl-parent*/          eHTMLTag_frameset,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInFrameset,&gInFrameset,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kNone,
     /*special props, prop-range*/       kNoPropagate|kNoStyleLeaksIn|kNonContainer, kNoPropRange,
-    /*special parents,kids,skip*/       &gInFrameset,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInFrameset,0,
   },
   {
     /*tag*/                             eHTMLTag_frameset,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_body,
     /*rootnodes,endrootnodes*/          &gFramesetParents,&gInHTML,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kHTMLContent, kSelf, kAllTags,
     /*special props, prop-range*/       kNoPropagate|kNoStyleLeaksIn, kNoPropRange,
-    /*special parents,kids,skip*/       &gInHTML,&gFramesetKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInHTML,&gFramesetKids,
   },
 
   {
     /*tag*/                             eHTMLTag_h1,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gHeadingTags,  &gHeadingTags, &gHeadingTags,0,
     /*parent,incl,exclgroups*/          kHeading, kFlowEntity, kNone,
     /*special props, prop-range*/       kVerifyHierarchy,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_h2,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gHeadingTags,  &gHeadingTags, &gHeadingTags,0,
     /*parent,incl,exclgroups*/          kHeading, kFlowEntity, kNone,
     /*special props, prop-range*/       kVerifyHierarchy,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_h3,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gHeadingTags,  &gHeadingTags, &gHeadingTags,0,
     /*parent,incl,exclgroups*/          kHeading, kFlowEntity, kNone,
     /*special props, prop-range*/       kVerifyHierarchy,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_h4,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gHeadingTags,  &gHeadingTags, &gHeadingTags,0,
     /*parent,incl,exclgroups*/          kHeading, kFlowEntity, kNone,
     /*special props, prop-range*/       kVerifyHierarchy,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_h5,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gHeadingTags,  &gHeadingTags, &gHeadingTags,0,
     /*parent,incl,exclgroups*/          kHeading, kFlowEntity, kNone,
     /*special props, prop-range*/       kVerifyHierarchy,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_h6,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gHeadingTags,  &gHeadingTags, &gHeadingTags,0,
     /*parent,incl,exclgroups*/          kHeading, kFlowEntity, kNone,
     /*special props, prop-range*/       kVerifyHierarchy,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_head,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInHTML,&gInHTML,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kHTMLContent, (kHeadContent|kHeadMisc), kNone,
     /*special props, prop-range*/       kNoStyleLeaksIn, kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInHTML,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInHTML,0,
   },
   {
     /*tag*/                             eHTMLTag_hr,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gHRAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kBlock, kNone, kNone,
     /*special props, prop-range*/       kNonContainer|kRequiresBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_html,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_html,
     /*rootnodes,endrootnodes*/          &gHTMLRootTags,&gHTMLRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kHTMLContent, kNone,
     /*special props, prop-range*/       kSaveMisplaced|kOmitEndTag|kNoStyleLeaksIn, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gHtmlKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gHtmlKids,
   },
   {
     /*tag*/                             eHTMLTag_i,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_iframe,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       kNoStyleLeaksIn, kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_image,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, kNone, kNone,
     /*special props, prop-range*/       kNonContainer,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_img,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, kNone, kNone,
     /*special props, prop-range*/       kNonContainer|kRequiresBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_input,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gInputAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kFormControl, kNone, kNone,
     /*special props, prop-range*/       kNonContainer|kRequiresBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_ins,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, (kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_isindex,
     /*requiredAncestor*/                eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kBlock, kFlowEntity, kNone,
     /*special props, prop-range*/       kNonContainer|kRequiresBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInBody,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInBody,0,
   },
   {
     /*tag*/                             eHTMLTag_kbd,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_keygen,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, kNone, kNone,
     /*special props, prop-range*/       kNonContainer,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_label,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFormControl, kInlineEntity, kSelf,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gLabelKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gLabelKids,
   },
   {
     /*tag*/                             eHTMLTag_legend,
     /*requiredAncestor*/                eHTMLTag_fieldset,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInFieldset,&gInFieldset,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kInlineEntity, kNone,
     /*special props, prop-range*/       kRequiresBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInFieldset,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInFieldset,0,
   },
   {
     /*tag*/                             eHTMLTag_li,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gLIRootTags,&gLIRootTags,
     /*autoclose starttags and endtags*/ &gLIAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kBlockEntity, kFlowEntity, kSelf, // changed this back to kBlockEntity so we enable RS handling for phrasals. ref bug 181697
     /*special props, prop-range*/       kNoPropagate|kVerifyHierarchy|kRequiresBody, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gLIKids,eHTMLTag_unknown,
-    /*contain-func*/                    &CanBeContainedLI
+    /*special parents,kids*/            0,&gLIKids,
   },
   {
     /*tag*/                             eHTMLTag_link,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInHead,&gInHead,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kAllTags - kHeadContent, kNone, kNone,
     /*special props, prop-range*/       kNonContainer|kPreferHead|kLegalOpen,kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInHead,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInHead,0,
   },
   {
     /*tag*/                             eHTMLTag_listing,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPreformatted, (kSelf|kFlowEntity), kNone,  //add flowentity to fix 54993
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_map,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, kInlineEntity|kBlockEntity, kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gMapKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gMapKids,
   },
   {
     /*tag*/                             eHTMLTag_marquee,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       kRequiresBody, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_menu,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kList, (kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gULKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gULKids,
   },
   {
     /*tag*/                             eHTMLTag_meta,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInHead,&gInHead,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kHeadContent, kNone, kNone,
     /*special props, prop-range*/       kNoStyleLeaksIn|kNonContainer, kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInHead,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInHead,0,
   },
   {
     /*tag*/                             eHTMLTag_multicol,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kBlock, kFlowEntity, kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_nobr,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kExtensions, kFlowEntity, kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_noembed, 
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, kFlowEntity, kNone,
     /*special props, prop-range*/       0, kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_noframes,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gNoframeRoot,&gNoframeRoot,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, kFlowEntity, kNone,
     /*special props, prop-range*/       0, kNoPropRange,
-    /*special parents,kids,skip*/       &gNoframeRoot,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gNoframeRoot,0,
   },
   {
     /*tag*/                             eHTMLTag_noscript,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity|kHeadMisc, kFlowEntity|kSelf, kNone,
     /*special props, prop-range*/       0, kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_object,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kFlowEntity|kSelf), kNone,
     /*special props, prop-range*/       kNoStyleLeaksOut|kPreferBody,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gContainsParam,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gContainsParam,
   },
   {
     /*tag*/                             eHTMLTag_ol,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gOLRootTags,&gOLRootTags,
     /*autoclose starttags and endtags*/ &gOLAutoClose, &gULCloseTags, 0,0,
     /*parent,incl,exclgroups*/          kList, (kFlowEntity|kSelf), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,   
-    /*special parents,kids,skip*/       0,&gULKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gULKids,
   },
   {
     /*tag*/                             eHTMLTag_optgroup,
     /*requiredAncestor*/                eHTMLTag_select,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gOptgroupParents,&gOptgroupParents,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       &gOptgroupParents,&gContainsOpts,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gOptgroupParents,&gContainsOpts,
   },
   {
     /*tag*/                             eHTMLTag_option,
     /*requiredAncestor*/                eHTMLTag_select,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gOptgroupParents,&gOptgroupParents, 
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kPCDATA, kFlowEntity|kHeadMisc,
     /*special props, prop-range*/       kNoStyleLeaksIn|kNoPropagate, kDefaultPropRange,
-    /*special parents,kids,skip*/       &gOptgroupParents,&gContainedInOpt,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gOptgroupParents,&gContainedInOpt,
   },
   {
     /*tag*/                             eHTMLTag_p,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kBlock, kInlineEntity, kNone,      //this used to contain FLOW. But it's really an inline container.
     /*special props, prop-range*/       kHandleStrayTag,kDefaultPropRange, //otherwise it tries to contain things like H1..H6
-    /*special parents,kids,skip*/       0,&gInP,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gInP,
   },
   {
     /*tag*/                             eHTMLTag_param,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gParamParents,&gParamParents,
     /*autoclose starttags and endtags*/ &gPAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kNone,
     /*special props, prop-range*/       kNonContainer, kNoPropRange,
-    /*special parents,kids,skip*/       &gParamParents,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gParamParents,0,
   },
   {
     /*tag*/                             eHTMLTag_plaintext,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kExtensions, kCDATA, kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_pre,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kBlock|kPreformatted, (kSelf|kFlowEntity), kNone,  // Note: PRE is a block level element - bug 80009
     /*special props, prop-range*/       kRequiresBody, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gPreKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gPreKids,
   },
   {
     /*tag*/                             eHTMLTag_q,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_s,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_samp,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_script,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          (kSpecial|kHeadContent), kCDATA, kNone,   // note: this is kHeadContent since shipping this breaks things.
     /*special props, prop-range*/       kNoStyleLeaksIn|kLegalOpen, kNoPropRange,
-    /*special parents,kids,skip*/       0,&gContainsText,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gContainsText,
   },
   {
     /*tag*/                             eHTMLTag_select,
     /*requiredAncestor*/                eHTMLTag_unknown, eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInForm,&gInForm,
     /*autoclose starttags and endtags*/ &gInputAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kFormControl, kNone, kFlowEntity|kDLChild|kHeadMisc, // Added kHeadMisc to fix bug 287349
     /*special props, prop-range*/       kNoPropagate|kNoStyleLeaksIn|kRequiresBody, kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInForm,&gContainsOpts,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInForm,&gContainsOpts,
   },
   {
     /*tag*/                             eHTMLTag_small,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
 #if defined(MOZ_MEDIA)
   {
     /*tag*/                             eHTMLTag_source,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gSourceParents,&gSourceParents,
     /*autoclose starttags and endtags*/ &gPAutoClose, 0, 0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kNone,
     /*special props, prop-range*/       kNonContainer,kNoPropRange,
-    /*special parents,kids,skip*/       &gSourceParents,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gSourceParents,0,
   },
 #endif
   {
     
     /*tag*/                             eHTMLTag_spacer,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kExtensions, kNone, kNone,
     /*special props, prop-range*/       kNonContainer,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     
           // I made span a special% tag again, (instead of inline).
           // This fixes the case:  <font color="blue"><p><span>text</span>
 
     /*tag*/                             eHTMLTag_span,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kInlineEntity|kSelf|kFlowEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     
     /*tag*/                             eHTMLTag_strike,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     
     /*tag*/                             eHTMLTag_strong,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,  //changed this to inline per spec; fix bug 44584.
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gContainsText,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gContainsText,
   },
   {
     
     /*tag*/                             eHTMLTag_style,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kAllTags - kHeadContent, kCDATA, kNone,
     /*special props, prop-range*/       kNoStyleLeaksIn|kPreferHead|kLegalOpen, kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_sub,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     
     /*tag*/                             eHTMLTag_sup,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_table,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gTableRootTags,&gTableRootTags,
     /*autoclose starttags and endtags*/ 0,&gTableCloseTags,0,0,
     /*parent,incl,exclgroups*/          kBlock, kNone, (kSelf|kInlineEntity),
     /*special props, prop-range*/       (kBadContentWatch|kNoStyleLeaksIn|kRequiresBody), 2,
-    /*special parents,kids,skip*/       0,&gTableKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gTableKids,
   },
   {
     /*tag*/                             eHTMLTag_tbody,
     /*requiredAncestor*/                eHTMLTag_table, eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInTable,&gInTable,
     /*autoclose starttags and endtags*/ &gTBodyAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, (kSelf|kInlineEntity),
     /*special props, prop-range*/       (kNoPropagate|kBadContentWatch|kNoStyleLeaksIn|kNoStyleLeaksOut), kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInTable,&gTBodyKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInTable,&gTBodyKids,
   },
   {
     /*tag*/                             eHTMLTag_td,
     /*requiredAncestor*/                eHTMLTag_table, eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gTDRootTags,&gTDRootTags,
     /*autoclose starttags and endtags*/ &gTDCloseTags,&gTDCloseTags,0,&gExcludableParents,
     /*parent,incl,exclgroups*/          kNone, kFlowEntity, kSelf,
     /*special props, prop-range*/       kNoStyleLeaksIn|kNoStyleLeaksOut, kDefaultPropRange,
-    /*special parents,kids,skip*/       &gTDRootTags,&gBodyKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gTDRootTags,&gBodyKids,
   },
   {
     /*tag*/                             eHTMLTag_textarea,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInForm,&gInForm,
     /*autoclose starttags and endtags*/ &gInputAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kFormControl, kPCDATA, kNone,
     /*special props, prop-range*/       kRequiresBody|kNoStyleLeaksIn,kDefaultPropRange,
-    /*special parents,kids,skip*/       &gInForm,&gContainsText,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInForm,&gContainsText,
   },
   {
     /*tag*/                             eHTMLTag_tfoot,
     /*requiredAncestor*/                eHTMLTag_table, eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInTable,&gInTable,
     /*autoclose starttags and endtags*/ &gTBodyAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kSelf,
     /*special props, prop-range*/       (kNoPropagate|kBadContentWatch|kNoStyleLeaksIn|kNoStyleLeaksOut), kNoPropRange,
-    /*special parents,kids,skip*/       &gInTable,&gTableElemKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInTable,&gTableElemKids,
   },
   {
     /*tag*/                             eHTMLTag_th, 
     /*requiredAncestor*/                eHTMLTag_table, eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gTDRootTags,&gTDRootTags,
     /*autoclose starttags and endtags*/ &gTDCloseTags,&gTDCloseTags,0,0,
     /*parent,incl,exclgroups*/          kNone, kFlowEntity, kSelf,
     /*special props, prop-range*/       (kNoStyleLeaksIn|kNoStyleLeaksOut), kDefaultPropRange,
-    /*special parents,kids,skip*/       &gTDRootTags,&gBodyKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gTDRootTags,&gBodyKids,
   },
   {
     /*tag*/                             eHTMLTag_thead,
     /*req-parent excl-parent*/          eHTMLTag_table,eHTMLTag_unknown,  //fix bug 54840...
     /*rootnodes,endrootnodes*/          &gInTable,&gInTable,  
     /*autoclose starttags and endtags*/ &gTBodyAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kSelf,
     /*special props, prop-range*/       (kNoPropagate|kBadContentWatch|kNoStyleLeaksIn|kNoStyleLeaksOut), kNoPropRange,
-    /*special parents,kids,skip*/       &gInTable,&gTableElemKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInTable,&gTableElemKids,
   },
   {
     /*tag*/                             eHTMLTag_title,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInHead,&gInHead,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kHeadContent,kPCDATA, kNone,
     /*special props, prop-range*/       kNoStyleLeaksIn, kNoPropRange,
-    /*special parents,kids,skip*/       &gInHead,&gContainsText,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInHead,&gContainsText,
   },
   {
     /*tag*/                             eHTMLTag_tr,
     /*requiredAncestor*/                eHTMLTag_table, eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gTRParents,&gTREndParents,
     /*autoclose starttags and endtags*/ &gTRCloseTags,0,0,0,
     /*parent,incl,exclgroups*/          kNone, kNone, kInlineEntity,
     /*special props, prop-range*/       (kBadContentWatch|kNoStyleLeaksIn|kNoStyleLeaksOut), kNoPropRange,
-    /*special parents,kids,skip*/       &gTRParents,&gTRKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gTRParents,&gTRKids,
   },
   {
     /*tag*/                             eHTMLTag_tt,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_u,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFontStyle, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0, kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_ul,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gOLRootTags,&gOLRootTags,
     /*autoclose starttags and endtags*/ &gULAutoClose,&gULCloseTags,0,0,
     /*parent,incl,exclgroups*/          kList, (kFlowEntity|kSelf), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gULKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gULKids,
   },
   {
     /*tag*/                             eHTMLTag_var,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kPhrase, (kSelf|kInlineEntity), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
 #if defined(MOZ_MEDIA)
   {
     /*tag*/                             eHTMLTag_video,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0, 0, 0,0,
     /*parent,incl,exclgroups*/          kSpecial, (kFlowEntity|kSelf), kNone,
     /*special props, prop-range*/       0,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,&gVideoKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,&gVideoKids,
   },
 #endif
   {
     /*tag*/                             eHTMLTag_wbr,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kExtensions, kNone, kNone,
     /*special props, prop-range*/       kNonContainer|kRequiresBody,kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_xmp,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kInlineEntity|kPreformatted, kCDATA, kNone,
     /*special props, prop-range*/       kNone,kDefaultPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_text,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInBody,&gInBody,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, kNone, kNone,
     /*special props, prop-range*/       kNonContainer|kRequiresBody,kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
           // Whitespace must have a parent model of kHeadMisc to ensure that we
           // do the right thing for whitespace in the head section of a document.
           // (i.e., it must be non-exclusively a child of the head).
 
     /*tag*/                             eHTMLTag_whitespace, 
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInBody,&gInBody,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity|kHeadMisc, kNone, kNone,
     /*special props, prop-range*/       kNonContainer|kLegalOpen,kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
           // Newlines must have a parent model of kHeadMisc to ensure that we
           // do the right thing for whitespace in the head section of a document.
           // (i.e., it must be non-exclusively a child of the head).
 
     /*tag*/                             eHTMLTag_newline,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInBody,&gInBody,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity|kHeadMisc, kNone, kNone,
     /*special props, prop-range*/       kNonContainer|kLegalOpen, kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
           // Comments must have a parent model of kHeadMisc to ensure that we
           // do the right thing for whitespace in the head section of a document
           // (i.e., it must be non-exclusively a child of the head).
 
     /*tag*/                             eHTMLTag_comment,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity|kHeadMisc, kNone, kNone,
     /*special props, prop-range*/       kOmitEndTag|kLegalOpen,kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_entity,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gInBody,&gInBody,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, kNone, kNone,
     /*special props, prop-range*/       0, kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_doctypeDecl,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, kNone, kNone,
     /*special props, prop-range*/       kOmitEndTag,kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_markupDecl,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, kNone, kNone,
     /*special props, prop-range*/       kOmitEndTag,kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
     /*tag*/                             eHTMLTag_instruction,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_unknown,
     /*rootnodes,endrootnodes*/          0,0,
     /*autoclose starttags and endtags*/ 0,0,0,0,
     /*parent,incl,exclgroups*/          kFlowEntity, kNone, kNone,
     /*special props, prop-range*/       kOmitEndTag,kNoPropRange,
-    /*special parents,kids,skip*/       0,0,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            0,0,
   },
   {
           // Userdefined tags must have a parent model of kHeadMisc to ensure that
           // we do the right thing for whitespace in the head section of a document.
           // (i.e., it must be non-exclusively a child of the head).
 
     /*tag*/                             eHTMLTag_userdefined,
     /*req-parent excl-parent*/          eHTMLTag_unknown,eHTMLTag_frameset,
     /*rootnodes,endrootnodes*/          &gRootTags,&gRootTags,
     /*autoclose starttags and endtags*/ &gBodyAutoClose,0,0,0,
     /*parent,incl,exclgroups*/          (kFlowEntity|kHeadMisc), (kInlineEntity|kSelf), kNone,  // Treat userdefined as inline element - Ref bug 56245,66772
     /*special props, prop-range*/       kPreferBody, kBodyPropRange,
-    /*special parents,kids,skip*/       &gInNoframes,&gBodyKids,eHTMLTag_unknown,
-    /*contain-func*/                    0
+    /*special parents,kids*/            &gInNoframes,&gBodyKids,
   }
 };
 
 #ifdef NS_DEBUG  
 void CheckElementTable() {
   for (eHTMLTags t = eHTMLTag_unknown; t <= eHTMLTag_userdefined; t = eHTMLTags(t + 1)) {
     NS_ASSERTION(gHTMLElements[t].mTagID == t, "gHTMLElements entries does match tag list.");
   }
@@ -1462,90 +1343,16 @@ PRBool CanBeContainedLI(eHTMLTags aChild
   }    
   else {
     result=PR_TRUE;
   }
   return result;
 }
 
 /**
- * This is the default implementation, that was moved out of CNavDTD, so that it can be made
- * to behave in a more flexible manner. At this point, the code itself has not changed.
- * NOTE: This is not called YET. It's just a placeholder for future changes.
- *
- * @update	gess 10/13/00
- * @param 
- * @return
- */ 
-PRBool nsHTMLElement::CanBeContained(eHTMLTags aChildTag,nsDTDContext &aContext) const {
-  PRBool result=PR_TRUE;
-  if(!mCanBeContained) {
-
-    /* #    Interesting test cases:       Result:
-     * 1.   <UL><LI>..<B>..<LI>           inner <LI> closes outer <LI>
-     * 2.   <CENTER><DL><DT><A><CENTER>   allow nested <CENTER>
-     * 3.   <TABLE><TR><TD><TABLE>...     allow nested <TABLE>
-     * 4.   <FRAMESET> ... <FRAMESET>
-     */
-
-    //Note: This method is going away. First we need to get the elementtable to do closures right, and
-    //      therefore we must get residual style handling to work.
-
-    //the changes to this method were added to fix bug 54651...
-
-    PRInt32 theCount=aContext.GetCount();
-    result=PR_TRUE;
-
-    if(0<theCount){
-      const TagList* theRootTags=gHTMLElements[aChildTag].GetRootTags();
-      const TagList* theSpecialParents=gHTMLElements[aChildTag].GetSpecialParents();
-      if(theRootTags) {
-        PRInt32 theRootIndex=LastOf(aContext,*theRootTags);
-        PRInt32 theSPIndex=(theSpecialParents) ? LastOf(aContext,*theSpecialParents) : kNotFound;  
-        PRInt32 theChildIndex=GetIndexOfChildOrSynonym(aContext,aChildTag);
-        PRInt32 theTargetIndex=(theRootIndex>theSPIndex) ? theRootIndex : theSPIndex;
-
-        if((theTargetIndex==theCount-1) ||
-          ((theTargetIndex==theChildIndex) && gHTMLElements[aChildTag].CanContainSelf())) {
-          result=PR_TRUE;
-        }
-        else {
-        
-          result=PR_FALSE;
-
-          static eHTMLTags gTableElements[]={eHTMLTag_td,eHTMLTag_th};
-
-          PRInt32 theIndex=theCount-1;
-          while(theChildIndex<theIndex) {
-            eHTMLTags theParentTag=aContext.TagAt(theIndex--);
-            if (gHTMLElements[theParentTag].IsMemberOf(kBlockEntity)  || 
-                gHTMLElements[theParentTag].IsMemberOf(kHeading)      || 
-                gHTMLElements[theParentTag].IsMemberOf(kPreformatted) || 
-                gHTMLElements[theParentTag].IsMemberOf(kFormControl) || //added this to fix bug 44479
-                gHTMLElements[theParentTag].IsMemberOf(kList)) {
-              if(!HasOptionalEndTag(theParentTag)) {
-                result=PR_TRUE;
-                break;
-              }
-            }
-            else if(FindTagInSet(theParentTag,gTableElements,sizeof(gTableElements)/sizeof(eHTMLTag_unknown))){
-              result=PR_TRUE;  //added this to catch a case we missed; bug 57173.
-              break;
-            }
-          }
-        }
-      }
-    }
-
-  }
-  else result=(*mCanBeContained)(aChildTag,aContext);
-  return result;
-}
-
-/**
  *  Call this to find the index of a given child, or (if not found)
  *  the index of its nearest synonym.
  *   
  *  @update  gess 3/25/98
  *  @param   aTagStack -- list of open tags
  *  @param   aTag -- tag to test for containership
  *  @return  index of kNotFound
  */
@@ -1849,27 +1656,16 @@ PRBool nsHTMLElement::IsExcludableParent
 PRBool nsHTMLElement::CanOmitEndTag(void) const{
   PRBool result=!IsContainer(mTagID);
   if(!result)
     result=TestBits(mSpecialProperties,kOmitEndTag);
   return result;
 }
 
 /**
- * 
- * @update	gess 01/04/99
- * @param 
- * @return
- */
-PRBool nsHTMLElement::CanOmitStartTag(eHTMLTags aChild) const{
-  PRBool result=PR_FALSE;
-  return result;
-}
-
-/**
  * Returns whether a given tag can be a direct child of the <head> node of
  * an HTML document.
  *
  * @param aChild The tag in question.
  * @param aExclusively [out]Whether or not this tag can *only* appear in the
  *                     head (as opposed to things like <object> which can be
                        either in the body or the head).
  * @return Whether this tag can appear in the head.
--- a/parser/htmlparser/src/nsElementTable.h
+++ b/parser/htmlparser/src/nsElementTable.h
@@ -201,32 +201,28 @@ struct nsHTMLElement {
   eHTMLTags       GetCloseTargetForEndTag(nsDTDContext& aContext,PRInt32 anIndex,nsDTDMode aMode) const;
 
   const TagList*        GetSpecialChildren(void) const {return mSpecialKids;}
   const TagList*        GetSpecialParents(void) const {return mSpecialParents;}
 
   PRBool          IsMemberOf(PRInt32 aType) const;
   PRBool          ContainsSet(PRInt32 aType) const;
   PRBool          CanContainType(PRInt32 aType) const;
-  
-  eHTMLTags       GetTag(void) const {return mTagID;}
+
   PRBool          CanContain(eHTMLTags aChild,nsDTDMode aMode) const;
   PRBool          CanExclude(eHTMLTags aChild) const;
-  PRBool          CanOmitStartTag(eHTMLTags aChild) const;
   PRBool          CanOmitEndTag(void) const;
   PRBool          CanContainSelf(void) const;
   PRBool          CanAutoCloseTag(nsDTDContext& aContext,PRInt32 aIndex,eHTMLTags aTag) const;
   PRBool          HasSpecialProperty(PRInt32 aProperty) const;
   PRBool          IsSpecialParent(eHTMLTags aTag) const;
   PRBool          IsExcludableParent(eHTMLTags aParent) const;
   PRBool          SectionContains(eHTMLTags aTag,PRBool allowDepthSearch) const;
   PRBool          ShouldVerifyHierarchy() const;
 
-  PRBool          CanBeContained(eHTMLTags aParentTag,nsDTDContext &aContext) const; //default version
-
   static  PRBool  CanContain(eHTMLTags aParent,eHTMLTags aChild,nsDTDMode aMode);
   static  PRBool  IsContainer(eHTMLTags aTag) ;
   static  PRBool  IsResidualStyleTag(eHTMLTags aTag) ;
   static  PRBool  IsTextTag(eHTMLTags aTag);
   static  PRBool  IsWhitespaceTag(eHTMLTags aTag);
 
   static  PRBool  IsBlockParent(eHTMLTags aTag);
   static  PRBool  IsInlineParent(eHTMLTags aTag); 
@@ -245,18 +241,16 @@ struct nsHTMLElement {
   const TagList*        mExcludableParents; //These are the TAGS that cannot contain you
   int             mParentBits;        //defines groups that can contain this element
   int             mInclusionBits;     //defines parental and containment rules
   int             mExclusionBits;     //defines things you CANNOT contain
   int             mSpecialProperties; //used for various special purposes...
   PRUint32        mPropagateRange;    //tells us how far a parent is willing to prop. badly formed children
   const TagList*  mSpecialParents;    //These are the special tags that contain this tag (directly)
   const TagList*  mSpecialKids;       //These are the extra things you can contain
-  eHTMLTags       mSkipTarget;        //If set, then we skip all content until this tag is seen
-  ContainFunc     mCanBeContained;
 }; 
 
 extern const nsHTMLElement gHTMLElements[];
 
 //special property bits...
 static const int kPreferBody       = 0x0001; //this kHeadMisc tag prefers to be in the body if there isn't an explicit <head>
 static const int kOmitEndTag       = 0x0002; //safely ignore end tag
 static const int kLegalOpen        = 0x0004; //Lets BODY, TITLE, SCRIPT to reopen