Backed out changeset 2dcce82f9d66 because of mochitest failures
authorEhsan Akhgari <ehsan@mozilla.com>
Wed, 16 Jun 2010 22:14:11 -0400
changeset 43709 8cfc45d20852af48be522e67a3b9e4003ee4a1f5
parent 43708 2dcce82f9d660b55f3570bbb3b4ef8d3b045ec58
child 43710 7f7ba2b353acc39f29172a940bc8af9da3c53cf6
push idunknown
push userunknown
push dateunknown
milestone1.9.3a6pre
backs out2dcce82f9d660b55f3570bbb3b4ef8d3b045ec58
Backed out changeset 2dcce82f9d66 because of mochitest failures
content/base/src/nsGkAtomList.h
content/html/content/src/Makefile.in
content/html/content/src/nsGenericHTMLElement.h
content/html/content/src/nsHTMLElement.cpp
content/html/content/test/Makefile.in
content/html/content/test/test_bug389797.html
content/html/content/test/test_bug559284.html
dom/base/nsDOMClassInfo.cpp
dom/base/nsDOMClassInfoClasses.h
editor/libeditor/base/nsEditPropertyAtomList.h
editor/libeditor/html/nsHTMLEditUtils.cpp
parser/htmlparser/public/nsHTMLTagList.h
parser/htmlparser/src/nsElementTable.cpp
parser/htmlparser/src/nsHTMLTags.cpp
--- a/content/base/src/nsGkAtomList.h
+++ b/content/base/src/nsGkAtomList.h
@@ -105,19 +105,17 @@ GK_ATOM(ancestor, "ancestor")
 GK_ATOM(ancestorOrSelf, "ancestor-or-self")
 GK_ATOM(_and, "and")
 GK_ATOM(any, "any")
 GK_ATOM(applet, "applet")
 GK_ATOM(applyImports, "apply-imports")
 GK_ATOM(applyTemplates, "apply-templates")
 GK_ATOM(archive, "archive")
 GK_ATOM(area, "area")
-GK_ATOM(article, "article")
 GK_ATOM(ascending, "ascending")
-GK_ATOM(aside, "aside")
 GK_ATOM(aspectRatio, "aspect-ratio")
 GK_ATOM(assign, "assign")
 GK_ATOM(async, "async")
 GK_ATOM(attribute, "attribute")
 GK_ATOM(attributeSet, "attribute-set")
 GK_ATOM(aural, "aural")
 GK_ATOM(_auto, "auto")
 #ifdef MOZ_MEDIA
@@ -376,17 +374,16 @@ GK_ATOM(flexgroup, "flexgroup")
 GK_ATOM(floatList, "Float-list")
 GK_ATOM(floor, "floor")
 GK_ATOM(focus, "focus")
 GK_ATOM(following, "following")
 GK_ATOM(followingSibling, "following-sibling")
 GK_ATOM(font, "font")
 GK_ATOM(fontWeight, "font-weight")
 GK_ATOM(fontpicker, "fontpicker")
-GK_ATOM(footer, "footer")
 GK_ATOM(_for, "for")
 GK_ATOM(forEach, "for-each")
 GK_ATOM(form, "form")
 GK_ATOM(format, "format")
 GK_ATOM(formatNumber, "format-number")
 GK_ATOM(frame, "frame")
 GK_ATOM(frameborder, "frameborder")
 GK_ATOM(frameset, "frameset")
@@ -410,20 +407,18 @@ GK_ATOM(h6, "h6")
 GK_ATOM(handheld, "handheld")
 GK_ATOM(handheldFriendly, "HandheldFriendly")
 GK_ATOM(handler, "handler")
 GK_ATOM(handlers, "handlers")
 GK_ATOM(HARD, "HARD")
 GK_ATOM(hasSameNode, "has-same-node")
 GK_ATOM(hbox, "hbox")
 GK_ATOM(head, "head")
-GK_ATOM(header, "header")
 GK_ATOM(headers, "headers")
 GK_ATOM(height, "height")
-GK_ATOM(hgroup, "hgroup")
 GK_ATOM(hidden, "hidden")
 GK_ATOM(hidechrome, "hidechrome")
 GK_ATOM(highest, "highest")
 GK_ATOM(horizontal, "horizontal")
 GK_ATOM(hover, "hover")
 GK_ATOM(hr, "hr")
 GK_ATOM(href, "href")
 GK_ATOM(hreflang, "hreflang")
@@ -567,17 +562,16 @@ GK_ATOM(moz_opaque, "moz-opaque")
 GK_ATOM(msthemecompatible, "msthemecompatible")
 GK_ATOM(multicol, "multicol")
 GK_ATOM(multiple, "multiple")
 GK_ATOM(name, "name")
 GK_ATOM(_namespace, "namespace")
 GK_ATOM(namespaceAlias, "namespace-alias")
 GK_ATOM(namespaceUri, "namespace-uri")
 GK_ATOM(NaN, "NaN")
-GK_ATOM(nav, "nav")
 GK_ATOM(negate, "negate")
 GK_ATOM(never, "never")
 GK_ATOM(_new, "new")
 GK_ATOM(newline, "newline")
 GK_ATOM(nextBidi, "NextBidi")
 GK_ATOM(no, "no")
 GK_ATOM(noautohide, "noautohide")
 GK_ATOM(nobr, "nobr")
@@ -820,17 +814,16 @@ GK_ATOM(screenX, "screenX")
 GK_ATOM(screenY, "screenY")
 GK_ATOM(script, "script")
 GK_ATOM(scriptEnabledBeforePrintOrPreview, "scriptEnabledBeforePrintOrPreview")
 GK_ATOM(scrollbar, "scrollbar")
 GK_ATOM(scrollbarbutton, "scrollbarbutton")
 GK_ATOM(scrollbox, "scrollbox")
 GK_ATOM(scrollcorner, "scrollcorner")
 GK_ATOM(scrolling, "scrolling")
