Bug 1390209 - Remove unused nsIDOMHTML*Element interfaces. r?qdot draft
authorMasatoshi Kimura <VYV03354@nifty.ne.jp>
Tue, 15 Aug 2017 01:31:47 +0900
changeset 650804 879dccc6b07833d9f738d5fb76d8d3ec2613b579
parent 650803 0fe95a475665fa97626ecc43864ebd8364b68b2a
child 650805 f27cb3e1f1b8245046dfe6e3cea3d4748f116f3e
push id75501
push userVYV03354@nifty.ne.jp
push dateTue, 22 Aug 2017 22:38:55 +0000
reviewersqdot
bugs1390209
milestone57.0a1
Bug 1390209 - Remove unused nsIDOMHTML*Element interfaces. r?qdot MozReview-Commit-ID: DagD3IHhRZy
accessible/html/HTMLImageMapAccessible.h
dom/html/HTMLBodyElement.cpp
dom/html/HTMLBodyElement.h
dom/html/HTMLFieldSetElement.cpp
dom/html/HTMLFieldSetElement.h
dom/html/HTMLFrameSetElement.cpp
dom/html/HTMLFrameSetElement.h
dom/html/HTMLHRElement.cpp
dom/html/HTMLHRElement.h
dom/html/HTMLImageElement.cpp
dom/html/HTMLLIElement.cpp
dom/html/HTMLLIElement.h
dom/html/HTMLLabelElement.cpp
dom/html/HTMLLabelElement.h
dom/html/HTMLMapElement.cpp
dom/html/HTMLMapElement.h
dom/html/HTMLMenuElement.cpp
dom/html/HTMLMenuElement.h
dom/html/HTMLMetaElement.cpp
dom/html/HTMLMetaElement.h
dom/html/HTMLOptGroupElement.cpp
dom/html/HTMLOptGroupElement.h
dom/html/HTMLOptionElement.cpp
dom/html/HTMLOptionsCollection.cpp
dom/html/HTMLParagraphElement.cpp
dom/html/HTMLParagraphElement.h
dom/html/HTMLPictureElement.cpp
dom/html/HTMLPictureElement.h
dom/html/HTMLPreElement.cpp
dom/html/HTMLPreElement.h
dom/html/HTMLSharedElement.cpp
dom/html/HTMLSharedElement.h
dom/html/HTMLSharedListElement.cpp
dom/html/HTMLSharedListElement.h
dom/html/HTMLStyleElement.cpp
dom/html/HTMLStyleElement.h
dom/html/HTMLTableCellElement.cpp
dom/html/HTMLTableCellElement.h
dom/html/nsGenericHTMLElement.cpp
dom/html/nsGenericHTMLElement.h
dom/html/nsHTMLContentSink.cpp
dom/html/nsHTMLDocument.cpp
dom/interfaces/html/moz.build
dom/interfaces/html/nsIDOMHTMLBodyElement.idl
dom/interfaces/html/nsIDOMHTMLDirectoryElement.idl
dom/interfaces/html/nsIDOMHTMLDocument.idl
dom/interfaces/html/nsIDOMHTMLFieldSetElement.idl
dom/interfaces/html/nsIDOMHTMLFrameSetElement.idl
dom/interfaces/html/nsIDOMHTMLHRElement.idl
dom/interfaces/html/nsIDOMHTMLHeadElement.idl
dom/interfaces/html/nsIDOMHTMLLIElement.idl
dom/interfaces/html/nsIDOMHTMLLabelElement.idl
dom/interfaces/html/nsIDOMHTMLMapElement.idl
dom/interfaces/html/nsIDOMHTMLMenuElement.idl
dom/interfaces/html/nsIDOMHTMLMetaElement.idl
dom/interfaces/html/nsIDOMHTMLOListElement.idl
dom/interfaces/html/nsIDOMHTMLOptGroupElement.idl
dom/interfaces/html/nsIDOMHTMLParagraphElement.idl
dom/interfaces/html/nsIDOMHTMLPictureElement.idl
dom/interfaces/html/nsIDOMHTMLPreElement.idl
dom/interfaces/html/nsIDOMHTMLQuoteElement.idl
dom/interfaces/html/nsIDOMHTMLStyleElement.idl
dom/interfaces/html/nsIDOMHTMLTableCellElement.idl
dom/interfaces/html/nsIDOMHTMLUListElement.idl
gfx/layers/apz/util/DoubleTapToZoom.cpp
layout/base/nsDocumentViewer.cpp
layout/printing/nsPrintEngine.cpp
layout/xul/nsImageBoxFrame.cpp
xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
--- a/accessible/html/HTMLImageMapAccessible.h
+++ b/accessible/html/HTMLImageMapAccessible.h
@@ -3,17 +3,16 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_a11y_HTMLImageMapAccessible_h__
 #define mozilla_a11y_HTMLImageMapAccessible_h__
 
 #include "HTMLLinkAccessible.h"
 #include "ImageAccessibleWrap.h"
-#include "nsIDOMHTMLMapElement.h"
 
 namespace mozilla {
 namespace a11y {
 
 /**
  * Used for HTML image maps.
  */
 class HTMLImageMapAccessible final : public ImageAccessibleWrap
--- a/dom/html/HTMLBodyElement.cpp
+++ b/dom/html/HTMLBodyElement.cpp
@@ -33,123 +33,20 @@ HTMLBodyElement::~HTMLBodyElement()
 }
 
 JSObject*
 HTMLBodyElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto)
 {
   return HTMLBodyElementBinding::Wrap(aCx, this, aGivenProto);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLBodyElement, nsGenericHTMLElement,
-                            nsIDOMHTMLBodyElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLBodyElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLBodyElement)
 