-GK_ATOM(section, "section")
 GK_ATOM(select, "select")
 GK_ATOM(selectPopupList, "selectPopupList")
 GK_ATOM(selectable, "selectable")
 GK_ATOM(selected, "selected")
 GK_ATOM(selectedIndex, "selectedIndex")
 GK_ATOM(selectedindex, "selectedindex")
 GK_ATOM(self, "self")
 GK_ATOM(seltype, "seltype")
--- a/content/html/content/src/Makefile.in
+++ b/content/html/content/src/Makefile.in
@@ -54,17 +54,16 @@ EXPORTS		= \
 
 CPPSRCS		= \
 		nsClientRect.cpp \
 		nsHTMLDNSPrefetch.cpp \
 		nsGenericHTMLElement.cpp \
 		nsFormSubmission.cpp \
 		nsImageMapUtils.cpp \
 		nsTextEditorState.cpp \
-		nsHTMLElement.cpp \
 		nsHTMLAnchorElement.cpp \
 		nsHTMLAreaElement.cpp \
 		nsHTMLBRElement.cpp \
 		nsHTMLBodyElement.cpp \
 		nsHTMLButtonElement.cpp \
 		nsHTMLCanvasElement.cpp \
 		nsHTMLDelElement.cpp \
 		nsHTMLDivElement.cpp \
--- a/content/html/content/src/nsGenericHTMLElement.h
+++ b/content/html/content/src/nsGenericHTMLElement.h
@@ -973,16 +973,17 @@ NS_NewHTML##_elementName##Element(nsINod
 
 #define NS_IMPL_NS_NEW_HTML_ELEMENT_CHECK_PARSER(_elementName)               \
 nsGenericHTMLElement*                                                        \
 NS_NewHTML##_elementName##Element(nsINodeInfo *aNodeInfo, PRUint32 aFromParser)\
 {                                                                            \
   return new nsHTML##_elementName##Element(aNodeInfo, aFromParser);          \
 }
 
+
 /**
  * A macro to implement the getter and setter for a given string
  * valued content property. The method uses the generic GetAttr and
  * SetAttr methods.
  */
 #define NS_IMPL_STRING_ATTR(_class, _method, _atom)                  \
   NS_IMETHODIMP                                                      \
   _class::Get##_method(nsAString& aValue)                            \
@@ -1309,17 +1310,16 @@ NS_NewHTML##_elementName##Element(nsINod
 #define NS_DECLARE_NS_NEW_HTML_ELEMENT_AS_SHARED(_elementName)    \
 inline nsGenericHTMLElement*                                      \
 NS_NewHTML##_elementName##Element(nsINodeInfo *aNodeInfo,         \
                                   PRUint32 aFromParser = 0)       \
 {                                                                 \
   return NS_NewHTMLSharedElement(aNodeInfo, aFromParser);         \
 }
 
-NS_DECLARE_NS_NEW_HTML_ELEMENT() // HTMLElement
 NS_DECLARE_NS_NEW_HTML_ELEMENT(Shared)
 NS_DECLARE_NS_NEW_HTML_ELEMENT(SharedList)
 NS_DECLARE_NS_NEW_HTML_ELEMENT(SharedObject)
 
 NS_DECLARE_NS_NEW_HTML_ELEMENT(Anchor)
 NS_DECLARE_NS_NEW_HTML_ELEMENT(Area)
 #if defined(MOZ_MEDIA)
 NS_DECLARE_NS_NEW_HTML_ELEMENT(Audio)
deleted file mode 100644
--- a/content/html/content/src/nsHTMLElement.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is Mozilla Foundation
- * Portions created by the Initial Developer are Copyright (C) 2010
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Mounir Lamouri <mounir.lamouri@mozilla.com> (original author)
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include "nsGenericHTMLElement.h"
-#include "nsIDOMHTMLElement.h"
-
-
-class nsHTMLElement : public nsGenericHTMLElement,
-                      public nsIDOMHTMLElement
-{
-public:
-  nsHTMLElement(nsINodeInfo *aNodeInfo);
-  virtual ~nsHTMLElement();
-
-  // nsISupports
-  NS_DECL_ISUPPORTS_INHERITED
-
-  // nsIDOMNode
-  NS_FORWARD_NSIDOMNODE(nsGenericHTMLElement::)
-
-  // nsIDOMElement
-  NS_FORWARD_NSIDOMELEMENT(nsGenericHTMLElement::)
-
-  // nsIDOMHTMLElement
-  NS_FORWARD_NSIDOMHTMLELEMENT(nsGenericHTMLElement::)
-
-  nsresult Clone(nsINodeInfo* aNodeInfo, nsINode** aResult) const;
-};
-
-NS_IMPL_NS_NEW_HTML_ELEMENT() // HTMLElement
-
-nsHTMLElement::nsHTMLElement(nsINodeInfo* aNodeInfo)
-  : nsGenericHTMLElement(aNodeInfo)
-{
-}
-
-nsHTMLElement::~nsHTMLElement()
-{
-}
-
-NS_IMPL_ADDREF_INHERITED(nsHTMLElement, nsGenericElement)
-NS_IMPL_RELEASE_INHERITED(nsHTMLElement, nsGenericElement)
-
-DOMCI_DATA(HTMLElement, nsHTMLElement)
-
-NS_INTERFACE_TABLE_HEAD(nsHTMLElement)
-  NS_HTML_CONTENT_INTERFACE_TABLE0(nsHTMLElement)
-  NS_HTML_CONTENT_INTERFACE_TABLE_TO_MAP_SEGUE(nsHTMLElement,
-                                               nsGenericHTMLElement)
-NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLElement)
-
-NS_IMPL_ELEMENT_CLONE(nsHTMLElement)
-
--- a/content/html/content/test/Makefile.in
+++ b/content/html/content/test/Makefile.in
@@ -157,16 +157,17 @@ include $(topsrcdir)/config/rules.mk
 		test_bug529859.html \
 		test_bug535043.html \
 		test_bug547850.html \
 		test_bug457800.html \
 		test_bug536891.html \
 		test_bug536895.html \
 		test_bug458037.xhtml \
 		test_bug556645.html \
+		test_bug559284.html \
 		test_bug551670.html \
 		test_bug346485.html \
 		test_bug555567.html \
 		test_bug557620.html \
 		test_bug565538.html \
 		test_bug456229.html \
 		test_bug546995-1.html \
 		test_bug546995-2.html \
--- a/content/html/content/test/test_bug389797.html
+++ b/content/html/content/test/test_bug389797.html
@@ -106,25 +106,22 @@ objectIfaces2.push("nsIImageLoadingConte
    param
    q
    spacer
    ul
    wbr
    head
    html
  */
-
 HTML_TAG("a", "Anchor", [ "nsIDOMNSHTMLAnchorElement2" ]);
 HTML_TAG("abbr", "Span");
 HTML_TAG("acronym", "Span");
 HTML_TAG("address", "Span");
 HTML_TAG("applet", "Applet", [], objectIfaces);
 HTML_TAG("area", "Area", [ "nsIDOMNSHTMLAreaElement2" ]);
-HTML_TAG("article", ""); // HTMLElement
-HTML_TAG("aside", ""); // HTMLElement
 HTML_TAG("b", "Span");
 HTML_TAG("base", "Base");
 HTML_TAG("bdo", "Span");
 HTML_TAG("bgsound", "Span");
 HTML_TAG("big", "Span");
 HTML_TAG("blink", "Span");
 HTML_TAG("blockquote", "Quote");
 HTML_TAG("body", "Body");
@@ -143,29 +140,26 @@ HTML_TAG("dfn", "Span");
 HTML_TAG("dir", "Directory");
 HTML_TAG("div", "Div");
 HTML_TAG("dl", "DList");
 HTML_TAG("dt", "Span");
 HTML_TAG("em", "Span");
 HTML_TAG("embed", "Embed", [ "nsIDOMGetSVGDocument" ], objectIfaces);
 HTML_TAG("fieldset", "FieldSet");
 HTML_TAG("font", "Font");
-HTML_TAG("footer", "") // HTMLElement
 HTML_TAG("form", "Form", [], [ "nsIWebProgressListener" ]);
 HTML_TAG("frame", "Frame", [], [ "nsIFrameLoaderOwner" ]);
 HTML_TAG("frameset", "FrameSet");
 HTML_TAG("h1", "Heading");
 HTML_TAG("h2", "Heading");
 HTML_TAG("h3", "Heading");
 HTML_TAG("h4", "Heading");
 HTML_TAG("h5", "Heading");
 HTML_TAG("h6", "Heading");
 HTML_TAG("head", "Head");
-HTML_TAG("header", "") // HTMLElement
-HTML_TAG("hgroup", "") // HTMLElement
 HTML_TAG("hr", "HR");
 HTML_TAG("html", "Html");
 HTML_TAG("i", "Span");
 HTML_TAG("iframe", "IFrame", [ "nsIDOMNSHTMLFrameElement", "nsIDOMGetSVGDocument" ],
                              [ "nsIFrameLoaderOwner" ]);
 HTML_TAG("image", "Span");
 HTML_TAG("img", "Image", [], [ "imgIDecoderObserver",
                                "nsIImageLoadingContent" ]);
@@ -181,17 +175,16 @@ HTML_TAG("legend", "Legend");
 HTML_TAG("li", "LI");
 HTML_TAG("link", "Link", [ "nsIDOMLinkStyle" ]);
 HTML_TAG("listing", "Span");
 HTML_TAG("map", "Map");
 HTML_TAG("marquee", "Div");
 HTML_TAG("menu", "Menu");
 HTML_TAG("meta", "Meta");
 HTML_TAG("multicol", "Span");
-HTML_TAG("nav", "") // HTMLElement
 HTML_TAG("nobr", "Span");
 HTML_TAG("noembed", "Div");
 HTML_TAG("noframes", "Div");
 HTML_TAG("noscript", "Div");
 HTML_TAG("object", "Object", [ "nsIDOMGetSVGDocument" ],
                              objectIfaces.concat([ "nsIImageLoadingContent" ]));
 HTML_TAG("ol", "OList");
 HTML_TAG("optgroup", "OptGroup");
@@ -199,17 +192,16 @@ HTML_TAG("option", "Option");
 HTML_TAG("p", "Paragraph");
 HTML_TAG("param", "Param");
 HTML_TAG("plaintext", "Span");
 HTML_TAG("pre", "Pre");
 HTML_TAG("q", "Quote");
 HTML_TAG("s", "Span");
 HTML_TAG("samp", "Span");
 HTML_TAG("script", "Script", [], [ "nsIScriptLoaderObserver" ]);
-HTML_TAG("section", "") // HTMLElement
 HTML_TAG("select", "Select");
 HTML_TAG("small", "Span");
 HTML_TAG("spacer", "Spacer");
 HTML_TAG("span", "Span");
 HTML_TAG("strike", "Span");
 HTML_TAG("strong", "Span");
 HTML_TAG("style", "Style", [ "nsIDOMLinkStyle" ]);
 HTML_TAG("sub", "Span");
new file mode 100644
--- /dev/null
+++ b/content/html/content/test/test_bug559284.html
@@ -0,0 +1,74 @@
+
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=559284
+-->
+<head>
+  <title>Test for Bug 559284</title>
+  <script type="application/javascript" src="/MochiKit/packed.js"></script>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=559284">Mozilla Bug 559284</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+  <section id="section"></section>
+  <nav id="nav"></nav>
+  <article id="article"></article>
+  <aside id="aside"></aside>
+  <hgroup id="hgroup"></hgroup>
+  <header id="header"></header>
+  <footer id="footer"></footer>
+</div>
+<pre id="test">
+<script type="application/javascript">
+
+/** Test for Bug 559284 **/
+  todo_is($("section").constructor, "[object HTMLElement]",
+          "Constructor should be section");
+  todo_is($("section").toString().substring(0, 19), "[object HTMLElement",
+          "Section should be HTMLElement");
+  is($("section") instanceof HTMLElement, true,
+       "Section should be instance of HTMLElement");
+  todo_is($("nav").constructor, "[object HTMLElement]",
+          "Constructor should be nav");
+  todo_is($("nav").toString().substring(0, 19), "[object HTMLElement",
+          "Nav should be HTMLElement");
+  is($("nav") instanceof HTMLElement, true,
+       "Nav should be instance of HTMLElement");
+  todo_is($("article").constructor, "[object HTMLElement]",
+          "Constructor should be article");
+  todo_is($("article").toString().substring(0, 19), "[object HTMLElement",
+          "Article should be HTMLElement");
+  is($("article") instanceof HTMLElement, true,
+       "Article should be instance of HTMLElement");
+  todo_is($("aside").constructor, "[object HTMLElement]",
+          "Constructor should be aside");
+  todo_is($("aside").toString().substring(0, 19), "[object HTMLElement",
+          "Aside should be HTMLElement");
+  is($("aside") instanceof HTMLElement, true,
+       "Aside should be instance of HTMLElement");
+  todo_is($("hgroup").constructor, "[object HTMLElement]",
+          "Constructor should be hgroup");
+  todo_is($("hgroup").toString().substring(0, 19), "[object HTMLElement",
+          "Hgroup should be HTMLElement");
+  is($("hgroup") instanceof HTMLElement, true,
+       "Hgroup should be instance of HTMLElement");
+  todo_is($("header").constructor, "[object HTMLElement]",
+          "Constructor should be header");
+  todo_is($("header").toString().substring(0, 19), "[object HTMLElement",
+          "Header should be HTMLElement");
+  is($("header") instanceof HTMLElement, true,
+       "Header should be instance of HTMLElement");
+  todo_is($("footer").constructor, "[object HTMLElement]",
+          "Constructor should be footer");
+  todo_is($("footer").toString().substring(0, 19), "[object HTMLElement",
+          "Footer should be HTMLElement");
+  is($("footer") instanceof HTMLElement, true,
+       "Footer should be instance of HTMLElement");
+</script>
+</pre>
+</body>
+</html>
--- a/dom/base/nsDOMClassInfo.cpp
+++ b/dom/base/nsDOMClassInfo.cpp
@@ -240,17 +240,16 @@
 #include "nsIDOMDocumentRange.h"
 #include "nsIDOMDocumentTraversal.h"
 #include "nsIDOMDocumentXBL.h"
 #include "nsIDOMDocumentView.h"
 #include "nsIDOMElementCSSInlineStyle.h"
 #include "nsIDOMLinkStyle.h"
 #include "nsIDOMHTMLDocument.h"
 #include "nsIDOMNSHTMLDocument.h"
-#include "nsIDOMHTMLElement.h"
 #include "nsIDOMNSHTMLElement.h"
 #include "nsIDOMHTMLAnchorElement.h"
 #include "nsIDOMNSHTMLAnchorElement2.h"
 #include "nsIDOMHTMLAppletElement.h"
 #include "nsIDOMHTMLAreaElement.h"
 #include "nsIDOMNSHTMLAreaElement2.h"
 #include "nsIDOMHTMLBRElement.h"
 #include "nsIDOMHTMLBaseElement.h"
@@ -716,18 +715,16 @@ static nsDOMClassInfoData sClassInfoData
                            nsHTMLOptionsCollectionSH,
                            ARRAY_SCRIPTABLE_FLAGS |
                            nsIXPCScriptable::WANT_SETPROPERTY)
   NS_DEFINE_CLASSINFO_DATA(HTMLCollection,
                            nsHTMLCollectionSH,
                            ARRAY_SCRIPTABLE_FLAGS)
 
   // HTML element classes