-NS_IMETHODIMP
-HTMLBodyElement::SetBackground(const nsAString& aBackground)
-{
-  ErrorResult rv;
-  SetBackground(aBackground, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::GetBackground(nsAString& aBackground)
-{
-  DOMString background;
-  GetBackground(background);
-  background.ToString(aBackground);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::SetVLink(const nsAString& aVLink)
-{
-  ErrorResult rv;
-  SetVLink(aVLink, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::GetVLink(nsAString& aVLink)
-{
-  DOMString vLink;
-  GetVLink(vLink);
-  vLink.ToString(aVLink);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::SetALink(const nsAString& aALink)
-{
-  ErrorResult rv;
-  SetALink(aALink, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::GetALink(nsAString& aALink)
-{
-  DOMString aLink;
-  GetALink(aLink);
-  aLink.ToString(aALink);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::SetLink(const nsAString& aLink)
-{
-  ErrorResult rv;
-  SetLink(aLink, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::GetLink(nsAString& aLink)
-{
-  DOMString link;
-  GetLink(link);
-  link.ToString(aLink);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::SetText(const nsAString& aText)
-{
-  ErrorResult rv;
-  SetText(aText, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::GetText(nsAString& aText)
-{
-  DOMString text;
-  GetText(text);
-  text.ToString(aText);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::SetBgColor(const nsAString& aBgColor)
-{
-  ErrorResult rv;
-  SetBgColor(aBgColor, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLBodyElement::GetBgColor(nsAString& aBgColor)
-{
-  DOMString bgColor;
-  GetBgColor(bgColor);
-  bgColor.ToString(aBgColor);
-  return NS_OK;
-}
-
 bool
 HTMLBodyElement::ParseAttribute(int32_t aNamespaceID,
                                 nsIAtom* aAttribute,
                                 const nsAString& aValue,
                                 nsAttrValue& aResult)
 {
   if (aNamespaceID == kNameSpaceID_None) {
     if (aAttribute == nsGkAtoms::bgcolor ||
--- a/dom/html/HTMLBodyElement.h
+++ b/dom/html/HTMLBodyElement.h
@@ -3,97 +3,112 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 #ifndef HTMLBodyElement_h___
 #define HTMLBodyElement_h___
 
 #include "mozilla/Attributes.h"
 #include "nsGenericHTMLElement.h"
-#include "nsIDOMHTMLBodyElement.h"
 #include "nsIStyleRule.h"
 
 namespace mozilla {
 
 class TextEditor;
 
 namespace dom {
 
 class OnBeforeUnloadEventHandlerNonNull;
 
-class HTMLBodyElement final : public nsGenericHTMLElement,
-                              public nsIDOMHTMLBodyElement
+class HTMLBodyElement final : public nsGenericHTMLElement
 {
 public:
   using Element::GetText;
   using Element::SetText;
 
   explicit HTMLBodyElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLBodyElement
-  NS_DECL_NSIDOMHTMLBODYELEMENT
-
   // Event listener stuff; we need to declare only the ones we need to
   // forward to window that don't come from nsIDOMHTMLBodyElement.
 #define EVENT(name_, id_, type_, struct_) /* nothing; handled by the shim */
 #define WINDOW_EVENT_HELPER(name_, type_)                               \
   type_* GetOn##name_();                                                \
   void SetOn##name_(type_* handler);
 #define WINDOW_EVENT(name_, id_, type_, struct_)                        \
   WINDOW_EVENT_HELPER(name_, EventHandlerNonNull)
 #define BEFOREUNLOAD_EVENT(name_, id_, type_, struct_)                  \
   WINDOW_EVENT_HELPER(name_, OnBeforeUnloadEventHandlerNonNull)
 #include "mozilla/EventNameList.h" // IWYU pragma: keep
 #undef BEFOREUNLOAD_EVENT
 #undef WINDOW_EVENT
 #undef WINDOW_EVENT_HELPER
 #undef EVENT
 
-  void GetText(DOMString& aText)
+  void GetText(nsAString& aText)
   {
     GetHTMLAttr(nsGkAtoms::text, aText);
   }
+  void SetText(const nsAString& aText)
+  {
+    SetHTMLAttr(nsGkAtoms::text, aText);
+  }
   void SetText(const nsAString& aText, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::text, aText, aError);
   }
-  void GetLink(DOMString& aLink)
+  void GetLink(nsAString& aLink)
   {
     GetHTMLAttr(nsGkAtoms::link, aLink);
   }
+  void SetLink(const nsAString& aLink)
+  {
+    SetHTMLAttr(nsGkAtoms::link, aLink);
+  }
   void SetLink(const nsAString& aLink, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::link, aLink, aError);
   }
-  void GetVLink(DOMString& aVLink)
+  void GetVLink(nsAString& aVLink)
   {
     GetHTMLAttr(nsGkAtoms::vlink, aVLink);
   }
+  void SetVLink(const nsAString& aVLink)
+  {
+    SetHTMLAttr(nsGkAtoms::vlink, aVLink);
+  }
   void SetVLink(const nsAString& aVLink, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::vlink, aVLink, aError);
   }
-  void GetALink(DOMString& aALink)
+  void GetALink(nsAString& aALink)
   {
     GetHTMLAttr(nsGkAtoms::alink, aALink);
   }
+  void SetALink(const nsAString& aALink)
+  {
+    SetHTMLAttr(nsGkAtoms::alink, aALink);
+  }
   void SetALink(const nsAString& aALink, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::alink, aALink, aError);
   }
-  void GetBgColor(DOMString& aBgColor)
+  void GetBgColor(nsAString& aBgColor)
   {
     GetHTMLAttr(nsGkAtoms::bgcolor, aBgColor);
   }
+  void SetBgColor(const nsAString& aBgColor)
+  {
+    SetHTMLAttr(nsGkAtoms::bgcolor, aBgColor);
+  }
   void SetBgColor(const nsAString& aBgColor, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::bgcolor, aBgColor, aError);
   }
   void GetBackground(DOMString& aBackground)
   {
     GetHTMLAttr(nsGkAtoms::background, aBackground);
   }
--- a/dom/html/HTMLFieldSetElement.cpp
+++ b/dom/html/HTMLFieldSetElement.cpp
@@ -44,26 +44,22 @@ NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLF
                                    mValidity, mElements)
 
 NS_IMPL_ADDREF_INHERITED(HTMLFieldSetElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLFieldSetElement, Element)
 
 // QueryInterface implementation for HTMLFieldSetElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLFieldSetElement)
   NS_INTERFACE_TABLE_INHERITED(HTMLFieldSetElement,
-                               nsIDOMHTMLFieldSetElement,
                                nsIConstraintValidation)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLFormElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLFieldSetElement)
 
 
-NS_IMPL_BOOL_ATTR(HTMLFieldSetElement, Disabled, disabled)
-NS_IMPL_STRING_ATTR(HTMLFieldSetElement, Name, name)
-
 bool
 HTMLFieldSetElement::IsDisabledForEvents(EventMessage aMessage)
 {
   return IsElementDisabledForEvents(aMessage, nullptr);
 }
 
 // nsIContent
 nsresult
@@ -101,47 +97,32 @@ HTMLFieldSetElement::AfterSetAttr(int32_
       }
     }
   }
 
   return nsGenericHTMLFormElement::AfterSetAttr(aNameSpaceID, aName,
                                                 aValue, aOldValue, aNotify);
 }
 
-// nsIDOMHTMLFieldSetElement
-
-NS_IMETHODIMP
-HTMLFieldSetElement::GetForm(nsIDOMHTMLFormElement** aForm)
-{
-  return nsGenericHTMLFormElement::GetForm(aForm);
-}
-
 NS_IMETHODIMP
 HTMLFieldSetElement::GetType(nsAString& aType)
 {
   aType.AssignLiteral("fieldset");
   return NS_OK;
 }
 
 /* static */
 bool
 HTMLFieldSetElement::MatchListedElements(Element* aElement, int32_t aNamespaceID,
                                          nsIAtom* aAtom, void* aData)
 {
   nsCOMPtr<nsIFormControl> formControl = do_QueryInterface(aElement);
   return formControl;
 }
 
-NS_IMETHODIMP
-HTMLFieldSetElement::GetElements(nsIDOMHTMLCollection** aElements)
-{
-  NS_ADDREF(*aElements = Elements());
-  return NS_OK;
-}
-
 nsIHTMLCollection*
 HTMLFieldSetElement::Elements()
 {
   if (!mElements) {
     mElements = new nsContentList(this, MatchListedElements, nullptr, nullptr,
                                   true);
   }
 
--- a/dom/html/HTMLFieldSetElement.h
+++ b/dom/html/HTMLFieldSetElement.h
@@ -4,44 +4,39 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLFieldSetElement_h
 #define mozilla_dom_HTMLFieldSetElement_h
 
 #include "mozilla/Attributes.h"
 #include "nsGenericHTMLElement.h"
-#include "nsIDOMHTMLFieldSetElement.h"
 #include "nsIConstraintValidation.h"
 #include "mozilla/dom/HTMLFormElement.h"
 #include "mozilla/dom/ValidityState.h"
 
 namespace mozilla {
 class EventChainPreVisitor;
 namespace dom {
 
 class HTMLFieldSetElement final : public nsGenericHTMLFormElement,
-                                  public nsIDOMHTMLFieldSetElement,
                                   public nsIConstraintValidation
 {
 public:
   using nsGenericHTMLFormElement::GetForm;
   using nsIConstraintValidation::GetValidationMessage;
   using nsIConstraintValidation::SetCustomValidity;
 
   explicit HTMLFieldSetElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLFieldSetElement, fieldset)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLFieldSetElement
-  NS_DECL_NSIDOMHTMLFIELDSETELEMENT
-
   // nsIContent
   virtual nsresult GetEventTargetParent(
                      EventChainPreVisitor& aVisitor) override;
   virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
                                 const nsAttrValue* aValue,
                                 const nsAttrValue* aOldValue,
                                 bool aNotify) override;
 
@@ -70,24 +65,27 @@ public:
   {
     return GetBoolAttr(nsGkAtoms::disabled);
   }
   void SetDisabled(bool aValue, ErrorResult& aRv)
   {
     SetHTMLBoolAttr(nsGkAtoms::disabled, aValue, aRv);
   }
 
-  // XPCOM GetName is OK for us
+  void GetName(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::name, aValue);
+  }
 
   void SetName(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::name, aValue, aRv);
   }
 
-  // XPCOM GetType is OK for us
+  NS_IMETHOD GetType(nsAString & aType);
 
   nsIHTMLCollection* Elements();
 
   // XPCOM WillValidate is OK for us
 
   // XPCOM Validity is OK for us
 
   // XPCOM GetValidationMessage is OK for us
--- a/dom/html/HTMLFrameSetElement.cpp
+++ b/dom/html/HTMLFrameSetElement.cpp
@@ -21,55 +21,20 @@ HTMLFrameSetElement::~HTMLFrameSetElemen
 }
 
 JSObject*
 HTMLFrameSetElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto)
 {
   return HTMLFrameSetElementBinding::Wrap(aCx, this, aGivenProto);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLFrameSetElement, nsGenericHTMLElement,
-                            nsIDOMHTMLFrameSetElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLFrameSetElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLFrameSetElement)
 
-NS_IMETHODIMP
-HTMLFrameSetElement::SetCols(const nsAString& aCols)
-{
-  ErrorResult rv;
-  SetCols(aCols, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLFrameSetElement::GetCols(nsAString& aCols)
-{
-  DOMString cols;
-  GetCols(cols);
-  cols.ToString(aCols);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLFrameSetElement::SetRows(const nsAString& aRows)
-{
-  ErrorResult rv;
-  SetRows(aRows, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLFrameSetElement::GetRows(nsAString& aRows)
-{
-  DOMString rows;
-  GetRows(rows);
-  rows.ToString(aRows);
-  return NS_OK;
-}
-
 nsresult
 HTMLFrameSetElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
                                    const nsAttrValueOrString* aValue,
                                    bool aNotify)
 {
   /* The main goal here is to see whether the _number_ of rows or
    * columns has changed. If it has, we need to reframe; otherwise
    * we want to reflow.
--- a/dom/html/HTMLFrameSetElement.h
+++ b/dom/html/HTMLFrameSetElement.h
@@ -4,17 +4,16 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef HTMLFrameSetElement_h
 #define HTMLFrameSetElement_h
 
 #include "mozilla/Attributes.h"
 #include "mozilla/UniquePtr.h"
-#include "nsIDOMHTMLFrameSetElement.h"
 #include "nsGenericHTMLElement.h"
 
 /**
  * The nsFramesetUnit enum is used to denote the type of each entry
  * in the row or column spec.
  */
 enum nsFramesetUnit {
   eFramesetUnit_Fixed = 0,
@@ -39,37 +38,33 @@ struct nsFramesetSpec {
 
 //----------------------------------------------------------------------
 
 namespace mozilla {
 namespace dom {
 
 class OnBeforeUnloadEventHandlerNonNull;
 
-class HTMLFrameSetElement final : public nsGenericHTMLElement,
-                                  public nsIDOMHTMLFrameSetElement
+class HTMLFrameSetElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLFrameSetElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo),
       mNumRows(0),
       mNumCols(0),
       mCurrentRowColHint(NS_STYLE_HINT_REFLOW)
   {
     SetHasWeirdParserInsertionMode();
   }
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLFrameSetElement, frameset)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLFrameSetElement
-  NS_DECL_NSIDOMHTMLFRAMESETELEMENT
-
   void GetCols(DOMString& aCols)
   {
     GetHTMLAttr(nsGkAtoms::cols, aCols);
   }
   void SetCols(const nsAString& aCols, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::cols, aCols, aError);
   }
--- a/dom/html/HTMLHRElement.cpp
+++ b/dom/html/HTMLHRElement.cpp
@@ -16,18 +16,17 @@ HTMLHRElement::HTMLHRElement(already_Add
   : nsGenericHTMLElement(aNodeInfo)
 {
 }
 
 HTMLHRElement::~HTMLHRElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLHRElement, nsGenericHTMLElement,
-                            nsIDOMHTMLHRElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLHRElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLHRElement)
 
 
 bool
 HTMLHRElement::ParseAttribute(int32_t aNamespaceID,
                               nsIAtom* aAttribute,
                               const nsAString& aValue,
--- a/dom/html/HTMLHRElement.h
+++ b/dom/html/HTMLHRElement.h
@@ -4,36 +4,31 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 
 #ifndef mozilla_dom_HTMLHRElement_h
 #define mozilla_dom_HTMLHRElement_h
 
 #include "nsGenericHTMLElement.h"
-#include "nsIDOMHTMLHRElement.h"
 #include "nsMappedAttributes.h"
 #include "nsAttrValueInlines.h"
 #include "nsRuleData.h"
 
 namespace mozilla {
 namespace dom {
 
-class HTMLHRElement final : public nsGenericHTMLElement,
-                            public nsIDOMHTMLHRElement
+class HTMLHRElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLHRElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLHRElement
-  NS_DECL_NSIDOMHTMLHRELEMENT
-
   virtual bool ParseAttribute(int32_t aNamespaceID,
                               nsIAtom* aAttribute,
                               const nsAString& aValue,
                               nsAttrValue& aResult) override;
   NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
   virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
                          bool aPreallocateChildren) const override;
--- a/dom/html/HTMLImageElement.cpp
+++ b/dom/html/HTMLImageElement.cpp
@@ -36,17 +36,16 @@
 
 #include "imgIContainer.h"
 #include "imgILoader.h"
 #include "imgINotificationObserver.h"
 #include "imgRequestProxy.h"
 
 #include "nsILoadGroup.h"
 
-#include "nsIDOMHTMLMapElement.h"
 #include "mozilla/EventDispatcher.h"
 #include "mozilla/EventStates.h"
 #include "mozilla/GenericSpecifiedValuesInlines.h"
 #include "mozilla/net/ReferrerPolicy.h"
 
 #include "nsLayoutUtils.h"
 
 using namespace mozilla::net;
--- a/dom/html/HTMLLIElement.cpp
+++ b/dom/html/HTMLLIElement.cpp
@@ -17,24 +17,20 @@ NS_IMPL_NS_NEW_HTML_ELEMENT(LI)
 
 namespace mozilla {
 namespace dom {
 
 HTMLLIElement::~HTMLLIElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLLIElement, nsGenericHTMLElement,
-                            nsIDOMHTMLLIElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLLIElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLLIElement)
 
-NS_IMPL_STRING_ATTR(HTMLLIElement, Type, type)
-NS_IMPL_INT_ATTR(HTMLLIElement, Value, value)
-
 // values that are handled case-insensitively
 static const nsAttrValue::EnumTable kUnorderedListItemTypeTable[] = {
   { "disc", NS_STYLE_LIST_STYLE_DISC },
   { "circle", NS_STYLE_LIST_STYLE_CIRCLE },
   { "round", NS_STYLE_LIST_STYLE_CIRCLE },
   { "square", NS_STYLE_LIST_STYLE_SQUARE },
   { nullptr, 0 }
 };
--- a/dom/html/HTMLLIElement.h
+++ b/dom/html/HTMLLIElement.h
@@ -4,37 +4,32 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLLIElement_h
 #define mozilla_dom_HTMLLIElement_h
 
 #include "mozilla/Attributes.h"
 
-#include "nsIDOMHTMLLIElement.h"
 #include "nsGenericHTMLElement.h"
 
 namespace mozilla {
 namespace dom {
 
-class HTMLLIElement final : public nsGenericHTMLElement,
-                            public nsIDOMHTMLLIElement
+class HTMLLIElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLLIElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLLIElement
-  NS_DECL_NSIDOMHTMLLIELEMENT
-
   virtual bool ParseAttribute(int32_t aNamespaceID,
                                 nsIAtom* aAttribute,
                                 const nsAString& aValue,
                                 nsAttrValue& aResult) override;
   NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
   virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
                          bool aPreallocateChildren) const override;
--- a/dom/html/HTMLLabelElement.cpp
+++ b/dom/html/HTMLLabelElement.cpp
@@ -30,56 +30,22 @@ HTMLLabelElement::~HTMLLabelElement()
 JSObject*
 HTMLLabelElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto)
 {
   return HTMLLabelElementBinding::Wrap(aCx, this, aGivenProto);
 }
 
 // nsISupports
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLLabelElement, nsGenericHTMLElement,
-                            nsIDOMHTMLLabelElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLLabelElement, nsGenericHTMLElement)
 
 // nsIDOMHTMLLabelElement
 
 NS_IMPL_ELEMENT_CLONE(HTMLLabelElement)
 
-NS_IMETHODIMP
-HTMLLabelElement::GetForm(nsIDOMHTMLFormElement** aForm)
-{
-  RefPtr<nsIDOMHTMLFormElement> form = GetForm();
-  form.forget(aForm);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLLabelElement::GetControl(nsIDOMHTMLElement** aElement)
-{
-  nsCOMPtr<nsIDOMHTMLElement> element = do_QueryObject(GetLabeledElement());
-  element.forget(aElement);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLLabelElement::SetHtmlFor(const nsAString& aHtmlFor)
-{
-  ErrorResult rv;
-  SetHtmlFor(aHtmlFor, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLLabelElement::GetHtmlFor(nsAString& aHtmlFor)
-{
-  nsString htmlFor;
-  GetHtmlFor(htmlFor);
-  aHtmlFor = htmlFor;
-  return NS_OK;
-}
-
 HTMLFormElement*
 HTMLLabelElement::GetForm() const
 {
   nsGenericHTMLElement* control = GetControl();
   if (!control) {
     return nullptr;
   }
 
--- a/dom/html/HTMLLabelElement.h
+++ b/dom/html/HTMLLabelElement.h
@@ -7,24 +7,22 @@
 /**
  * Declaration of HTML <label> elements.
  */
 #ifndef HTMLLabelElement_h
 #define HTMLLabelElement_h
 
 #include "mozilla/Attributes.h"
 #include "nsGenericHTMLElement.h"
-#include "nsIDOMHTMLLabelElement.h"
 
 namespace mozilla {
 class EventChainPostVisitor;
 namespace dom {
 
-class HTMLLabelElement final : public nsGenericHTMLElement,
-                               public nsIDOMHTMLLabelElement
+class HTMLLabelElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLLabelElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo),
       mHandlingEvent(false)
   {
   }
 
@@ -34,27 +32,24 @@ public:
   NS_DECL_ISUPPORTS_INHERITED
 
   // Element
   virtual bool IsInteractiveHTMLContent(bool aIgnoreTabindex) const override
   {
     return true;
   }
 
-  // nsIDOMHTMLLabelElement
-  NS_DECL_NSIDOMHTMLLABELELEMENT
-
   HTMLFormElement* GetForm() const;
   void GetHtmlFor(nsString& aHtmlFor)
   {
     GetHTMLAttr(nsGkAtoms::_for, aHtmlFor);
   }
-  void SetHtmlFor(const nsAString& aHtmlFor, ErrorResult& aError)
+  void SetHtmlFor(const nsAString& aHtmlFor)
   {
-    SetHTMLAttr(nsGkAtoms::_for, aHtmlFor, aError);
+    SetHTMLAttr(nsGkAtoms::_for, aHtmlFor);
   }
   nsGenericHTMLElement* GetControl() const
   {
     return GetLabeledElement();
   }
 
   using nsGenericHTMLElement::Focus;
   virtual void Focus(mozilla::ErrorResult& aError) override;
--- a/dom/html/HTMLMapElement.cpp
+++ b/dom/html/HTMLMapElement.cpp
@@ -29,17 +29,17 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 
 NS_IMPL_ADDREF_INHERITED(HTMLMapElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLMapElement, Element)
 
 
 // QueryInterface implementation for HTMLMapElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLMapElement)
-  NS_INTERFACE_TABLE_INHERITED(HTMLMapElement, nsIDOMHTMLMapElement)
+  NS_INTERFACE_TABLE_INHERITED(HTMLMapElement, nsIDOMHTMLElement)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLMapElement)
 
 
 nsIHTMLCollection*
 HTMLMapElement::Areas()
 {
@@ -50,27 +50,16 @@ HTMLMapElement::Areas()
                                nsGkAtoms::area,
                                nsGkAtoms::area,
                                false);
   }
 
   return mAreas;
 }
 
-NS_IMETHODIMP
-HTMLMapElement::GetAreas(nsIDOMHTMLCollection** aAreas)
-{
-  NS_ENSURE_ARG_POINTER(aAreas);
-  NS_ADDREF(*aAreas = Areas());
-  return NS_OK;
-}
-
-
-NS_IMPL_STRING_ATTR(HTMLMapElement, Name, name)
-
 
 JSObject*
 HTMLMapElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
 {
   return HTMLMapElementBinding::Wrap(aCx, this, aGivenProto);
 }
 
 } // namespace dom
--- a/dom/html/HTMLMapElement.h
+++ b/dom/html/HTMLMapElement.h
@@ -4,43 +4,41 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLMapElement_h
 #define mozilla_dom_HTMLMapElement_h
 
 #include "mozilla/Attributes.h"
 #include "nsGenericHTMLElement.h"
-#include "nsIDOMHTMLMapElement.h"
 #include "nsGkAtoms.h"
 
 class nsContentList;
 
 namespace mozilla {
 namespace dom {
 
-class HTMLMapElement final : public nsGenericHTMLElement,
-                             public nsIDOMHTMLMapElement
+class HTMLMapElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLMapElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLMapElement
-  NS_DECL_NSIDOMHTMLMAPELEMENT
-
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
                          bool aPreallocateChildren) const override;
 
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED_NO_UNLINK(HTMLMapElement,
                                                      nsGenericHTMLElement)
 
-  // XPCOM GetName is fine.
+  void GetName(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::name, aValue);
+  }
   void SetName(const nsAString& aName, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::name, aName, aError);
   }
   nsIHTMLCollection* Areas();
 
   virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 
--- a/dom/html/HTMLMenuElement.cpp
+++ b/dom/html/HTMLMenuElement.cpp
@@ -50,26 +50,20 @@ HTMLMenuElement::HTMLMenuElement(already
   : nsGenericHTMLElement(aNodeInfo), mType(MENU_TYPE_TOOLBAR)
 {
 }
 
 HTMLMenuElement::~HTMLMenuElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLMenuElement, nsGenericHTMLElement,
-                            nsIDOMHTMLMenuElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLMenuElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLMenuElement)
 
-NS_IMPL_BOOL_ATTR(HTMLMenuElement, Compact, compact)
-NS_IMPL_ENUM_ATTR_DEFAULT_VALUE(HTMLMenuElement, Type, type,
-                                kMenuDefaultType->tag)
-NS_IMPL_STRING_ATTR(HTMLMenuElement, Label, label)
-
 
 void
 HTMLMenuElement::SendShowEvent()
 {
   nsCOMPtr<nsIDocument> document = GetComposedDoc();
   if (!document) {
     return;
   }
--- a/dom/html/HTMLMenuElement.h
+++ b/dom/html/HTMLMenuElement.h
@@ -3,61 +3,62 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLMenuElement_h
 #define mozilla_dom_HTMLMenuElement_h
 
 #include "mozilla/Attributes.h"
-#include "nsIDOMHTMLMenuElement.h"
 #include "nsGenericHTMLElement.h"
 
 class nsIMenuBuilder;
 
 namespace mozilla {
 namespace dom {
 
-class HTMLMenuElement final : public nsGenericHTMLElement,
-                              public nsIDOMHTMLMenuElement
+class HTMLMenuElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLMenuElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLMenuElement, menu)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLMenuElement
-  NS_DECL_NSIDOMHTMLMENUELEMENT
-
   virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
                                 const nsAttrValue* aValue,
                                 const nsAttrValue* aOldValue,
                                 bool aNotify) override;
   virtual bool ParseAttribute(int32_t aNamespaceID,
                                 nsIAtom* aAttribute,
                                 const nsAString& aValue,
                                 nsAttrValue& aResult) override;
 
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
                          bool aPreallocateChildren) const override;
 
   uint8_t GetType() const { return mType; }
 
   // WebIDL
 
-  // The XPCOM GetType is OK for us
+  void GetType(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::type, aValue);
+  }
   void SetType(const nsAString& aType, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::type, aType, aError);
   }
 
-  // The XPCOM GetLabel is OK for us
+  void GetLabel(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::label, aValue);
+  }
   void SetLabel(const nsAString& aLabel, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::label, aLabel, aError);
   }
 
   bool Compact() const
   {
     return GetBoolAttr(nsGkAtoms::compact);
--- a/dom/html/HTMLMetaElement.cpp
+++ b/dom/html/HTMLMetaElement.cpp
@@ -22,27 +22,21 @@ HTMLMetaElement::HTMLMetaElement(already
 {
 }
 
 HTMLMetaElement::~HTMLMetaElement()
 {
 }
 
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLMetaElement, nsGenericHTMLElement,
-                            nsIDOMHTMLMetaElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLMetaElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLMetaElement)
 
 
-NS_IMPL_STRING_ATTR(HTMLMetaElement, Content, content)
-NS_IMPL_STRING_ATTR(HTMLMetaElement, HttpEquiv, httpEquiv)
-NS_IMPL_STRING_ATTR(HTMLMetaElement, Name, name)
-NS_IMPL_STRING_ATTR(HTMLMetaElement, Scheme, scheme)
-
 nsresult
 HTMLMetaElement::SetMetaReferrer(nsIDocument* aDocument)
 {
   if (!aDocument ||
       !AttrValueIs(kNameSpaceID_None, nsGkAtoms::name, nsGkAtoms::referrer, eIgnoreCase)) {
     return NS_OK;
   }
   nsAutoString content;
--- a/dom/html/HTMLMetaElement.h
+++ b/dom/html/HTMLMetaElement.h
@@ -4,65 +4,73 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLMetaElement_h
 #define mozilla_dom_HTMLMetaElement_h
 
 #include "mozilla/Attributes.h"
 #include "nsGenericHTMLElement.h"
-#include "nsIDOMHTMLMetaElement.h"
 
 namespace mozilla {
 namespace dom {
 
-class HTMLMetaElement final : public nsGenericHTMLElement,
-                              public nsIDOMHTMLMetaElement
+class HTMLMetaElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLMetaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLMetaElement
-  NS_DECL_NSIDOMHTMLMETAELEMENT
-
   virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
                               nsIContent* aBindingParent,
                               bool aCompileEventHandlers) override;
   virtual void UnbindFromTree(bool aDeep = true,
                               bool aNullParent = true) override;
 
   virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
                                 const nsAttrValue* aValue,
                                 const nsAttrValue* aOldValue,
                                 bool aNotify) override;
 
   void CreateAndDispatchEvent(nsIDocument* aDoc, const nsAString& aEventName);
 
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
                          bool aPreallocateChildren) const override;
 
-  // XPCOM GetName is fine.
+  void GetName(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::name, aValue);
+  }
   void SetName(const nsAString& aName, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::name, aName, aRv);
   }
-  // XPCOM GetHttpEquiv is fine.
+  void GetHttpEquiv(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::httpEquiv, aValue);
+  }
   void SetHttpEquiv(const nsAString& aHttpEquiv, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::httpEquiv, aHttpEquiv, aRv);
   }
-  // XPCOM GetContent is fine.
+  nsresult GetContent(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::content, aValue);
+    return NS_OK;
+  }
   void SetContent(const nsAString& aContent, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::content, aContent, aRv);
   }
-  // XPCOM GetScheme is fine.
+  void GetScheme(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::scheme, aValue);
+  }
   void SetScheme(const nsAString& aScheme, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::scheme, aScheme, aRv);
   }
 
   virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 
 protected:
--- a/dom/html/HTMLOptGroupElement.cpp
+++ b/dom/html/HTMLOptGroupElement.cpp
@@ -32,18 +32,17 @@ HTMLOptGroupElement::HTMLOptGroupElement
   AddStatesSilently(NS_EVENT_STATE_ENABLED);
 }
 
 HTMLOptGroupElement::~HTMLOptGroupElement()
 {
 }
 
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLOptGroupElement, nsGenericHTMLElement,
-                            nsIDOMHTMLOptGroupElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLOptGroupElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLOptGroupElement)
 
 
 nsresult
 HTMLOptGroupElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
 {
   aVisitor.mCanHandle = false;
--- a/dom/html/HTMLOptGroupElement.h
+++ b/dom/html/HTMLOptGroupElement.h
@@ -3,37 +3,32 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLOptGroupElement_h
 #define mozilla_dom_HTMLOptGroupElement_h
 
 #include "mozilla/Attributes.h"
-#include "nsIDOMHTMLOptGroupElement.h"
 #include "nsGenericHTMLElement.h"
 
 namespace mozilla {
 class EventChainPreVisitor;
 namespace dom {
 
-class HTMLOptGroupElement final : public nsGenericHTMLElement,
-                                  public nsIDOMHTMLOptGroupElement
+class HTMLOptGroupElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLOptGroupElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLOptGroupElement, optgroup)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLOptGroupElement
-  NS_DECL_NSIDOMHTMLOPTGROUPELEMENT
-
   // nsINode
   virtual nsresult InsertChildAt(nsIContent* aKid, uint32_t aIndex,
                                  bool aNotify) override;
   virtual void RemoveChildAt(uint32_t aIndex, bool aNotify) override;
 
   // nsIContent
   virtual nsresult GetEventTargetParent(
                      EventChainPreVisitor& aVisitor) override;
--- a/dom/html/HTMLOptionElement.cpp
+++ b/dom/html/HTMLOptionElement.cpp
@@ -2,17 +2,16 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/dom/HTMLOptionElement.h"
 #include "mozilla/dom/HTMLOptionElementBinding.h"
 #include "mozilla/dom/HTMLSelectElement.h"
-#include "nsIDOMHTMLOptGroupElement.h"
 #include "nsIDOMHTMLFormElement.h"
 #include "nsGkAtoms.h"
 #include "nsStyleConsts.h"
 #include "nsIFormControl.h"
 #include "nsIForm.h"
 #include "nsIDOMNode.h"
 #include "nsIDOMHTMLCollection.h"
 #include "nsISelectControlFrame.h"
--- a/dom/html/HTMLOptionsCollection.cpp
+++ b/dom/html/HTMLOptionsCollection.cpp
@@ -15,17 +15,16 @@
 #include "mozilla/dom/HTMLOptionElement.h"
 #include "mozilla/dom/HTMLOptionsCollectionBinding.h"
 #include "mozilla/dom/HTMLSelectElement.h"
 #include "nsContentCreatorFunctions.h"
 #include "nsError.h"
 #include "nsGkAtoms.h"
 #include "nsIComboboxControlFrame.h"
 #include "nsIDocument.h"
-#include "nsIDOMHTMLOptGroupElement.h"
 #include "nsIFormControlFrame.h"
 #include "nsIForm.h"
 #include "nsIFormProcessor.h"
 #include "nsIListControlFrame.h"
 #include "nsLayoutUtils.h"
 #include "nsMappedAttributes.h"
 #include "nsRuleData.h"
 #include "nsServiceManagerUtils.h"
--- a/dom/html/HTMLParagraphElement.cpp
+++ b/dom/html/HTMLParagraphElement.cpp
@@ -16,23 +16,20 @@ NS_IMPL_NS_NEW_HTML_ELEMENT(Paragraph)
 
 namespace mozilla {
 namespace dom {
 
 HTMLParagraphElement::~HTMLParagraphElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLParagraphElement, nsGenericHTMLElement,
-                            nsIDOMHTMLParagraphElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLParagraphElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLParagraphElement)
 
-NS_IMPL_STRING_ATTR(HTMLParagraphElement, Align, align)
-
 bool
 HTMLParagraphElement::ParseAttribute(int32_t aNamespaceID,
                                      nsIAtom* aAttribute,
                                      const nsAString& aValue,
                                      nsAttrValue& aResult)
 {
   if (aAttribute == nsGkAtoms::align && aNamespaceID == kNameSpaceID_None) {
     return ParseDivAlignValue(aValue, aResult);
--- a/dom/html/HTMLParagraphElement.h
+++ b/dom/html/HTMLParagraphElement.h
@@ -4,49 +4,47 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLParagraphElement_h
 #define mozilla_dom_HTMLParagraphElement_h
 
 #include "mozilla/Attributes.h"
 
-#include "nsIDOMHTMLParagraphElement.h"
 #include "nsGenericHTMLElement.h"
 
 namespace mozilla {
 namespace dom {
 
-class HTMLParagraphElement final : public nsGenericHTMLElement,
-                                   public nsIDOMHTMLParagraphElement
+class HTMLParagraphElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLParagraphElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLParagraphElement
-  NS_DECL_NSIDOMHTMLPARAGRAPHELEMENT
-
   virtual bool ParseAttribute(int32_t aNamespaceID,
                                 nsIAtom* aAttribute,
                                 const nsAString& aValue,
                                 nsAttrValue& aResult) override;
   NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
   virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
 
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
                          bool aPreallocateChildren) const override;
 
   // WebIDL API
-  // The XPCOM GetAlign is fine for our purposes
+  void GetAlign(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::align, aValue);
+  }
   void SetAlign(const nsAString& aValue, mozilla::ErrorResult& rv)
   {
     SetHTMLAttr(nsGkAtoms::align, aValue, rv);
   }
 
 protected:
   virtual ~HTMLParagraphElement();
 
--- a/dom/html/HTMLPictureElement.cpp
+++ b/dom/html/HTMLPictureElement.cpp
@@ -23,18 +23,17 @@ HTMLPictureElement::HTMLPictureElement(a
   : nsGenericHTMLElement(aNodeInfo)
 {
 }
 
 HTMLPictureElement::~HTMLPictureElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLPictureElement, nsGenericHTMLElement,
-                            nsIDOMHTMLPictureElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLPictureElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLPictureElement)
 
 void
 HTMLPictureElement::RemoveChildAt(uint32_t aIndex, bool aNotify)
 {
   nsCOMPtr<nsIContent> child = GetChildAt(aIndex);
 
--- a/dom/html/HTMLPictureElement.h
+++ b/dom/html/HTMLPictureElement.h
@@ -3,34 +3,29 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLPictureElement_h
 #define mozilla_dom_HTMLPictureElement_h
 
 #include "mozilla/Attributes.h"
-#include "nsIDOMHTMLPictureElement.h"
 #include "nsGenericHTMLElement.h"
 
 namespace mozilla {
 namespace dom {
 
-class HTMLPictureElement final : public nsGenericHTMLElement,
-                                 public nsIDOMHTMLPictureElement
+class HTMLPictureElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLPictureElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLPictureElement
-  NS_DECL_NSIDOMHTMLPICTUREELEMENT
-
   virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult,
                          bool aPreallocateChildren) const override;
   virtual void RemoveChildAt(uint32_t aIndex, bool aNotify) override;
   virtual nsresult InsertChildAt(nsIContent* aKid, uint32_t aIndex, bool aNotify) override;
 
 protected:
   virtual ~HTMLPictureElement();
 
--- a/dom/html/HTMLPreElement.cpp
+++ b/dom/html/HTMLPreElement.cpp
@@ -17,23 +17,20 @@ NS_IMPL_NS_NEW_HTML_ELEMENT(Pre)
 
 namespace mozilla {
 namespace dom {
 
 HTMLPreElement::~HTMLPreElement()
 {
 }
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLPreElement, nsGenericHTMLElement,
-                            nsIDOMHTMLPreElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLPreElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLPreElement)
 
-NS_IMPL_INT_ATTR(HTMLPreElement, Width, width)
-
 bool
 HTMLPreElement::ParseAttribute(int32_t aNamespaceID,
                                nsIAtom* aAttribute,
                                const nsAString& aValue,
                                nsAttrValue& aResult)
 {
   if (aNamespaceID == kNameSpaceID_None) {
     if (aAttribute == nsGkAtoms::width) {
--- a/dom/html/HTMLPreElement.h
+++ b/dom/html/HTMLPreElement.h
@@ -4,38 +4,32 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLPreElement_h
 #define mozilla_dom_HTMLPreElement_h
 
 #include "mozilla/Attributes.h"
 
-#include "nsIDOMHTMLPreElement.h"
 #include "nsGenericHTMLElement.h"
 
 namespace mozilla {
 namespace dom {
 
-class HTMLPreElement final : public nsGenericHTMLElement,
-                             public nsIDOMHTMLPreElement
+class HTMLPreElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLPreElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLPreElement
-  NS_IMETHOD GetWidth(int32_t* aWidth) override;
-  NS_IMETHOD SetWidth(int32_t aWidth) override;
-
   virtual bool ParseAttribute(int32_t aNamespaceID,
                                 nsIAtom* aAttribute,
                                 const nsAString& aValue,
                                 nsAttrValue& aResult) override;
   NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
   virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
 
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
--- a/dom/html/HTMLSharedElement.cpp
+++ b/dom/html/HTMLSharedElement.cpp
@@ -32,20 +32,16 @@ HTMLSharedElement::~HTMLSharedElement()
 }
 
 NS_IMPL_ADDREF_INHERITED(HTMLSharedElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLSharedElement, Element)
 
 // QueryInterface implementation for HTMLSharedElement
 NS_INTERFACE_MAP_BEGIN(HTMLSharedElement)
   NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLBaseElement, base)
-  NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLDirectoryElement, dir)
-  NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLQuoteElement, q)
-  NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLQuoteElement, blockquote)
-  NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLHeadElement, head)
   NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLHtmlElement, html)
 NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
 
 
 NS_IMPL_ELEMENT_CLONE(HTMLSharedElement)
 
 // nsIDOMHTMLQuoteElement
 // Empty
--- a/dom/html/HTMLSharedElement.h
+++ b/dom/html/HTMLSharedElement.h
@@ -3,35 +3,29 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLSharedElement_h
 #define mozilla_dom_HTMLSharedElement_h
 
 #include "nsIDOMHTMLBaseElement.h"
-#include "nsIDOMHTMLDirectoryElement.h"
-#include "nsIDOMHTMLQuoteElement.h"
-#include "nsIDOMHTMLHeadElement.h"
 #include "nsIDOMHTMLHtmlElement.h"
 #include "nsGenericHTMLElement.h"
 
 #include "nsGkAtoms.h"
 
 #include "mozilla/Attributes.h"
 #include "mozilla/Assertions.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLSharedElement final : public nsGenericHTMLElement,
                                 public nsIDOMHTMLBaseElement,
-                                public nsIDOMHTMLDirectoryElement,
-                                public nsIDOMHTMLQuoteElement,
-                                public nsIDOMHTMLHeadElement,
                                 public nsIDOMHTMLHtmlElement
 {
 public:
   explicit HTMLSharedElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
     if (mNodeInfo->Equals(nsGkAtoms::head) ||
         mNodeInfo->Equals(nsGkAtoms::html)) {
@@ -40,22 +34,16 @@ public:
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLBaseElement
   NS_DECL_NSIDOMHTMLBASEELEMENT
 
-  // nsIDOMHTMLQuoteElement
-  NS_DECL_NSIDOMHTMLQUOTEELEMENT
-
-  // nsIDOMHTMLHeadElement
-  NS_DECL_NSIDOMHTMLHEADELEMENT
-
   // nsIDOMHTMLHtmlElement
   NS_DECL_NSIDOMHTMLHTMLELEMENT
 
   // nsIContent
   virtual bool ParseAttribute(int32_t aNamespaceID,
                                 nsIAtom* aAttribute,
                                 const nsAString& aValue,
                                 nsAttrValue& aResult) override;
--- a/dom/html/HTMLSharedListElement.cpp
+++ b/dom/html/HTMLSharedListElement.cpp
@@ -25,18 +25,16 @@ HTMLSharedListElement::~HTMLSharedListEl
 {
 }
 
 NS_IMPL_ADDREF_INHERITED(HTMLSharedListElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLSharedListElement, Element)
 
 // QueryInterface implementation for nsHTMLSharedListElement
 NS_INTERFACE_MAP_BEGIN(HTMLSharedListElement)
-  NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLOListElement, ol)
-  NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLUListElement, ul)
 NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
 
 
 NS_IMPL_ELEMENT_CLONE(HTMLSharedListElement)
 
 
 // Shared with nsHTMLSharedElement.cpp
 nsAttrValue::EnumTable kListTypeTable[] = {
--- a/dom/html/HTMLSharedListElement.h
+++ b/dom/html/HTMLSharedListElement.h
@@ -4,42 +4,32 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLSharedListElement_h
 #define mozilla_dom_HTMLSharedListElement_h
 
 #include "mozilla/Attributes.h"
 
-#include "nsIDOMHTMLOListElement.h"
-#include "nsIDOMHTMLUListElement.h"
 #include "nsGenericHTMLElement.h"
 
 namespace mozilla {
 namespace dom {
 
-class HTMLSharedListElement final : public nsGenericHTMLElement,
-                                    public nsIDOMHTMLOListElement,
-                                    public nsIDOMHTMLUListElement
+class HTMLSharedListElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLSharedListElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLOListElement
-  NS_DECL_NSIDOMHTMLOLISTELEMENT
-
-  // nsIDOMHTMLUListElement
-  // fully declared by NS_DECL_NSIDOMHTMLOLISTELEMENT
-
   virtual bool ParseAttribute(int32_t aNamespaceID,
                                 nsIAtom* aAttribute,
                                 const nsAString& aValue,
                                 nsAttrValue& aResult) override;
   virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
   NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
                          bool aPreallocateChildren) const override;
--- a/dom/html/HTMLStyleElement.cpp
+++ b/dom/html/HTMLStyleElement.cpp
@@ -43,59 +43,38 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_END
 
 NS_IMPL_ADDREF_INHERITED(HTMLStyleElement, Element)
 NS_IMPL_RELEASE_INHERITED(HTMLStyleElement, Element)
 
 
 // QueryInterface implementation for HTMLStyleElement
 NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(HTMLStyleElement)
   NS_INTERFACE_TABLE_INHERITED(HTMLStyleElement,
-                               nsIDOMHTMLStyleElement,
                                nsIStyleSheetLinkingElement,
                                nsIMutationObserver)
 NS_INTERFACE_TABLE_TAIL_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLStyleElement)
 
 
-NS_IMETHODIMP
-HTMLStyleElement::GetMozDisabled(bool* aDisabled)
-{
-  NS_ENSURE_ARG_POINTER(aDisabled);
-
-  *aDisabled = Disabled();
-  return NS_OK;
-}
-
 bool
 HTMLStyleElement::Disabled()
 {
   StyleSheet* ss = GetSheet();
   return ss && ss->Disabled();
 }
 
-NS_IMETHODIMP
-HTMLStyleElement::SetMozDisabled(bool aDisabled)
-{
-  SetDisabled(aDisabled);
-  return NS_OK;
-}
-
 void
 HTMLStyleElement::SetDisabled(bool aDisabled)
 {
   if (StyleSheet* ss = GetSheet()) {
     ss->SetDisabled(aDisabled);
   }
 }
 
-NS_IMPL_STRING_ATTR(HTMLStyleElement, Media, media)
-NS_IMPL_BOOL_ATTR(HTMLStyleElement, Scoped, scoped)
-NS_IMPL_STRING_ATTR(HTMLStyleElement, Type, type)
-
 void
 HTMLStyleElement::CharacterDataChanged(nsIDocument* aDocument,
                                        nsIContent* aContent,
                                        CharacterDataChangeInfo* aInfo)
 {
   ContentChanged(aContent);
 }
 
--- a/dom/html/HTMLStyleElement.h
+++ b/dom/html/HTMLStyleElement.h
@@ -3,28 +3,26 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_HTMLStyleElement_h
 #define mozilla_dom_HTMLStyleElement_h
 
 #include "mozilla/Attributes.h"
-#include "nsIDOMHTMLStyleElement.h"
 #include "nsGenericHTMLElement.h"
 #include "nsStyleLinkElement.h"
 #include "nsStubMutationObserver.h"
 
 class nsIDocument;
 
 namespace mozilla {
 namespace dom {
 
 class HTMLStyleElement final : public nsGenericHTMLElement,
-                               public nsIDOMHTMLStyleElement,
                                public nsStyleLinkElement,
                                public nsStubMutationObserver
 {
 public:
   explicit HTMLStyleElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
@@ -33,19 +31,16 @@ public:
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLStyleElement,
                                            nsGenericHTMLElement)
 
   NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) override;
   using nsGenericHTMLElement::SetInnerHTML;
   virtual void SetInnerHTML(const nsAString& aInnerHTML,
                             mozilla::ErrorResult& aError) override;
 
-  // nsIDOMHTMLStyleElement
-  NS_DECL_NSIDOMHTMLSTYLEELEMENT
-
   virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
                               nsIContent* aBindingParent,
                               bool aCompileEventHandlers) override;
   virtual void UnbindFromTree(bool aDeep = true,
                               bool aNullParent = true) override;
   virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
                                 const nsAttrValue* aValue,
                                 const nsAttrValue* aOldValue,
@@ -65,20 +60,28 @@ public:
   void GetNonce(nsAString& aNonce) const
   {
     GetHTMLAttr(nsGkAtoms::nonce, aNonce);
   }
   void SetNonce(const nsAString& aNonce, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::nonce, aNonce, aRv);
   }
+  void GetMedia(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::media, aValue);
+  }
   void SetMedia(const nsAString& aMedia, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::media, aMedia, aError);
   }
+  void GetType(nsAString& aValue)
+  {
+    GetHTMLAttr(nsGkAtoms::type, aValue);
+  }
   void SetType(const nsAString& aType, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::type, aType, aError);
   }
   bool Scoped()
   {
     return GetBoolAttr(nsGkAtoms::scoped);
   }
--- a/dom/html/HTMLTableCellElement.cpp
+++ b/dom/html/HTMLTableCellElement.cpp
@@ -24,18 +24,17 @@ HTMLTableCellElement::~HTMLTableCellElem
 }
 
 JSObject*
 HTMLTableCellElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto)
 {
   return HTMLTableCellElementBinding::Wrap(aCx, this, aGivenProto);
 }
 
-NS_IMPL_ISUPPORTS_INHERITED(HTMLTableCellElement, nsGenericHTMLElement,
-                            nsIDOMHTMLTableCellElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLTableCellElement, nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLTableCellElement)
 
 
 // protected method
 HTMLTableRowElement*
 HTMLTableCellElement::GetRow() const
 {
@@ -90,23 +89,16 @@ HTMLTableCellElement::CellIndex() const
       return i;
     }
   }
 
   return -1;
 }
 
 NS_IMETHODIMP
-HTMLTableCellElement::GetCellIndex(int32_t* aCellIndex)
-{
-  *aCellIndex = CellIndex();
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 HTMLTableCellElement::WalkContentStyleRules(nsRuleWalker* aRuleWalker)
 {
   nsresult rv = nsGenericHTMLElement::WalkContentStyleRules(aRuleWalker);
   NS_ENSURE_SUCCESS(rv, rv);
 
   if (nsMappedAttributes* tableInheritedAttributes = GetMappedAttributesInheritedFromTable()) {
     if (tableInheritedAttributes) {
       aRuleWalker->Forward(tableInheritedAttributes);
@@ -120,248 +112,16 @@ HTMLTableCellElement::GetMappedAttribute
 {
   if (HTMLTableElement* table = GetTable()) {
     return table->GetAttributesMappedForCell();
   }
 
   return nullptr;
 }
 
-NS_IMETHODIMP
-HTMLTableCellElement::SetAbbr(const nsAString& aAbbr)
-{
-  ErrorResult rv;
-  SetAbbr(aAbbr, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetAbbr(nsAString& aAbbr)
-{
-  DOMString abbr;
-  GetAbbr(abbr);
-  abbr.ToString(aAbbr);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetAxis(const nsAString& aAxis)
-{
-  ErrorResult rv;
-  SetAxis(aAxis, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetAxis(nsAString& aAxis)
-{
-  DOMString axis;
-  GetAxis(axis);
-  axis.ToString(aAxis);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetAlign(const nsAString& aAlign)
-{
-  ErrorResult rv;
-  SetAlign(aAlign, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetAlign(nsAString& aAlign)
-{
-  DOMString align;
-  GetAlign(align);
-  align.ToString(aAlign);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetVAlign(const nsAString& aVAlign)
-{
-  ErrorResult rv;
-  SetVAlign(aVAlign, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetVAlign(nsAString& aVAlign)
-{
-  DOMString vAlign;
-  GetVAlign(vAlign);
-  vAlign.ToString(aVAlign);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetCh(const nsAString& aCh)
-{
-  ErrorResult rv;
-  SetCh(aCh, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetCh(nsAString& aCh)
-{
-  DOMString ch;
-  GetCh(ch);
-  ch.ToString(aCh);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetChOff(const nsAString& aChOff)
-{
-  ErrorResult rv;
-  SetChOff(aChOff, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetChOff(nsAString& aChOff)
-{
-  DOMString chOff;
-  GetChOff(chOff);
-  chOff.ToString(aChOff);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetBgColor(const nsAString& aBgColor)
-{
-  ErrorResult rv;
-  SetBgColor(aBgColor, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetBgColor(nsAString& aBgColor)
-{
-  DOMString bgColor;
-  GetBgColor(bgColor);
-  bgColor.ToString(aBgColor);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetHeight(const nsAString& aHeight)
-{
-  ErrorResult rv;
-  SetHeight(aHeight, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetHeight(nsAString& aHeight)
-{
-  DOMString height;
-  GetHeight(height);
-  height.ToString(aHeight);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetWidth(const nsAString& aWidth)
-{
-  ErrorResult rv;
-  SetWidth(aWidth, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetWidth(nsAString& aWidth)
-{
-  DOMString width;
-  GetWidth(width);
-  width.ToString(aWidth);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetNoWrap(bool aNoWrap)
-{
-  ErrorResult rv;
-  SetNoWrap(aNoWrap, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetNoWrap(bool* aNoWrap)
-{
-  *aNoWrap = NoWrap();
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetScope(const nsAString& aScope)
-{
-  ErrorResult rv;
-  SetScope(aScope, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetScope(nsAString& aScope)
-{
-  DOMString scope;
-  GetScope(scope);
-  scope.ToString(aScope);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetHeaders(const nsAString& aHeaders)
-{
-  ErrorResult rv;
-  SetHeaders(aHeaders, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetHeaders(nsAString& aHeaders)
-{
-  DOMString headers;
-  GetHeaders(headers);
-  headers.ToString(aHeaders);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetColSpan(int32_t aColSpan)
-{
-  ErrorResult rv;
-  SetColSpan(aColSpan, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetColSpan(int32_t* aColSpan)
-{
-  *aColSpan = ColSpan();
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::SetRowSpan(int32_t aRowSpan)
-{
-  ErrorResult rv;
-  SetRowSpan(aRowSpan, rv);
-  return rv.StealNSResult();
-}
-
-NS_IMETHODIMP
-HTMLTableCellElement::GetRowSpan(int32_t* aRowSpan)
-{
-  *aRowSpan = RowSpan();
-  return NS_OK;
-}
-
 void
 HTMLTableCellElement::GetAlign(DOMString& aValue)
 {
   if (!GetAttr(kNameSpaceID_None, nsGkAtoms::align, aValue)) {
     // There's no align attribute, ask the row for the alignment.
     HTMLTableRowElement* row = GetRow();
     if (row) {
       row->GetAlign(aValue);
--- a/dom/html/HTMLTableCellElement.h
+++ b/dom/html/HTMLTableCellElement.h
@@ -3,39 +3,34 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 #ifndef mozilla_dom_HTMLTableCellElement_h
 #define mozilla_dom_HTMLTableCellElement_h
 
 #include "mozilla/Attributes.h"
 #include "nsGenericHTMLElement.h"
-#include "nsIDOMHTMLTableCellElement.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLTableElement;
 
-class HTMLTableCellElement final : public nsGenericHTMLElement,
-                                   public nsIDOMHTMLTableCellElement
+class HTMLTableCellElement final : public nsGenericHTMLElement
 {
 public:
   explicit HTMLTableCellElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
     SetHasWeirdParserInsertionMode();
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
-  // nsIDOMHTMLTableCellElement
-  NS_DECL_NSIDOMHTMLTABLECELLELEMENT
-
   uint32_t ColSpan() const
   {
     return GetIntAttr(nsGkAtoms::colspan, 1);
   }
   void SetColSpan(uint32_t aColSpan, ErrorResult& aError)
   {
     SetUnsignedIntAttr(nsGkAtoms::colspan, aColSpan, 1, aError);
   }
--- a/dom/html/nsGenericHTMLElement.cpp
+++ b/dom/html/nsGenericHTMLElement.cpp
@@ -25,17 +25,16 @@
 #include "nsIContentViewer.h"
 #include "mozilla/css/Declaration.h"
 #include "nsIDocument.h"
 #include "nsIDocumentEncoder.h"
 #include "nsIDOMHTMLDocument.h"
 #include "nsIDOMAttr.h"
 #include "nsIDOMDocumentFragment.h"
 #include "nsIDOMHTMLElement.h"
-#include "nsIDOMHTMLMenuElement.h"
 #include "nsIDOMWindow.h"
 #include "nsIDOMDocument.h"
 #include "nsMappedAttributes.h"
 #include "nsHTMLStyleSheet.h"
 #include "nsIHTMLDocument.h"
 #include "nsPIDOMWindow.h"
 #include "nsIURL.h"
 #include "nsEscape.h"
--- a/dom/html/nsGenericHTMLElement.h
+++ b/dom/html/nsGenericHTMLElement.h
@@ -10,24 +10,22 @@
 #include "mozilla/EventForwards.h"
 #include "nsMappedAttributeElement.h"
 #include "nsIDOMHTMLElement.h"
 #include "nsNameSpaceManager.h"  // for kNameSpaceID_None
 #include "nsIFormControl.h"
 #include "nsGkAtoms.h"
 #include "nsContentCreatorFunctions.h"
 #include "mozilla/ErrorResult.h"
-#include "nsIDOMHTMLMenuElement.h"
 #include "mozilla/dom/BindingDeclarations.h"
 #include "mozilla/dom/DOMRect.h"
 #include "mozilla/dom/ValidityState.h"
 #include "mozilla/dom/Element.h"
 
 class nsDOMTokenList;
-class nsIDOMHTMLMenuElement;
 class nsIFormControlFrame;
 class nsIFrame;
 class nsILayoutHistoryState;
 class nsIURI;
 class nsPresState;
 struct nsSize;
 
 namespace mozilla {
--- a/dom/html/nsHTMLContentSink.cpp
+++ b/dom/html/nsHTMLContentSink.cpp
@@ -44,17 +44,16 @@
 #include "nsGkAtoms.h"
 #include "nsContentUtils.h"
 #include "nsIChannel.h"
 #include "nsIHttpChannel.h"
 #include "nsIDocShell.h"
 #include "nsIDocument.h"
 #include "nsStubDocumentObserver.h"
 #include "nsIHTMLDocument.h"
-#include "nsIDOMHTMLMapElement.h"
 #include "nsICookieService.h"
 #include "nsTArray.h"
 #include "nsIScriptSecurityManager.h"
 #include "nsIPrincipal.h"
 #include "nsTextFragment.h"
 #include "nsIScriptGlobalObject.h"
 #include "nsNameSpaceManager.h"
 
--- a/dom/html/nsHTMLDocument.cpp
+++ b/dom/html/nsHTMLDocument.cpp
@@ -52,17 +52,16 @@
 #include "nsNetCID.h"
 #include "nsICookieService.h"
 
 #include "nsIServiceManager.h"
 #include "nsIConsoleService.h"
 #include "nsIComponentManager.h"
 #include "nsParserCIID.h"
 #include "nsIDOMHTMLElement.h"
-#include "nsIDOMHTMLHeadElement.h"
 #include "nsNameSpaceManager.h"
 #include "nsGenericHTMLElement.h"
 #include "mozilla/css/Loader.h"
 #include "nsIHttpChannel.h"
 #include "nsIFile.h"
 #include "nsFrameSelection.h"
 #include "nsISelectionPrivate.h"//for toStringwithformat code
 
@@ -1145,17 +1144,17 @@ nsHTMLDocument::SetBody(nsGenericHTMLEle
   if (currentBody) {
     root->ReplaceChild(*newBody, *currentBody, rv);
   } else {
     root->AppendChild(*newBody, rv);
   }
 }
 
 NS_IMETHODIMP
-nsHTMLDocument::GetHead(nsIDOMHTMLHeadElement** aHead)
+nsHTMLDocument::GetHead(nsISupports** aHead)
 {
   *aHead = nullptr;
 
   Element* head = GetHeadElement();
 
   return head ? CallQueryInterface(head, aHead) : NS_OK;
 }
 
--- a/dom/interfaces/html/moz.build
+++ b/dom/interfaces/html/moz.build
@@ -6,57 +6,37 @@
 
 with Files("**"):
     BUG_COMPONENT = ("Core", "DOM")
 
 XPIDL_SOURCES += [
     'nsIDOMHTMLAnchorElement.idl',
     'nsIDOMHTMLAreaElement.idl',
     'nsIDOMHTMLBaseElement.idl',
-    'nsIDOMHTMLBodyElement.idl',
     'nsIDOMHTMLButtonElement.idl',
     'nsIDOMHTMLCanvasElement.idl',
     'nsIDOMHTMLCollection.idl',
-    'nsIDOMHTMLDirectoryElement.idl',
     'nsIDOMHTMLDocument.idl',
     'nsIDOMHTMLElement.idl',
-    'nsIDOMHTMLFieldSetElement.idl',
     'nsIDOMHTMLFormElement.idl',
     'nsIDOMHTMLFrameElement.idl',
-    'nsIDOMHTMLFrameSetElement.idl',
-    'nsIDOMHTMLHeadElement.idl',
-    'nsIDOMHTMLHRElement.idl',
     'nsIDOMHTMLHtmlElement.idl',
     'nsIDOMHTMLIFrameElement.idl',
     'nsIDOMHTMLImageElement.idl',
     'nsIDOMHTMLInputElement.idl',
-    'nsIDOMHTMLLabelElement.idl',
-    'nsIDOMHTMLLIElement.idl',
     'nsIDOMHTMLLinkElement.idl',
-    'nsIDOMHTMLMapElement.idl',
     'nsIDOMHTMLMediaElement.idl',
-    'nsIDOMHTMLMenuElement.idl',
     'nsIDOMHTMLMenuItemElement.idl',
-    'nsIDOMHTMLMetaElement.idl',
     'nsIDOMHTMLObjectElement.idl',
-    'nsIDOMHTMLOListElement.idl',
-    'nsIDOMHTMLOptGroupElement.idl',
     'nsIDOMHTMLOptionElement.idl',
     'nsIDOMHTMLOptionsCollection.idl',
-    'nsIDOMHTMLParagraphElement.idl',
-    'nsIDOMHTMLPictureElement.idl',
-    'nsIDOMHTMLPreElement.idl',
-    'nsIDOMHTMLQuoteElement.idl',
     'nsIDOMHTMLScriptElement.idl',
     'nsIDOMHTMLSelectElement.idl',
     'nsIDOMHTMLSourceElement.idl',
-    'nsIDOMHTMLStyleElement.idl',
-    'nsIDOMHTMLTableCellElement.idl',
     'nsIDOMHTMLTextAreaElement.idl',
-    'nsIDOMHTMLUListElement.idl',
     'nsIDOMMozBrowserFrame.idl',
     'nsIDOMTimeRanges.idl',
     'nsIDOMValidityState.idl',
     'nsIMozBrowserFrame.idl',
 ]
 
 XPIDL_MODULE = 'dom_html'
 
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLBodyElement.idl
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-%{ C++
-#include "jspubtd.h"
-%}
-
-/**
- * The nsIDOMHTMLBodyElement interface is the interface to a [X]HTML
- * body element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(068630db-2c00-43dd-b167-495757a88236)]
-interface nsIDOMHTMLBodyElement : nsISupports
-{
-           attribute DOMString        aLink;
-           attribute DOMString        background;
-           attribute DOMString        bgColor;
-           attribute DOMString        link;
-           attribute DOMString        text;
-           attribute DOMString        vLink;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLDirectoryElement.idl
+++ /dev/null
@@ -1,23 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLDirectoryElement interface is the interface to a
- * [X]HTML dir element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-// Exists so that | element instanceof Ci.nsIDOMHTMLDirectoryElement | works.
-[uuid(8cfff7a4-8b14-4ce0-97b0-babe78da16f8)]
-interface nsIDOMHTMLDirectoryElement : nsISupports
-{
-};
--- a/dom/interfaces/html/nsIDOMHTMLDocument.idl
+++ b/dom/interfaces/html/nsIDOMHTMLDocument.idl
@@ -14,17 +14,17 @@
 interface nsISelection;
 
 [uuid(cd31e61f-cfc2-4b91-9385-17b6a2d0633d)]
 interface nsIDOMHTMLDocument : nsIDOMDocument
 {
            attribute DOMString            domain;
            attribute DOMString            cookie;
 
-  readonly attribute nsIDOMHTMLHeadElement head;
+  readonly attribute nsISupports          head;
            attribute nsIDOMHTMLElement    body;
 
   readonly attribute nsIDOMHTMLCollection images;
   readonly attribute nsIDOMHTMLCollection embeds;
   // mapped to attribute embeds for NS4 compat
   readonly attribute nsIDOMHTMLCollection plugins;
   readonly attribute nsIDOMHTMLCollection links;
   readonly attribute nsIDOMHTMLCollection forms;
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLFieldSetElement.idl
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLFieldSetElement interface is the interface to a
- * [X]HTML fieldset element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-interface nsIDOMValidityState;
-
-[uuid(e3d91535-9da3-4c4b-a809-f17d85a4fb9f)]
-interface nsIDOMHTMLFieldSetElement : nsISupports
-{
-           attribute boolean                disabled;
-  readonly attribute nsIDOMHTMLFormElement  form;
-           attribute DOMString              name;
-
-  readonly attribute DOMString              type;
-
-  readonly attribute nsIDOMHTMLCollection   elements;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLFrameSetElement.idl
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-%{ C++
-#include "jspubtd.h"
-%}
-
-/**
- * The nsIDOMHTMLFrameSetElement interface is the interface to a
- * [X]HTML frameset element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(14b29269-c387-4cff-8463-b0871ca0be3a)]
-interface nsIDOMHTMLFrameSetElement : nsISupports
-{
-           attribute DOMString        cols;
-           attribute DOMString        rows;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLHRElement.idl
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-[uuid(30771953-b9f4-44de-b0fe-e490949af98b)]
-interface nsIDOMHTMLHRElement : nsISupports
-{
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLHeadElement.idl
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLHeadElement interface is the interface to a [X]HTML
- * head element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(59b80014-00f5-412d-846f-725494122d42)]
-interface nsIDOMHTMLHeadElement : nsISupports
-{
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLLIElement.idl
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLLIElement interface is the interface to a [X]HTML li
- * element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(17bd5c1c-3746-4268-a9f6-45018025f09c)]
-interface nsIDOMHTMLLIElement : nsISupports
-{
-           attribute DOMString           type;
-           attribute long                value;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLLabelElement.idl
+++ /dev/null
@@ -1,25 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLLabelElement interface is the interface to a [X]HTML
- * label element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(efc0eaf2-5756-4388-a229-fbec2033529d)]
-interface nsIDOMHTMLLabelElement : nsISupports
-{
-  readonly attribute nsIDOMHTMLFormElement form;
-           attribute DOMString             htmlFor;
-  readonly attribute nsIDOMHTMLElement     control;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLMapElement.idl
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLMapElement interface is the interface to a [X]HTML
- * map element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(3f49f8c6-2e9d-4323-b30c-2404d5ff1f57)]
-interface nsIDOMHTMLMapElement : nsISupports
-{
-  readonly attribute nsIDOMHTMLCollection areas;
-           attribute DOMString            name;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLMenuElement.idl
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLMenuElement interface is the interface to a [X]HTML
- * menu element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(a1ca9af6-f865-4fdf-901d-5858bb0ad5ea)]
-interface nsIDOMHTMLMenuElement : nsISupports
-{
-           attribute boolean          compact;
-
-           attribute DOMString        type;
-           attribute DOMString        label;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLMetaElement.idl
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLMetaElement interface is the interface to a [X]HTML
- * meta element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(2a3f789e-0667-464f-a8d7-6f58513443d9)]
-interface nsIDOMHTMLMetaElement : nsISupports
-{
-           attribute DOMString        content;
-           attribute DOMString        httpEquiv;
-           attribute DOMString        name;
-           attribute DOMString        scheme;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLOListElement.idl
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-[uuid(d899642a-53e2-4eb4-9d65-4a666a45ee01)]
-interface nsIDOMHTMLOListElement : nsISupports
-{
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLOptGroupElement.idl
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-[uuid(6fa79f99-4ce4-4634-840a-867fcfb32dba)]
-interface nsIDOMHTMLOptGroupElement : nsISupports
-{
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLParagraphElement.idl
+++ /dev/null
@@ -1,23 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLParagraphElement interface is the interface to a
- * [X]HTML p element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(b494e517-2388-4a63-80e7-2f73be3c38a3)]
-interface nsIDOMHTMLParagraphElement : nsISupports
-{
-           attribute DOMString        align;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLPictureElement.idl
+++ /dev/null
@@ -1,12 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-[scriptable, uuid(e0e5ac7f-b969-494c-a61e-9d740e38abba)]
-interface nsIDOMHTMLPictureElement : nsISupports
-{
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLPreElement.idl
+++ /dev/null
@@ -1,23 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLPreElement interface is the interface to a [X]HTML
- * pre element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(a2441b77-ad22-4275-b1dd-1b58c044fd04)]
-interface nsIDOMHTMLPreElement : nsISupports
-{
-           attribute long             width;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLQuoteElement.idl
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-[uuid(f02502b5-32a6-4df7-8a57-1416553a3188)]
-interface nsIDOMHTMLQuoteElement : nsISupports
-{
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLStyleElement.idl
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLStyleElement interface is the interface to a [X]HTML
- * style element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(fa326d22-8739-4eef-a80e-6449bde605d2)]
-interface nsIDOMHTMLStyleElement : nsISupports
-{
-           [binaryname(MozDisabled)]
-           attribute boolean          disabled;
-           attribute DOMString        media;
-           attribute DOMString        type;
-           attribute boolean          scoped;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLTableCellElement.idl
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLTableCellElement interface is the interface to a
- * [X]HTML td element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(3203c36f-33fd-4628-8c88-77e82d38df1e)]
-interface nsIDOMHTMLTableCellElement : nsISupports
-{
-  readonly attribute long             cellIndex;
-           attribute DOMString        abbr;
-           attribute DOMString        align;
-           attribute DOMString        axis;
-           attribute DOMString        bgColor;
-           attribute DOMString        ch;
-           attribute DOMString        chOff;
-           attribute long             colSpan;
-           attribute DOMString        headers;
-           attribute DOMString        height;
-           attribute boolean          noWrap;
-           attribute long             rowSpan;
-           attribute DOMString        scope;
-           attribute DOMString        vAlign;
-           attribute DOMString        width;
-};
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLUListElement.idl
+++ /dev/null
@@ -1,11 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-[uuid(8ba1ee8d-36a4-43fc-9148-5144c2a29c96)]
-interface nsIDOMHTMLUListElement : nsISupports
-{
-};
--- a/gfx/layers/apz/util/DoubleTapToZoom.cpp
+++ b/gfx/layers/apz/util/DoubleTapToZoom.cpp
@@ -7,18 +7,16 @@
 
 #include <algorithm>  // for std::min, std::max
 
 #include "mozilla/AlreadyAddRefed.h"
 #include "mozilla/dom/Element.h"
 #include "nsCOMPtr.h"
 #include "nsIContent.h"
 #include "nsIDocument.h"
-#include "nsIDOMHTMLLIElement.h"
-#include "nsIDOMHTMLQuoteElement.h"
 #include "nsIDOMWindow.h"
 #include "nsIFrame.h"
 #include "nsIFrameInlines.h"
 #include "nsIPresShell.h"
 #include "nsLayoutUtils.h"
 #include "nsStyleConsts.h"
 
 namespace mozilla {
--- a/layout/base/nsDocumentViewer.cpp
+++ b/layout/base/nsDocumentViewer.cpp
@@ -60,17 +60,16 @@
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsDocShell.h"
 #include "nsIBaseWindow.h"
 #include "nsILayoutHistoryState.h"
 #include "nsCharsetSource.h"
 #include "mozilla/ReflowInput.h"
 #include "nsIImageLoadingContent.h"
 #include "nsCopySupport.h"
-#include "nsIDOMHTMLFrameSetElement.h"
 #include "nsIDOMHTMLImageElement.h"
 #ifdef MOZ_XUL
 #include "nsIXULDocument.h"
 #include "nsXULPopupManager.h"
 #endif
 
 #include "nsIClipboardHelper.h"
 
--- a/layout/printing/nsPrintEngine.cpp
+++ b/layout/printing/nsPrintEngine.cpp
@@ -36,17 +36,16 @@ static const char sPrintSettingsServiceC
 
 // Printing Events
 #include "nsPrintPreviewListener.h"
 #include "nsThreadUtils.h"
 
 // Printing
 #include "nsIWebBrowserPrint.h"
 #include "nsIDOMHTMLFrameElement.h"
-#include "nsIDOMHTMLFrameSetElement.h"
 #include "nsIDOMHTMLIFrameElement.h"
 #include "nsIDOMHTMLObjectElement.h"
 
 // Print Preview
 #include "imgIContainer.h" // image animation mode constants
 #include "nsIWebBrowserPrint.h" // needed for PrintPreview Navigation constants
 
 // Print Progress
--- a/layout/xul/nsImageBoxFrame.cpp
+++ b/layout/xul/nsImageBoxFrame.cpp
@@ -29,17 +29,16 @@
 #include "nsILinkHandler.h"
 #include "nsIURL.h"
 #include "nsILoadGroup.h"
 #include "nsContainerFrame.h"
 #include "nsCSSRendering.h"
 #include "nsIDOMHTMLImageElement.h"
 #include "nsNameSpaceManager.h"
 #include "nsTextFragment.h"
-#include "nsIDOMHTMLMapElement.h"
 #include "nsTransform2D.h"
 #include "nsITheme.h"
 
 #include "nsIServiceManager.h"
 #include "nsIURI.h"
 #include "nsThreadUtils.h"
 #include "nsDisplayList.h"
 #include "ImageLayers.h"
--- a/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
+++ b/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
@@ -43,56 +43,37 @@
 #include "nsIDOMFileList.h"
 #include "nsIDOMFocusEvent.h"
 #include "nsIDOMFormData.h"
 #include "nsIDOMGeoPositionError.h"
 #include "nsIDOMHistory.h"
 #include "nsIDOMHTMLAnchorElement.h"
 #include "nsIDOMHTMLAreaElement.h"
 #include "nsIDOMHTMLBaseElement.h"
-#include "nsIDOMHTMLBodyElement.h"
 #include "nsIDOMHTMLButtonElement.h"
 #include "nsIDOMHTMLCanvasElement.h"
 #include "nsIDOMHTMLCollection.h"
-#include "nsIDOMHTMLDirectoryElement.h"
 #include "nsIDOMHTMLDocument.h"
 #include "nsIDOMHTMLElement.h"
-#include "nsIDOMHTMLFieldSetElement.h"
 #include "nsIDOMHTMLFormElement.h"
 #include "nsIDOMHTMLFrameElement.h"
-#include "nsIDOMHTMLFrameSetElement.h"
-#include "nsIDOMHTMLHRElement.h"
-#include "nsIDOMHTMLHeadElement.h"
 #include "nsIDOMHTMLHtmlElement.h"
 #include "nsIDOMHTMLIFrameElement.h"
 #include "nsIDOMHTMLImageElement.h"
 #include "nsIDOMHTMLInputElement.h"
-#include "nsIDOMHTMLLIElement.h"
-#include "nsIDOMHTMLLabelElement.h"
 #include "nsIDOMHTMLLinkElement.h"
-#include "nsIDOMHTMLMapElement.h"
 #include "nsIDOMHTMLMediaElement.h"
-#include "nsIDOMHTMLMenuElement.h"
 #include "nsIDOMHTMLMenuItemElement.h"
-#include "nsIDOMHTMLMetaElement.h"
-#include "nsIDOMHTMLOListElement.h"
 #include "nsIDOMHTMLObjectElement.h"
-#include "nsIDOMHTMLOptGroupElement.h"
 #include "nsIDOMHTMLOptionElement.h"
 #include "nsIDOMHTMLOptionsCollection.h"
-#include "nsIDOMHTMLParagraphElement.h"
-#include "nsIDOMHTMLPreElement.h"
-#include "nsIDOMHTMLQuoteElement.h"
 #include "nsIDOMHTMLScriptElement.h"
 #include "nsIDOMHTMLSelectElement.h"
 #include "nsIDOMHTMLSourceElement.h"
-#include "nsIDOMHTMLStyleElement.h"
-#include "nsIDOMHTMLTableCellElement.h"
 #include "nsIDOMHTMLTextAreaElement.h"
-#include "nsIDOMHTMLUListElement.h"
 #include "nsIDOMKeyEvent.h"
 #include "nsIDOMMediaList.h"
 #include "nsIDOMMouseEvent.h"
 #include "nsIDOMMouseScrollEvent.h"
 #include "nsIDOMMutationEvent.h"
 #include "nsIDOMMozNamedAttrMap.h"
 #include "nsIDOMNode.h"
 #include "nsIDOMNodeIterator.h"
@@ -169,56 +150,38 @@
 #include "mozilla/dom/EventTargetBinding.h"
 #include "mozilla/dom/FileListBinding.h"
 #include "mozilla/dom/FocusEventBinding.h"
 #include "mozilla/dom/FormDataBinding.h"
 #include "mozilla/dom/HistoryBinding.h"
 #include "mozilla/dom/HTMLAnchorElementBinding.h"
 #include "mozilla/dom/HTMLAreaElementBinding.h"
 #include "mozilla/dom/HTMLBaseElementBinding.h"
-#include "mozilla/dom/HTMLBodyElementBinding.h"
 #include "mozilla/dom/HTMLButtonElementBinding.h"
 #include "mozilla/dom/HTMLCanvasElementBinding.h"
 #include "mozilla/dom/HTMLCollectionBinding.h"
-#include "mozilla/dom/HTMLDirectoryElementBinding.h"
 #include "mozilla/dom/HTMLDocumentBinding.h"
 #include "mozilla/dom/HTMLElementBinding.h"
-#include "mozilla/dom/HTMLFieldSetElementBinding.h"
 #include "mozilla/dom/HTMLFormElementBinding.h"
 #include "mozilla/dom/HTMLFrameElementBinding.h"
 #include "mozilla/dom/HTMLFrameSetElementBinding.h"
-#include "mozilla/dom/HTMLHRElementBinding.h"
-#include "mozilla/dom/HTMLHeadElementBinding.h"
 #include "mozilla/dom/HTMLHtmlElementBinding.h"
 #include "mozilla/dom/HTMLIFrameElementBinding.h"
 #include "mozilla/dom/HTMLImageElementBinding.h"
 #include "mozilla/dom/HTMLInputElementBinding.h"
-#include "mozilla/dom/HTMLLIElementBinding.h"
-#include "mozilla/dom/HTMLLabelElementBinding.h"
 #include "mozilla/dom/HTMLLinkElementBinding.h"
-#include "mozilla/dom/HTMLMapElementBinding.h"
 #include "mozilla/dom/HTMLMediaElementBinding.h"
-#include "mozilla/dom/HTMLMenuElementBinding.h"
 #include "mozilla/dom/HTMLMenuItemElementBinding.h"
-#include "mozilla/dom/HTMLMetaElementBinding.h"
-#include "mozilla/dom/HTMLOListElementBinding.h"
 #include "mozilla/dom/HTMLObjectElementBinding.h"
-#include "mozilla/dom/HTMLOptGroupElementBinding.h"
 #include "mozilla/dom/HTMLOptionElementBinding.h"
 #include "mozilla/dom/HTMLOptionsCollectionBinding.h"
-#include "mozilla/dom/HTMLParagraphElementBinding.h"
-#include "mozilla/dom/HTMLPreElementBinding.h"
-#include "mozilla/dom/HTMLQuoteElementBinding.h"
 #include "mozilla/dom/HTMLScriptElementBinding.h"
 #include "mozilla/dom/HTMLSelectElementBinding.h"
 #include "mozilla/dom/HTMLSourceElementBinding.h"
-#include "mozilla/dom/HTMLStyleElementBinding.h"
-#include "mozilla/dom/HTMLTableCellElementBinding.h"
 #include "mozilla/dom/HTMLTextAreaElementBinding.h"
-#include "mozilla/dom/HTMLUListElementBinding.h"
 #include "mozilla/dom/KeyEventBinding.h"
 #include "mozilla/dom/ListBoxObjectBinding.h"
 #include "mozilla/dom/MediaListBinding.h"
 #include "mozilla/dom/MessageEventBinding.h"
 #include "mozilla/dom/MenuBoxObjectBinding.h"
 #include "mozilla/dom/MouseEventBinding.h"
 #include "mozilla/dom/MouseScrollEventBinding.h"
 #include "mozilla/dom/MutationEventBinding.h"
@@ -353,56 +316,37 @@ const ComponentsInterfaceShimEntry kComp
   DEFINE_SHIM(FileList),
   DEFINE_SHIM(FocusEvent),
   DEFINE_SHIM(FormData),
   DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIDOMGeoPositionError, PositionError),
   DEFINE_SHIM(History),
   DEFINE_SHIM(HTMLAnchorElement),
   DEFINE_SHIM(HTMLAreaElement),
   DEFINE_SHIM(HTMLBaseElement),
-  DEFINE_SHIM(HTMLBodyElement),
   DEFINE_SHIM(HTMLButtonElement),
   DEFINE_SHIM(HTMLCanvasElement),
   DEFINE_SHIM(HTMLCollection),
-  DEFINE_SHIM(HTMLDirectoryElement),
   DEFINE_SHIM(HTMLDocument),
   DEFINE_SHIM(HTMLElement),
-  DEFINE_SHIM(HTMLFieldSetElement),
   DEFINE_SHIM(HTMLFormElement),
   DEFINE_SHIM(HTMLFrameElement),
-  DEFINE_SHIM(HTMLFrameSetElement),
-  DEFINE_SHIM(HTMLHRElement),
-  DEFINE_SHIM(HTMLHeadElement),
   DEFINE_SHIM(HTMLHtmlElement),
   DEFINE_SHIM(HTMLIFrameElement),
   DEFINE_SHIM(HTMLImageElement),
   DEFINE_SHIM(HTMLInputElement),
-  DEFINE_SHIM(HTMLLIElement),
-  DEFINE_SHIM(HTMLLabelElement),
   DEFINE_SHIM(HTMLLinkElement),
-  DEFINE_SHIM(HTMLMapElement),
   DEFINE_SHIM(HTMLMediaElement),
-  DEFINE_SHIM(HTMLMenuElement),
   DEFINE_SHIM(HTMLMenuItemElement),
-  DEFINE_SHIM(HTMLMetaElement),
-  DEFINE_SHIM(HTMLOListElement),
   DEFINE_SHIM(HTMLObjectElement),
-  DEFINE_SHIM(HTMLOptGroupElement),
   DEFINE_SHIM(HTMLOptionElement),
   DEFINE_SHIM(HTMLOptionsCollection),
-  DEFINE_SHIM(HTMLParagraphElement),
-  DEFINE_SHIM(HTMLPreElement),
-  DEFINE_SHIM(HTMLQuoteElement),
   DEFINE_SHIM(HTMLScriptElement),
   DEFINE_SHIM(HTMLSelectElement),
   DEFINE_SHIM(HTMLSourceElement),
-  DEFINE_SHIM(HTMLStyleElement),
-  DEFINE_SHIM(HTMLTableCellElement),
   DEFINE_SHIM(HTMLTextAreaElement),
-  DEFINE_SHIM(HTMLUListElement),
   DEFINE_SHIM(KeyEvent),
   DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIListBoxObject, ListBoxObject),
   DEFINE_SHIM(MediaList),
   DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIMenuBoxObject, MenuBoxObject),
   DEFINE_SHIM(MouseEvent),
   DEFINE_SHIM(MouseScrollEvent),
   DEFINE_SHIM(MutationEvent),
   DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIDOMMozNamedAttrMap, NamedNodeMap),