-  NS_DEFINE_CLASSINFO_DATA(HTMLElement, nsElementSH,
-                           ELEMENT_SCRIPTABLE_FLAGS)
   NS_DEFINE_CLASSINFO_DATA(HTMLAnchorElement, nsElementSH,
                            ELEMENT_SCRIPTABLE_FLAGS)
   NS_DEFINE_CLASSINFO_DATA(HTMLAppletElement, nsHTMLPluginObjElementSH,
                            EXTERNAL_OBJ_SCRIPTABLE_FLAGS)
   NS_DEFINE_CLASSINFO_DATA(HTMLAreaElement, nsElementSH,
                            ELEMENT_SCRIPTABLE_FLAGS)
   NS_DEFINE_CLASSINFO_DATA(HTMLBRElement, nsElementSH,
                            ELEMENT_SCRIPTABLE_FLAGS)
@@ -2325,22 +2322,16 @@ nsDOMClassInfo::Init()
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSHTMLOptionCollection)
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMHTMLCollection)
   DOM_CLASSINFO_MAP_END
 
   DOM_CLASSINFO_MAP_BEGIN(HTMLCollection, nsIDOMHTMLCollection)
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMHTMLCollection)
   DOM_CLASSINFO_MAP_END
 
-  DOM_CLASSINFO_MAP_BEGIN_NO_CLASS_IF(HTMLElement, nsIDOMHTMLElement)
-    DOM_CLASSINFO_MAP_ENTRY(nsIDOMHTMLElement)
-    DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSHTMLElement)
-    DOM_CLASSINFO_GENERIC_HTML_MAP_ENTRIES
-  DOM_CLASSINFO_MAP_END
-
   DOM_CLASSINFO_MAP_BEGIN(HTMLAnchorElement, nsIDOMHTMLAnchorElement)
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMHTMLAnchorElement)
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSHTMLAnchorElement)
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSHTMLAnchorElement2)
     DOM_CLASSINFO_GENERIC_HTML_MAP_ENTRIES
   DOM_CLASSINFO_MAP_END
 
   DOM_CLASSINFO_MAP_BEGIN(HTMLAppletElement, nsIDOMHTMLAppletElement)
--- a/dom/base/nsDOMClassInfoClasses.h
+++ b/dom/base/nsDOMClassInfoClasses.h
@@ -79,17 +79,16 @@ DOMCI_CLASS(PopupBlockedEvent)
 DOMCI_CLASS(OrientationEvent)
 
 // HTML classes
 DOMCI_CLASS(HTMLDocument)
 DOMCI_CLASS(HTMLOptionsCollection)
 DOMCI_CLASS(HTMLCollection)
 
 // HTML element classes
-DOMCI_CLASS(HTMLElement)
 DOMCI_CLASS(HTMLAnchorElement)
 DOMCI_CLASS(HTMLAppletElement)
 DOMCI_CLASS(HTMLAreaElement)
 DOMCI_CLASS(HTMLBRElement)
 DOMCI_CLASS(HTMLBaseElement)
 DOMCI_CLASS(HTMLBodyElement)
 DOMCI_CLASS(HTMLButtonElement)
 DOMCI_CLASS(HTMLDListElement)
--- a/editor/libeditor/base/nsEditPropertyAtomList.h
+++ b/editor/libeditor/base/nsEditPropertyAtomList.h
@@ -112,23 +112,16 @@ EDITOR_ATOM(ol, "ol")
 EDITOR_ATOM(dl, "dl")
 EDITOR_ATOM(pre, "pre")
 EDITOR_ATOM(noscript, "noscript")
 EDITOR_ATOM(form, "form")
 EDITOR_ATOM(hr, "hr")
 EDITOR_ATOM(table, "table")
 EDITOR_ATOM(fieldset, "fieldset")
 EDITOR_ATOM(address, "address")
-EDITOR_ATOM(article, "article")
-EDITOR_ATOM(aside, "aside")
-EDITOR_ATOM(footer, "footer")
-EDITOR_ATOM(header, "header")
-EDITOR_ATOM(hgroup, "hgroup")
-EDITOR_ATOM(nav, "nav")
-EDITOR_ATOM(section, "section")
   // Unclear from 
   // DTD, block?
 EDITOR_ATOM(body, "body")
 EDITOR_ATOM(head, "head")
 EDITOR_ATOM(html, "html")
 EDITOR_ATOM(tr, "tr")
 EDITOR_ATOM(td, "td")
 EDITOR_ATOM(th, "th")
--- a/editor/libeditor/html/nsHTMLEditUtils.cpp
+++ b/editor/libeditor/html/nsHTMLEditUtils.cpp
@@ -484,20 +484,19 @@ nsHTMLEditUtils::SupportsAlignAttr(nsIDO
 
 // a, applet, basefont, bdo, br, font, iframe, img, map, object, output, q,
 // script, span, sub, sup
 #define GROUP_SPECIAL          (1 << 5)
 
 // button, form, input, label, select, textarea
 #define GROUP_FORMCONTROL      (1 << 6)
 
-// address, applet, article, aside, blockquote, button, center, del, dir, div,
-// dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr,
-// iframe, ins, isindex, map, menu, nav, noframes, noscript, object, ol, p, pre,
-// table, section, ul
+// address, applet, blockquote, button, center, del, dir, div, dl, fieldset,
+// form, h1, h2, h3, h4, h5, h6, hr, iframe, ins, isindex, map, menu, noframes,
+// noscript, object, ol, p, pre, table, ul
 #define GROUP_BLOCK            (1 << 7)
 
 // frame, frameset
 #define GROUP_FRAME            (1 << 8)
 
 // col, tbody
 #define GROUP_TABLE_CONTENT    (1 << 9)
 
@@ -533,19 +532,16 @@ nsHTMLEditUtils::SupportsAlignAttr(nsIDO
 
 // text, whitespace, newline, comment
 #define GROUP_LEAF             (1 << 20)
 
 // XXX This is because the editor does sublists illegally. 
 // ol, ul
 #define GROUP_OL_UL            (1 << 21)
 
-// h1, h2, h3, h4, h5, h6
-#define GROUP_HEADING          (1 << 22)
-
 #define GROUP_INLINE_ELEMENT \
   (GROUP_FONTSTYLE | GROUP_PHRASE | GROUP_SPECIAL | GROUP_FORMCONTROL | \
    GROUP_LEAF)
 
 #define GROUP_FLOW_ELEMENT (GROUP_INLINE_ELEMENT | GROUP_BLOCK)
 
 struct nsElementInfo
 {
@@ -570,18 +566,16 @@ static const nsElementInfo kElements[eHT
   ELEM(a, PR_TRUE, PR_FALSE, GROUP_SPECIAL, GROUP_INLINE_ELEMENT),
   ELEM(abbr, PR_TRUE, PR_TRUE, GROUP_PHRASE, GROUP_INLINE_ELEMENT),
   ELEM(acronym, PR_TRUE, PR_TRUE, GROUP_PHRASE, GROUP_INLINE_ELEMENT),
   ELEM(address, PR_TRUE, PR_TRUE, GROUP_BLOCK,
        GROUP_INLINE_ELEMENT | GROUP_P),
   ELEM(applet, PR_TRUE, PR_TRUE, GROUP_SPECIAL | GROUP_BLOCK,
        GROUP_FLOW_ELEMENT | GROUP_OBJECT_CONTENT),
   ELEM(area, PR_FALSE, PR_FALSE, GROUP_MAP_CONTENT, GROUP_NONE),
-  ELEM(article, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
-  ELEM(aside, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
 #if defined(MOZ_MEDIA)
   ELEM(audio, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
 #endif
   ELEM(b, PR_TRUE, PR_TRUE, GROUP_FONTSTYLE, GROUP_INLINE_ELEMENT),
   ELEM(base, PR_FALSE, PR_FALSE, GROUP_HEAD_CONTENT, GROUP_NONE),
   ELEM(basefont, PR_FALSE, PR_FALSE, GROUP_SPECIAL, GROUP_NONE),
   ELEM(bdo, PR_TRUE, PR_TRUE, GROUP_SPECIAL, GROUP_INLINE_ELEMENT),
   ELEM(bgsound, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
@@ -606,35 +600,26 @@ static const nsElementInfo kElements[eHT
   ELEM(dir, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_LI),
   ELEM(div, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
   ELEM(dl, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_DL_CONTENT),
   ELEM(dt, PR_TRUE, PR_TRUE, GROUP_DL_CONTENT, GROUP_INLINE_ELEMENT),
   ELEM(em, PR_TRUE, PR_TRUE, GROUP_PHRASE, GROUP_INLINE_ELEMENT),
   ELEM(embed, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
   ELEM(fieldset, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
   ELEM(font, PR_TRUE, PR_TRUE, GROUP_SPECIAL, GROUP_INLINE_ELEMENT),
-  ELEM(footer, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
   ELEM(form, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
   ELEM(frame, PR_FALSE, PR_FALSE, GROUP_FRAME, GROUP_NONE),
   ELEM(frameset, PR_TRUE, PR_TRUE, GROUP_FRAME, GROUP_FRAME),
-  ELEM(h1, PR_TRUE, PR_FALSE, GROUP_BLOCK | GROUP_HEADING,
-       GROUP_INLINE_ELEMENT),
-  ELEM(h2, PR_TRUE, PR_FALSE, GROUP_BLOCK | GROUP_HEADING,
-       GROUP_INLINE_ELEMENT),
-  ELEM(h3, PR_TRUE, PR_FALSE, GROUP_BLOCK | GROUP_HEADING,
-       GROUP_INLINE_ELEMENT),
-  ELEM(h4, PR_TRUE, PR_FALSE, GROUP_BLOCK | GROUP_HEADING,
-       GROUP_INLINE_ELEMENT),
-  ELEM(h5, PR_TRUE, PR_FALSE, GROUP_BLOCK | GROUP_HEADING,
-       GROUP_INLINE_ELEMENT),
-  ELEM(h6, PR_TRUE, PR_FALSE, GROUP_BLOCK | GROUP_HEADING,
-       GROUP_INLINE_ELEMENT),
+  ELEM(h1, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_INLINE_ELEMENT),
+  ELEM(h2, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_INLINE_ELEMENT),
+  ELEM(h3, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_INLINE_ELEMENT),
+  ELEM(h4, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_INLINE_ELEMENT),
+  ELEM(h5, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_INLINE_ELEMENT),
+  ELEM(h6, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_INLINE_ELEMENT),
   ELEM(head, PR_TRUE, PR_FALSE, GROUP_TOPLEVEL, GROUP_HEAD_CONTENT),
-  ELEM(header, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
-  ELEM(hgroup, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_HEADING),
   ELEM(hr, PR_FALSE, PR_FALSE, GROUP_BLOCK, GROUP_NONE),
   ELEM(html, PR_TRUE, PR_FALSE, GROUP_TOPLEVEL, GROUP_TOPLEVEL),
   ELEM(i, PR_TRUE, PR_TRUE, GROUP_FONTSTYLE, GROUP_INLINE_ELEMENT),
   ELEM(iframe, PR_TRUE, PR_TRUE, GROUP_SPECIAL | GROUP_BLOCK,
        GROUP_FLOW_ELEMENT),
   ELEM(image, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
   ELEM(img, PR_FALSE, PR_FALSE, GROUP_SPECIAL, GROUP_NONE),
   ELEM(input, PR_FALSE, PR_FALSE, GROUP_FORMCONTROL, GROUP_NONE),
@@ -648,17 +633,16 @@ static const nsElementInfo kElements[eHT
   ELEM(li, PR_TRUE, PR_FALSE, GROUP_LI, GROUP_FLOW_ELEMENT),
   ELEM(link, PR_FALSE, PR_FALSE, GROUP_HEAD_CONTENT, GROUP_NONE),
   ELEM(listing, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
   ELEM(map, PR_TRUE, PR_TRUE, GROUP_SPECIAL, GROUP_BLOCK | GROUP_MAP_CONTENT),
   ELEM(marquee, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
   ELEM(menu, PR_TRUE, PR_FALSE, GROUP_BLOCK, GROUP_LI),
   ELEM(meta, PR_FALSE, PR_FALSE, GROUP_HEAD_CONTENT, GROUP_NONE),
   ELEM(multicol, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
-  ELEM(nav, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
   ELEM(nobr, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
   ELEM(noembed, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
   ELEM(noframes, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
   ELEM(noscript, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
   ELEM(object, PR_TRUE, PR_TRUE, GROUP_SPECIAL | GROUP_BLOCK,
        GROUP_FLOW_ELEMENT | GROUP_OBJECT_CONTENT),
   // XXX Can contain self and ul because editor does sublists illegally.
   ELEM(ol, PR_TRUE, PR_TRUE, GROUP_BLOCK | GROUP_OL_UL,
@@ -672,17 +656,16 @@ static const nsElementInfo kElements[eHT
   ELEM(param, PR_FALSE, PR_FALSE, GROUP_OBJECT_CONTENT, GROUP_NONE),
   ELEM(plaintext, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
   ELEM(pre, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_INLINE_ELEMENT),
   ELEM(q, PR_TRUE, PR_TRUE, GROUP_SPECIAL, GROUP_INLINE_ELEMENT),
   ELEM(s, PR_TRUE, PR_TRUE, GROUP_FONTSTYLE, GROUP_INLINE_ELEMENT),
   ELEM(samp, PR_TRUE, PR_TRUE, GROUP_PHRASE, GROUP_INLINE_ELEMENT),
   ELEM(script, PR_TRUE, PR_FALSE, GROUP_HEAD_CONTENT | GROUP_SPECIAL,
        GROUP_LEAF),
-  ELEM(section, PR_TRUE, PR_TRUE, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
   ELEM(select, PR_TRUE, PR_FALSE, GROUP_FORMCONTROL, GROUP_SELECT_CONTENT),
   ELEM(small, PR_TRUE, PR_TRUE, GROUP_FONTSTYLE, GROUP_INLINE_ELEMENT),
 #if defined(MOZ_MEDIA)
   ELEM(source, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
 #endif
   ELEM(spacer, PR_FALSE, PR_FALSE, GROUP_NONE, GROUP_NONE),
   ELEM(span, PR_TRUE, PR_TRUE, GROUP_SPECIAL, GROUP_INLINE_ELEMENT),
   ELEM(strike, PR_TRUE, PR_TRUE, GROUP_FONTSTYLE, GROUP_INLINE_ELEMENT),
--- a/parser/htmlparser/public/nsHTMLTagList.h
+++ b/parser/htmlparser/public/nsHTMLTagList.h
@@ -64,18 +64,16 @@
 
  ******/
 HTML_TAG(a, Anchor)
 HTML_TAG(abbr, Span)
 HTML_TAG(acronym, Span)
 HTML_TAG(address, Span)
 HTML_TAG(applet, SharedObject)
 HTML_TAG(area, Area)
-HTML_TAG(article, ) // HTMLElement instance
-HTML_TAG(aside, ) // HTMLElement instance
 #if defined(MOZ_MEDIA)
 HTML_TAG(audio, Audio)
 #endif
 HTML_TAG(b, Span)
 HTML_TAG(base, Shared)
 HTML_TAG(basefont, Span)
 HTML_TAG(bdo, Span)
 HTML_TAG(bgsound, Span)
@@ -98,29 +96,26 @@ HTML_TAG(dfn, Span)
 HTML_TAG(dir, Shared)
 HTML_TAG(div, Div)
 HTML_TAG(dl, SharedList)
 HTML_TAG(dt, Span)
 HTML_TAG(em, Span)
 HTML_TAG(embed, SharedObject)
 HTML_TAG(fieldset, FieldSet)
 HTML_TAG(font, Font)
-HTML_TAG(footer, ) // HTMLElement instance
 HTML_TAG(form, Form)
 HTML_TAG(frame, Frame)
 HTML_TAG(frameset, FrameSet)
 HTML_TAG(h1, Heading)
 HTML_TAG(h2, Heading)
 HTML_TAG(h3, Heading)
 HTML_TAG(h4, Heading)
 HTML_TAG(h5, Heading)
 HTML_TAG(h6, Heading)
 HTML_TAG(head, Shared)
-HTML_TAG(header, ) // HTMLElement instance
-HTML_TAG(hgroup, ) // HTMLElement instance
 HTML_TAG(hr, HR)
 HTML_TAG(html, Shared)
 HTML_TAG(i, Span)
 HTML_TAG(iframe, IFrame)
 HTML_TAG(image, Span)
 HTML_TAG(img, Image)
 HTML_TAG(input, Input)
 HTML_TAG(ins, Mod)
@@ -132,17 +127,16 @@ HTML_TAG(legend, Legend)
 HTML_TAG(li, LI)
 HTML_TAG(link, Link)
 HTML_TAG(listing, Span)
 HTML_TAG(map, Map)
 HTML_TAG(marquee, Div)
 HTML_TAG(menu, Shared)
 HTML_TAG(meta, Meta)
 HTML_TAG(multicol, Span)
-HTML_TAG(nav, ) // HTMLElement instance
 HTML_TAG(nobr, Span)
 HTML_TAG(noembed, Div)
 HTML_TAG(noframes, Div)
 HTML_TAG(noscript, Div)
 HTML_TAG(object, Object)
 HTML_TAG(ol, SharedList)
 HTML_TAG(optgroup, OptGroup)
 HTML_TAG(option, Option)
@@ -150,17 +144,16 @@ HTML_TAG(output, Output)
 HTML_TAG(p, Paragraph)
 HTML_TAG(param, Shared)
 HTML_TAG(plaintext, Span)
 HTML_TAG(pre, Pre)
 HTML_TAG(q, Shared)
 HTML_TAG(s, Span)
 HTML_TAG(samp, Span)
 HTML_TAG(script, Script)
-HTML_TAG(section, ) // HTMLElement instance
 HTML_TAG(select, Select)
 HTML_TAG(small, Span)
 #if defined(MOZ_MEDIA)
 HTML_TAG(source, Source)
 #endif
 HTML_TAG(spacer, Shared)
 HTML_TAG(span, Span)
 HTML_TAG(strike, Span)
--- a/parser/htmlparser/src/nsElementTable.cpp
+++ b/parser/htmlparser/src/nsElementTable.cpp
@@ -245,34 +245,16 @@ const nsHTMLElement gHTMLElements[] = {
     /*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*/            &gAreaParent,0,
   },
-  {
-    /*tag*/                             eHTMLTag_article,
-    /*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*/            0,0,
-  },
-  {
-    /*tag*/                             eHTMLTag_aside,
-    /*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*/            0,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,
@@ -536,25 +518,16 @@ const nsHTMLElement gHTMLElements[] = {
     /*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*/            0,&gFontKids,
   },
   {
-    /*tag*/                             eHTMLTag_footer,
-    /*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*/            0,0,
-  },
-  {
     /*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*/            0,&gFormKids,
   },
@@ -636,34 +609,16 @@ const nsHTMLElement gHTMLElements[] = {
     /*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*/            &gInHTML,0,
   },
   {
-    /*tag*/                             eHTMLTag_header,
-    /*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*/            0,0,
-  },
-  {
-    /*tag*/                             eHTMLTag_hgroup,
-    /*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*/            0,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*/            0,0,
   },
@@ -843,25 +798,16 @@ const nsHTMLElement gHTMLElements[] = {
     /*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*/            0,0,
   },
   {
-    /*tag*/                             eHTMLTag_nav,
-    /*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*/            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*/            0,0,
   },
@@ -1005,25 +951,16 @@ const nsHTMLElement gHTMLElements[] = {
     /*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*/            0,&gContainsText,
   },
   {
-    /*tag*/                             eHTMLTag_section,
-    /*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*/            0,0,
-  },
-  {
     /*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*/            &gInForm,&gContainsOpts,
   },
--- a/parser/htmlparser/src/nsHTMLTags.cpp
+++ b/parser/htmlparser/src/nsHTMLTags.cpp
@@ -52,20 +52,16 @@ static const PRUnichar sHTMLTagUnicodeNa
 static const PRUnichar sHTMLTagUnicodeName_acronym[] =
   {'a', 'c', 'r', 'o', 'n', 'y', 'm', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_address[] =
   {'a', 'd', 'd', 'r', 'e', 's', 's', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_applet[] =
   {'a', 'p', 'p', 'l', 'e', 't', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_area[] =
   {'a', 'r', 'e', 'a', '\0'};
-static const PRUnichar sHTMLTagUnicodeName_article[] =
-  {'a', 'r', 't', 'i', 'c', 'l', 'e', '\0'};
-static const PRUnichar sHTMLTagUnicodeName_aside[] =
-  {'a', 's', 'i', 'd', 'e', '\0'};
 #if defined(MOZ_MEDIA)
 static const PRUnichar sHTMLTagUnicodeName_audio[] =
   {'a', 'u', 'd', 'i', 'o', '\0'};
 #endif
 static const PRUnichar sHTMLTagUnicodeName_b[] =
   {'b', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_base[] =
   {'b', 'a', 's', 'e', '\0'};
@@ -120,18 +116,16 @@ static const PRUnichar sHTMLTagUnicodeNa
 static const PRUnichar sHTMLTagUnicodeName_em[] =
   {'e', 'm', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_embed[] =
   {'e', 'm', 'b', 'e', 'd', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_fieldset[] =
   {'f', 'i', 'e', 'l', 'd', 's', 'e', 't', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_font[] =
   {'f', 'o', 'n', 't', '\0'};
-static const PRUnichar sHTMLTagUnicodeName_footer[] =
-  {'f', 'o', 'o', 't', 'e', 'r', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_form[] =
   {'f', 'o', 'r', 'm', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_frame[] =
   {'f', 'r', 'a', 'm', 'e', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_frameset[] =
   {'f', 'r', 'a', 'm', 'e', 's', 'e', 't', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_h1[] =
   {'h', '1', '\0'};
@@ -142,20 +136,16 @@ static const PRUnichar sHTMLTagUnicodeNa
 static const PRUnichar sHTMLTagUnicodeName_h4[] =
   {'h', '4', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_h5[] =
   {'h', '5', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_h6[] =
   {'h', '6', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_head[] =
   {'h', 'e', 'a', 'd', '\0'};
-static const PRUnichar sHTMLTagUnicodeName_header[] =
-  {'h', 'e', 'a', 'd', 'e', 'r', '\0'};
-static const PRUnichar sHTMLTagUnicodeName_hgroup[] =
-  {'h', 'g', 'r', 'o', 'u', 'p', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_hr[] =
   {'h', 'r', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_html[] =
   {'h', 't', 'm', 'l', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_i[] =
   {'i', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_iframe[] =
   {'i', 'f', 'r', 'a', 'm', 'e', '\0'};
@@ -188,18 +178,16 @@ static const PRUnichar sHTMLTagUnicodeNa
 static const PRUnichar sHTMLTagUnicodeName_marquee[] =
   {'m', 'a', 'r', 'q', 'u', 'e', 'e', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_menu[] =
   {'m', 'e', 'n', 'u', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_meta[] =
   {'m', 'e', 't', 'a', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_multicol[] =
   {'m', 'u', 'l', 't', 'i', 'c', 'o', 'l', '\0'};
-static const PRUnichar sHTMLTagUnicodeName_nav[] =
-  {'n', 'a', 'v', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_nobr[] =
   {'n', 'o', 'b', 'r', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_noembed[] =
   {'n', 'o', 'e', 'm', 'b', 'e', 'd', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_noframes[] =
   {'n', 'o', 'f', 'r', 'a', 'm', 'e', 's', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_noscript[] =
   {'n', 'o', 's', 'c', 'r', 'i', 'p', 't', '\0'};
@@ -224,18 +212,16 @@ static const PRUnichar sHTMLTagUnicodeNa
 static const PRUnichar sHTMLTagUnicodeName_q[] =
   {'q', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_s[] =
   {'s', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_samp[] =
   {'s', 'a', 'm', 'p', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_script[] =
   {'s', 'c', 'r', 'i', 'p', 't', '\0'};
-static const PRUnichar sHTMLTagUnicodeName_section[] =
-  {'s', 'e', 'c', 't', 'i', 'o', 'n', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_select[] =
   {'s', 'e', 'l', 'e', 'c', 't', '\0'};
 static const PRUnichar sHTMLTagUnicodeName_small[] =
   {'s', 'm', 'a', 'l', 'l', '\0'};
 #if defined(MOZ_MEDIA)
 static const PRUnichar sHTMLTagUnicodeName_source[] =
   {'s', 'o', 'u', 'r', 'c', 'e', '\0'};
 #endif