Bug 1447389 - Remove nsIDOMNodeList. r?bz draft
authorAdrian Wielgosik <adrian.wielgosik@gmail.com>
Wed, 25 Apr 2018 23:01:30 +0200
changeset 788089 bdc00eeb09e92968c98d6226e5bf164362ae9fec
parent 787860 7f6a582f00bfb5d0acb8d8bf7f8c79ca37c99b65
push id107900
push userbmo:adrian.wielgosik@gmail.com
push dateWed, 25 Apr 2018 22:27:42 +0000
reviewersbz
bugs1447389
milestone61.0a1
Bug 1447389 - Remove nsIDOMNodeList. r?bz MozReview-Commit-ID: 11szZP6dS6V
accessible/html/HTMLTableAccessible.cpp
accessible/xul/XULListboxAccessible.cpp
devtools/server/actors/webconsole/utils.js
docshell/base/nsDocShellTreeOwner.cpp
dom/base/Attr.h
dom/base/Element.cpp
dom/base/FragmentOrElement.cpp
dom/base/nsContentAreaDragDrop.cpp
dom/base/nsContentIterator.cpp
dom/base/nsContentList.cpp
dom/base/nsContentList.h
dom/base/nsContentUtils.cpp
dom/base/nsDOMWindowUtils.cpp
dom/base/nsDocument.cpp
dom/base/nsDocumentEncoder.cpp
dom/base/nsIDocument.h
dom/base/nsINode.cpp
dom/base/nsINode.h
dom/base/nsINodeList.h
dom/base/test/unit/head_xml.js
dom/base/test/unit/test_nodelist.js
dom/html/HTMLFormControlsCollection.cpp
dom/html/HTMLInputElement.cpp
dom/html/nsHTMLDocument.cpp
dom/interfaces/base/domstubs.idl
dom/interfaces/base/nsIDOMWindowUtils.idl
dom/interfaces/core/moz.build
dom/interfaces/xul/nsIDOMXULMultSelectCntrlEl.idl
dom/tests/mochitest/chrome/489127.html
dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
dom/xbl/XBLChildrenElement.cpp
dom/xbl/nsXBLService.cpp
dom/xslt/xslt/txMozillaXSLTProcessor.cpp
dom/xul/nsXULElement.cpp
extensions/spellcheck/src/mozInlineSpellChecker.cpp
layout/base/PresShell.cpp
layout/forms/nsTextControlFrame.cpp
layout/inspector/inDeepTreeWalker.cpp
layout/xul/nsButtonBoxFrame.cpp
layout/xul/nsListBoxBodyFrame.cpp
layout/xul/nsResizerFrame.cpp
layout/xul/nsTitleBarFrame.cpp
layout/xul/tree/nsTreeBodyFrame.cpp
parser/html/nsParserUtils.cpp
toolkit/components/find/nsFind.cpp
widget/GfxInfoBase.cpp
xpfe/appshell/nsChromeTreeOwner.cpp
xpfe/appshell/nsContentTreeOwner.cpp
--- a/accessible/html/HTMLTableAccessible.cpp
+++ b/accessible/html/HTMLTableAccessible.cpp
@@ -16,17 +16,16 @@
 #include "Role.h"
 #include "States.h"
 #include "TreeWalker.h"
 
 #include "mozilla/dom/HTMLTableElement.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMRange.h"
 #include "nsISelectionPrivate.h"
-#include "nsIDOMNodeList.h"
 #include "nsIHTMLCollection.h"
 #include "nsIDocument.h"
 #include "nsIMutableArray.h"
 #include "nsIPersistentProperties2.h"
 #include "nsIPresShell.h"
 #include "nsITableCellLayout.h"
 #include "nsFrameSelection.h"
 #include "nsError.h"
--- a/accessible/xul/XULListboxAccessible.cpp
+++ b/accessible/xul/XULListboxAccessible.cpp
@@ -12,19 +12,19 @@
 #include "Role.h"
 #include "States.h"
 
 #include "nsComponentManagerUtils.h"
 #include "nsIAutoCompleteInput.h"
 #include "nsIAutoCompletePopup.h"
 #include "nsIDOMXULMenuListElement.h"
 #include "nsIDOMXULMultSelectCntrlEl.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDOMXULSelectCntrlItemEl.h"
 #include "nsIMutableArray.h"
+#include "nsINodeList.h"
 #include "nsIPersistentProperties2.h"
 
 using namespace mozilla::a11y;
 
 ////////////////////////////////////////////////////////////////////////////////
 // XULColumAccessible
 ////////////////////////////////////////////////////////////////////////////////
 
@@ -266,24 +266,22 @@ XULListboxAccessible::IsCellSelected(uin
 uint32_t
 XULListboxAccessible::SelectedCellCount()
 {
   nsCOMPtr<nsIDOMXULMultiSelectControlElement> control =
     do_QueryInterface(mContent);
   NS_ASSERTION(control,
                "Doesn't implement nsIDOMXULMultiSelectControlElement.");
 
-  nsCOMPtr<nsIDOMNodeList> selectedItems;
+  nsCOMPtr<nsINodeList> selectedItems;
   control->GetSelectedItems(getter_AddRefs(selectedItems));
   if (!selectedItems)
     return 0;
 
-  nsINodeList* list = nsINodeList::FromDOMNodeList(selectedItems);
-
-  uint32_t selectedItemsCount = list->Length();
+  uint32_t selectedItemsCount = selectedItems->Length();
 
   return selectedItemsCount * ColCount();
 }
 
 uint32_t
 XULListboxAccessible::SelectedColCount()
 {
   nsCOMPtr<nsIDOMXULMultiSelectControlElement> control =
@@ -317,26 +315,25 @@ XULListboxAccessible::SelectedRowCount()
 void
 XULListboxAccessible::SelectedCells(nsTArray<Accessible*>* aCells)
 {
   nsCOMPtr<nsIDOMXULMultiSelectControlElement> control =
     do_QueryInterface(mContent);
   NS_ASSERTION(control,
                "Doesn't implement nsIDOMXULMultiSelectControlElement.");
 
-  nsCOMPtr<nsIDOMNodeList> selectedItems;
+  nsCOMPtr<nsINodeList> selectedItems;
   control->GetSelectedItems(getter_AddRefs(selectedItems));
   if (!selectedItems)
     return;
-  nsINodeList* list = nsINodeList::FromDOMNodeList(selectedItems);
 
-  uint32_t selectedItemsCount = list->Length();
+  uint32_t selectedItemsCount = selectedItems->Length();
 
   for (uint32_t index = 0; index < selectedItemsCount; index++) {
-    nsIContent* itemContent = list->Item(index);
+    nsIContent* itemContent = selectedItems->Item(index);
     Accessible* item = mDoc->GetAccessible(itemContent);
 
     if (item) {
       uint32_t cellCount = item->ChildCount();
       for (uint32_t cellIdx = 0; cellIdx < cellCount; cellIdx++) {
         Accessible* cell = mChildren[cellIdx];
         if (cell->Role() == roles::CELL)
           aCells->AppendElement(cell);
@@ -348,32 +345,31 @@ XULListboxAccessible::SelectedCells(nsTA
 void
 XULListboxAccessible::SelectedCellIndices(nsTArray<uint32_t>* aCells)
 {
   nsCOMPtr<nsIDOMXULMultiSelectControlElement> control =
     do_QueryInterface(mContent);
   NS_ASSERTION(control,
                "Doesn't implement nsIDOMXULMultiSelectControlElement.");
 
-  nsCOMPtr<nsIDOMNodeList> selectedItems;
+  nsCOMPtr<nsINodeList> selectedItems;
   control->GetSelectedItems(getter_AddRefs(selectedItems));
   if (!selectedItems)
     return;
-  nsINodeList* list = nsINodeList::FromDOMNodeList(selectedItems);
 
-  uint32_t selectedItemsCount = list->Length();
+  uint32_t selectedItemsCount = selectedItems->Length();
 
   uint32_t colCount = ColCount();
   aCells->SetCapacity(selectedItemsCount * colCount);
   aCells->AppendElements(selectedItemsCount * colCount);
 
   for (uint32_t selItemsIdx = 0, cellsIdx = 0;
        selItemsIdx < selectedItemsCount; selItemsIdx++) {
 
-    nsIContent* itemContent = list->Item(selItemsIdx);
+    nsIContent* itemContent = selectedItems->Item(selItemsIdx);
     nsCOMPtr<nsIDOMXULSelectControlItemElement> item =
       do_QueryInterface(itemContent);
 
     if (item) {
       int32_t itemIdx = -1;
       control->GetIndexOfItem(item, &itemIdx);
       if (itemIdx >= 0)
         for (uint32_t colIdx = 0; colIdx < colCount; colIdx++, cellsIdx++)
@@ -395,32 +391,31 @@ XULListboxAccessible::SelectedColIndices
 void
 XULListboxAccessible::SelectedRowIndices(nsTArray<uint32_t>* aRows)
 {
   nsCOMPtr<nsIDOMXULMultiSelectControlElement> control =
     do_QueryInterface(mContent);
   NS_ASSERTION(control,
                "Doesn't implement nsIDOMXULMultiSelectControlElement.");
 
-  nsCOMPtr<nsIDOMNodeList> selectedItems;
+  nsCOMPtr<nsINodeList> selectedItems;
   control->GetSelectedItems(getter_AddRefs(selectedItems));
   if (!selectedItems)
     return;
-  nsINodeList* list = nsINodeList::FromDOMNodeList(selectedItems);
 
-  uint32_t rowCount = list->Length();
+  uint32_t rowCount = selectedItems->Length();
 
   if (!rowCount)
     return;
 
   aRows->SetCapacity(rowCount);
   aRows->AppendElements(rowCount);
 
   for (uint32_t rowIdx = 0; rowIdx < rowCount; rowIdx++) {
-    nsIContent* itemContent = list->Item(rowIdx);
+    nsIContent* itemContent = selectedItems->Item(rowIdx);
     nsCOMPtr<nsIDOMXULSelectControlItemElement> item =
       do_QueryInterface(itemContent);
 
     if (item) {
       int32_t itemIdx = -1;
       control->GetIndexOfItem(item, &itemIdx);
       if (itemIdx >= 0)
         aRows->ElementAt(rowIdx) = itemIdx;
--- a/devtools/server/actors/webconsole/utils.js
+++ b/devtools/server/actors/webconsole/utils.js
@@ -316,17 +316,17 @@ WebConsoleCommands._registerOriginal("$"
   }
 });
 
 /**
  * Find the nodes matching a CSS selector.
  *
  * @param string selector
  *        A string that is passed to window.document.querySelectorAll.
- * @return nsIDOMNodeList
+ * @return NodeList
  *         Returns the result of document.querySelectorAll(selector).
  */
 WebConsoleCommands._registerOriginal("$$", function(owner, selector) {
   let nodes;
   try {
     nodes = owner.window.document.querySelectorAll(selector);
   } catch (err) {
     // Throw an error like `err` but that belongs to `owner.window`.
--- a/docshell/base/nsDocShellTreeOwner.cpp
+++ b/docshell/base/nsDocShellTreeOwner.cpp
@@ -21,17 +21,16 @@
 #include "nsUnicharUtils.h"
 #include "nsISimpleEnumerator.h"
 #include "mozilla/LookAndFeel.h"
 
 // Interfaces needed to be included
 #include "nsPresContext.h"
 #include "nsITooltipListener.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDOMElement.h"
 #include "Link.h"
 #include "mozilla/dom/Element.h"
 #include "mozilla/dom/MouseEvent.h"
 #include "mozilla/dom/SVGTitleElement.h"
 #include "nsIFormControl.h"
 #include "nsIImageLoadingContent.h"
 #include "nsIWebNavigation.h"
--- a/dom/base/Attr.h
+++ b/dom/base/Attr.h
@@ -9,17 +9,16 @@
  */
 
 #ifndef mozilla_dom_Attr_h
 #define mozilla_dom_Attr_h
 
 #include "mozilla/Attributes.h"
 #include "nsIAttribute.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsString.h"
 #include "nsCOMPtr.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsStubMutationObserver.h"
 
 class nsIDocument;
 
 namespace mozilla {
--- a/dom/base/Element.cpp
+++ b/dom/base/Element.cpp
@@ -21,17 +21,16 @@
 #include "mozilla/gfx/Matrix.h"
 #include "nsAtom.h"
 #include "nsCSSFrameConstructor.h"
 #include "nsDOMAttributeMap.h"
 #include "nsIContentInlines.h"
 #include "mozilla/dom/NodeInfo.h"
 #include "nsIDocumentInlines.h"
 #include "mozilla/dom/DocumentTimeline.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDOMDocument.h"
 #include "nsIContentIterator.h"
 #include "nsFlexContainerFrame.h"
 #include "nsFocusManager.h"
 #include "nsILinkHandler.h"
 #include "nsIScriptGlobalObject.h"
 #include "nsIURL.h"
 #include "nsContainerFrame.h"
--- a/dom/base/FragmentOrElement.cpp
+++ b/dom/base/FragmentOrElement.cpp
@@ -29,17 +29,16 @@
 #include "mozilla/URLExtraData.h"
 #include "mozilla/dom/Attr.h"
 #include "nsDOMAttributeMap.h"
 #include "nsAtom.h"
 #include "mozilla/dom/NodeInfo.h"
 #include "mozilla/dom/Event.h"
 #include "nsIDocumentInlines.h"
 #include "nsIDocumentEncoder.h"
-#include "nsIDOMNodeList.h"
 #include "nsIContentIterator.h"
 #include "nsFocusManager.h"
 #include "nsILinkHandler.h"
 #include "nsIScriptGlobalObject.h"
 #include "nsIURL.h"
 #include "nsNetUtil.h"
 #include "nsIFrame.h"
 #include "nsIAnonymousContentCreator.h"
@@ -491,17 +490,17 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_IN_CC_
 NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_IN_CC_END
 
 // CanSkipThis returns false to avoid problems with incomplete unlinking.
 NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_BEGIN(nsAttrChildContentList)
 NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_END
 
 NS_INTERFACE_TABLE_HEAD(nsAttrChildContentList)
   NS_WRAPPERCACHE_INTERFACE_TABLE_ENTRY
-  NS_INTERFACE_TABLE(nsAttrChildContentList, nsINodeList, nsIDOMNodeList)
+  NS_INTERFACE_TABLE(nsAttrChildContentList, nsINodeList)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsAttrChildContentList)
 NS_INTERFACE_MAP_END
 
 JSObject*
 nsAttrChildContentList::WrapObject(JSContext *cx,
                                    JS::Handle<JSObject*> aGivenProto)
 {
   return NodeListBinding::Wrap(cx, this, aGivenProto);
@@ -693,17 +692,17 @@ FragmentOrElement::nsDOMSlots::Traverse(
 
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mSlots->mStyle");
   aCb.NoteXPCOMChild(mStyle.get());
 
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mSlots->mAttributeMap");
   aCb.NoteXPCOMChild(mAttributeMap.get());
 
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mSlots->mChildrenList");
-  aCb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*, mChildrenList));
+  aCb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsINodeList*, mChildrenList));
 
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mSlots->mClassList");
   aCb.NoteXPCOMChild(mClassList.get());
 }
 
 void
 FragmentOrElement::nsDOMSlots::Unlink()
 {
@@ -783,17 +782,17 @@ FragmentOrElement::nsExtendedDOMSlots::T
 
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mExtendedSlots->mSMILOverrideStyle");
   aCb.NoteXPCOMChild(mSMILOverrideStyle.get());
 
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mExtendedSlots->mControllers");
   aCb.NoteXPCOMChild(mControllers);
 
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mExtendedSlots->mLabelsList");
-  aCb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*, mLabelsList));
+  aCb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsINodeList*, mLabelsList));
 
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mExtendedSlots->mShadowRoot");
   aCb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mShadowRoot));
 
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mExtendedSlots->mXBLBinding");
   aCb.NoteNativeChild(mXBLBinding,
                      NS_CYCLE_COLLECTION_PARTICIPANT(nsXBLBinding));
 
--- a/dom/base/nsContentAreaDragDrop.cpp
+++ b/dom/base/nsContentAreaDragDrop.cpp
@@ -12,17 +12,16 @@
 // Helper Classes
 #include "nsString.h"
 
 // Interfaces needed to be included
 #include "nsCopySupport.h"
 #include "nsISelection.h"
 #include "nsISelectionController.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsPIDOMWindow.h"
 #include "nsIDOMRange.h"
 #include "nsIFormControl.h"
 #include "nsITransferable.h"
 #include "nsComponentManagerUtils.h"
 #include "nsXPCOM.h"
 #include "nsISupportsPrimitives.h"
 #include "nsServiceManagerUtils.h"
--- a/dom/base/nsContentIterator.cpp
+++ b/dom/base/nsContentIterator.cpp
@@ -1,17 +1,16 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* 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/DebugOnly.h"
 #include "nsISupports.h"
-#include "nsIDOMNodeList.h"
 #include "nsIContentIterator.h"
 #include "nsRange.h"
 #include "nsIContent.h"
 #include "nsCOMPtr.h"
 #include "nsTArray.h"
 #include "nsContentUtils.h"
 #include "nsINode.h"
 #include "nsCycleCollectionParticipant.h"
--- a/dom/base/nsContentList.cpp
+++ b/dom/base/nsContentList.cpp
@@ -73,17 +73,17 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_IN_CC_
 
 NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_BEGIN(nsBaseContentList)
   return nsCCUncollectableMarker::sGeneration && tmp->HasKnownLiveWrapper();
 NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_END
 
 // QueryInterface implementation for nsBaseContentList
 NS_INTERFACE_TABLE_HEAD(nsBaseContentList)
   NS_WRAPPERCACHE_INTERFACE_TABLE_ENTRY
-  NS_INTERFACE_TABLE(nsBaseContentList, nsINodeList, nsIDOMNodeList)
+  NS_INTERFACE_TABLE(nsBaseContentList, nsINodeList)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsBaseContentList)
 NS_INTERFACE_MAP_END
 
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsBaseContentList)
 NS_IMPL_CYCLE_COLLECTING_RELEASE_WITH_LAST_RELEASE(nsBaseContentList,
                                                    LastRelease())
 
--- a/dom/base/nsContentList.h
+++ b/dom/base/nsContentList.h
@@ -14,17 +14,16 @@
 #define nsContentList_h___
 
 #include "mozilla/Attributes.h"
 #include "nsContentListDeclarations.h"
 #include "nsISupports.h"
 #include "nsTArray.h"
 #include "nsString.h"
 #include "nsIHTMLCollection.h"
-#include "nsIDOMNodeList.h"
 #include "nsINodeList.h"
 #include "nsStubMutationObserver.h"
 #include "nsAtom.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsNameSpaceManager.h"
 #include "nsWrapperCache.h"
 #include "nsHashKeys.h"
 #include "mozilla/HashFunctions.h"
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -131,17 +131,16 @@
 #include "nsIDocShell.h"
 #include "nsIDocShellTreeOwner.h"
 #include "nsIDocument.h"
 #include "nsIDocumentEncoder.h"
 #include "nsIDOMChromeWindow.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDOMWindowUtils.h"
 #include "nsIDragService.h"
 #include "nsIFormControl.h"
 #include "nsIForm.h"
 #include "nsIFragmentContentSink.h"
 #include "nsContainerFrame.h"
 #include "nsIHTMLDocument.h"
 #include "nsIIdleService.h"
--- a/dom/base/nsDOMWindowUtils.cpp
+++ b/dom/base/nsDOMWindowUtils.cpp
@@ -1367,17 +1367,17 @@ nsDOMWindowUtils::ElementFromPoint(float
 }
 
 NS_IMETHODIMP
 nsDOMWindowUtils::NodesFromRect(float aX, float aY,
                                 float aTopSize, float aRightSize,
                                 float aBottomSize, float aLeftSize,
                                 bool aIgnoreRootScrollFrame,
                                 bool aFlushLayout,
-                                nsIDOMNodeList** aReturn)
+                                nsINodeList** aReturn)
 {
   nsCOMPtr<nsIDocument> doc = GetDocument();
   NS_ENSURE_STATE(doc);
 
   return doc->NodesFromRectHelper(aX, aY, aTopSize, aRightSize, aBottomSize, aLeftSize,
                                   aIgnoreRootScrollFrame, aFlushLayout, aReturn);
 }
 
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -395,17 +395,17 @@ nsIdentifierMapEntry::nsIdentifierMapEnt
   , mImageElement(mozilla::Move(aOther.mImageElement))
 {}
 
 void
 nsIdentifierMapEntry::Traverse(nsCycleCollectionTraversalCallback* aCallback)
 {
   NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*aCallback,
                                      "mIdentifierMap mNameContentList");
-  aCallback->NoteXPCOMChild(static_cast<nsIDOMNodeList*>(mNameContentList));
+  aCallback->NoteXPCOMChild(static_cast<nsINodeList*>(mNameContentList));
 
   if (mImageElement) {
     NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*aCallback,
                                        "mIdentifierMap mImageElement element");
     nsIContent* imageElement = mImageElement;
     aCallback->NoteXPCOMChild(imageElement);
   }
 }
@@ -3543,17 +3543,17 @@ nsIDocument::GetCurrentScript()
 }
 
 nsresult
 nsIDocument::NodesFromRectHelper(float aX, float aY,
                                  float aTopSize, float aRightSize,
                                  float aBottomSize, float aLeftSize,
                                  bool aIgnoreRootScrollFrame,
                                  bool aFlushLayout,
-                                 nsIDOMNodeList** aReturn)
+                                 nsINodeList** aReturn)
 {
   NS_ENSURE_ARG_POINTER(aReturn);
 
   nsSimpleContentList* elements = new nsSimpleContentList(this);
   NS_ADDREF(elements);
   *aReturn = elements;
 
   // Following the same behavior of elementFromPoint,
--- a/dom/base/nsDocumentEncoder.cpp
+++ b/dom/base/nsDocumentEncoder.cpp
@@ -16,17 +16,16 @@
 #include "nsISupports.h"
 #include "nsIDocument.h"
 #include "nsIHTMLDocument.h"
 #include "nsCOMPtr.h"
 #include "nsIContentSerializer.h"
 #include "mozilla/Encoding.h"
 #include "nsIOutputStream.h"
 #include "nsIDOMElement.h"
-#include "nsIDOMNodeList.h"
 #include "nsRange.h"
 #include "nsIDOMDocument.h"
 #include "nsGkAtoms.h"
 #include "nsIContent.h"
 #include "nsIScriptContext.h"
 #include "nsIScriptGlobalObject.h"
 #include "nsIScriptSecurityManager.h"
 #include "mozilla/dom/Selection.h"
--- a/dom/base/nsIDocument.h
+++ b/dom/base/nsIDocument.h
@@ -90,17 +90,16 @@ class nsIChannel;
 class nsIContent;
 class nsIContentSink;
 class nsIDocShell;
 class nsIDocShellTreeItem;
 class nsIDocumentEncoder;
 class nsIDocumentObserver;
 class nsIDOMDocument;
 class nsIDOMElement;
-class nsIDOMNodeList;
 class nsIHTMLCollection;
 class nsILayoutHistoryState;
 class nsILoadContext;
 class nsIObjectLoadingContent;
 class nsIObserver;
 class nsIPrincipal;
 class nsIRequest;
 class nsIRunnable;
@@ -2362,17 +2361,17 @@ public:
                                           nsAtom* aAttrName,
                                           const nsAString& aAttrValue) const;
 
   nsresult NodesFromRectHelper(float aX, float aY,
                                float aTopSize, float aRightSize,
                                float aBottomSize, float aLeftSize,
                                bool aIgnoreRootScrollFrame,
                                bool aFlushLayout,
-                               nsIDOMNodeList** aReturn);
+                               nsINodeList** aReturn);
 
   /**
    * See FlushSkinBindings on nsBindingManager
    */
   void FlushSkinBindings();
 
   /**
    * To batch DOMSubtreeModified, document needs to be informed when
--- a/dom/base/nsINode.cpp
+++ b/dom/base/nsINode.cpp
@@ -57,17 +57,16 @@
 #include "nsAtom.h"
 #include "nsIBaseWindow.h"
 #include "nsICategoryManager.h"
 #include "nsIContentIterator.h"
 #include "nsIControllers.h"
 #include "nsIDocument.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMEventListener.h"
-#include "nsIDOMNodeList.h"
 #include "nsILinkHandler.h"
 #include "mozilla/dom/NodeInfo.h"
 #include "mozilla/dom/NodeInfoInlines.h"
 #include "nsIPresShell.h"
 #include "nsIScriptError.h"
 #include "nsIScriptGlobalObject.h"
 #include "nsIScriptSecurityManager.h"
 #include "nsIScrollableFrame.h"
--- a/dom/base/nsINode.h
+++ b/dom/base/nsINode.h
@@ -38,17 +38,16 @@
 
 class nsAttrAndChildArray;
 class nsAttrChildContentList;
 class nsDOMAttributeMap;
 class nsIAnimationObserver;
 class nsIContent;
 class nsIDocument;
 class nsIDOMElement;
-class nsIDOMNodeList;
 class nsIFrame;
 class nsIMutationObserver;
 class nsINode;
 class nsINodeList;
 class nsIPresShell;
 class nsIPrincipal;
 class nsIURI;
 class nsNodeSupportsWeakRefTearoff;
@@ -1177,18 +1176,18 @@ public:
     virtual void Unlink();
 
     /**
      * A list of mutation observers
      */
     nsAutoTObserverArray<nsIMutationObserver*, 1> mMutationObservers;
 
     /**
-     * An object implementing nsIDOMNodeList for this content (childNodes)
-     * @see nsIDOMNodeList
+     * An object implementing NodeList for this content (childNodes)
+     * @see NodeList
      * @see nsGenericHTMLElement::GetChildNodes
      */
     RefPtr<nsAttrChildContentList> mChildNodes;
 
     /**
      * Weak reference to this node.  This is cleared by the destructor of
      * nsNodeWeakReference.
      */
--- a/dom/base/nsINodeList.h
+++ b/dom/base/nsINodeList.h
@@ -2,32 +2,31 @@
 /* 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/. */
 
 #ifndef nsINodeList_h___
 #define nsINodeList_h___
 
-#include "nsIDOMNodeList.h"
 #include "nsWrapperCache.h"
 #include "nsIContent.h"
 
 // IID for the nsINodeList interface
 #define NS_INODELIST_IID \
 { 0xadb5e54c, 0x6e96, 0x4102, \
  { 0x8d, 0x40, 0xe0, 0x12, 0x3d, 0xcf, 0x48, 0x7a } }
 
 class nsIContent;
 class nsINode;
 
 /**
  * An internal interface for a reasonably fast indexOf.
  */
-class nsINodeList : public nsIDOMNodeList,
+class nsINodeList : public nsISupports,
                     public nsWrapperCache
 {
 public:
   NS_DECLARE_STATIC_IID_ACCESSOR(NS_INODELIST_IID)
 
   /**
    * Get the index of the given node in the list.  Will return -1 if the node
    * is not in the list.
@@ -43,18 +42,13 @@ public:
   virtual nsIContent* Item(uint32_t aIndex) = 0;
   nsIContent* IndexedGetter(uint32_t aIndex, bool& aFound)
   {
     nsIContent* item = Item(aIndex);
     aFound = !!item;
     return item;
   }
 
-  static nsINodeList* FromDOMNodeList(nsIDOMNodeList *list)
-  {
-    return static_cast<nsINodeList*>(list);
-  }
-
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsINodeList, NS_INODELIST_IID)
 
 #endif /* nsINodeList_h___ */
--- a/dom/base/test/unit/head_xml.js
+++ b/dom/base/test/unit/head_xml.js
@@ -10,17 +10,16 @@ const C                    = Cc;
 const nsIFile         = I.nsIFile;
 const nsIProperties        = I.nsIProperties;
 const nsIFileInputStream   = I.nsIFileInputStream;
 const nsIInputStream       = I.nsIInputStream;
 
 const nsIDOMDocument       = I.nsIDOMDocument;
 const nsIDOMElement        = I.nsIDOMElement;
 const nsIDOMNode           = I.nsIDOMNode;
-const nsIDOMNodeList       = I.nsIDOMNodeList;
 
 Cu.importGlobalProperties(["DOMParser", "XMLSerializer"]);
 
 function getParser() {
   var parser = new DOMParser();
   parser.forceEnableXULXBL();
   return parser;
 }
--- a/dom/base/test/unit/test_nodelist.js
+++ b/dom/base/test/unit/test_nodelist.js
@@ -1,35 +1,32 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 function run_test()
 {
-
-  /**
-   * NOTE: [i] is not allowed in this test, since it's done via classinfo and
-   * we don't have that in xpcshell.
-   */
   
   test_getElementsByTagName();
   test_getElementsByTagNameNS();
   test_getElementsByAttribute();
   test_getElementsByAttributeNS();
 
   // What else should we test?
   // XXXbz we need more tests here to test liveness!
 
 }  
 
 function test_getElementsByTagName()
 {
   var doc = ParseFile("nodelist_data_1.xml");
   var root = doc.documentElement;
 
-  // Check that getElementsByTagName returns a nodelist.
-  Assert.ok(doc.getElementsByTagName("*") instanceof nsIDOMNodeList);
-  Assert.ok(root.getElementsByTagName("*") instanceof nsIDOMNodeList);
+  // Check that getElementsByTagName returns an HTMLCollection.
+  Assert.equal(ChromeUtils.getClassName(doc.getElementsByTagName("*")),
+               "HTMLCollection")
+  Assert.ok(ChromeUtils.getClassName(root.getElementsByTagName("*")),
+            "HTMLCollection");
   
   // Check that getElementsByTagName excludes the element it's called on.
   Assert.equal(doc.getElementsByTagName("*").length,
                root.getElementsByTagName("*").length + 1);
   Assert.equal(doc.getElementById("test2").getElementsByTagName("*").length,
                8);
   Assert.equal(doc.getElementById("test2").getElementsByTagName("test").length,
                3);
@@ -44,37 +41,39 @@ function test_getElementsByTagName()
 
   for (var i = 1; i <= numTests; ++i) {
     Assert.ok(doc.getElementById("test" + i) instanceof nsIDOMElement);
     Assert.equal(doc.getElementById("test" + i),
                  doc.getElementsByTagName("test").item(i-1));
   }
 
   // Check that we handle tagnames containing ':' correctly
-  Assert.ok(doc.getElementsByTagName("foo:test")
-            instanceof nsIDOMNodeList);
+  Assert.equal(ChromeUtils.getClassName(doc.getElementsByTagName("foo:test")),
+               "HTMLCollection");
   Assert.equal(doc.getElementsByTagName("foo:test").length, 2);
 
-  Assert.ok(doc.getElementsByTagName("foo2:test")
-            instanceof nsIDOMNodeList);
+  Assert.equal(ChromeUtils.getClassName(doc.getElementsByTagName("foo2:test")),
+               "HTMLCollection");
   Assert.equal(doc.getElementsByTagName("foo2:test").length, 3);
 
-  Assert.ok(doc.getElementsByTagName("bar:test")
-            instanceof nsIDOMNodeList);
+  Assert.equal(ChromeUtils.getClassName(doc.getElementsByTagName("bar:test")),
+               "HTMLCollection");
   Assert.equal(doc.getElementsByTagName("bar:test").length, 4);
 }
 
 function test_getElementsByTagNameNS()
 {
   var doc = ParseFile("nodelist_data_1.xml");
   var root = doc.documentElement;
 
-  // Check that getElementsByTagNameNS returns a nodelist.
-  Assert.ok(doc.getElementsByTagNameNS("*", "*") instanceof nsIDOMNodeList);
-  Assert.ok(root.getElementsByTagNameNS("*", "*") instanceof nsIDOMNodeList);
+  // Check that getElementsByTagNameNS returns an HTMLCollection.
+  Assert.equal(ChromeUtils.getClassName(doc.getElementsByTagNameNS("*", "*")),
+               "HTMLCollection");
+  Assert.equal(ChromeUtils.getClassName(root.getElementsByTagNameNS("*", "*")),
+               "HTMLCollection");
 
   // Check that passing "" and null for the namespace URI gives the same result
   var list1 = doc.getElementsByTagNameNS("", "test");
   var list2 = doc.getElementsByTagNameNS(null, "test");
   Assert.equal(list1.length, list2.length);
   for (var i = 0; i < list1.length; ++i) {
     Assert.equal(list1.item(i), list2.item(i));
   }
@@ -124,32 +123,32 @@ function test_getElementsByTagNameNS()
   Assert.equal(test2.getElementsByTagNameNS("foo2", "test").length,
                0);
   Assert.equal(doc.getElementsByTagNameNS("bar", "test").length,
                4);
   Assert.equal(test2.getElementsByTagNameNS("bar", "test").length,
                2);
 
   // Check that we handle tagnames containing ':' correctly
-  Assert.ok(doc.getElementsByTagNameNS(null, "foo:test")
-            instanceof nsIDOMNodeList);
+  Assert.equal(ChromeUtils.getClassName(doc.getElementsByTagNameNS(null, "foo:test")),
+               "HTMLCollection");
   Assert.equal(doc.getElementsByTagNameNS(null, "foo:test").length, 0);
   Assert.equal(doc.getElementsByTagNameNS("foo", "foo:test").length, 0);
   Assert.equal(doc.getElementsByTagNameNS("bar", "foo:test").length, 0);
   Assert.equal(doc.getElementsByTagNameNS("*", "foo:test").length, 0);
   
-  Assert.ok(doc.getElementsByTagNameNS(null, "foo2:test")
-            instanceof nsIDOMNodeList);
+  Assert.equal(ChromeUtils.getClassName(doc.getElementsByTagNameNS(null, "foo2:test")),
+               "HTMLCollection");
   Assert.equal(doc.getElementsByTagNameNS(null, "foo2:test").length, 0);
   Assert.equal(doc.getElementsByTagNameNS("foo2", "foo2:test").length, 0);
   Assert.equal(doc.getElementsByTagNameNS("bar", "foo2:test").length, 0);
   Assert.equal(doc.getElementsByTagNameNS("*", "foo2:test").length, 0);
   
-  Assert.ok(doc.getElementsByTagNameNS(null, "bar:test")
-            instanceof nsIDOMNodeList);
+  Assert.equal(ChromeUtils.getClassName(doc.getElementsByTagNameNS(null, "bar:test")),
+               "HTMLCollection");
   Assert.equal(doc.getElementsByTagNameNS(null, "bar:test").length, 0);
   Assert.equal(doc.getElementsByTagNameNS("bar", "bar:test").length, 0);
   Assert.equal(doc.getElementsByTagNameNS("*", "bar:test").length, 0);
 
   // Check that previously-unknown namespaces are handled right.  Note that we
   // can just hardcode the strings, since we're running only once in XPCshell.
   // If someone wants to run these in a browser, some use of Math.random() may
   // be in order.
@@ -172,18 +171,18 @@ function test_getElementsByAttribute()
   var doc = ParseFile("nodelist_data_2.xul");
   var root = doc.documentElement;
 
   // Sadly, DOMParser can't create XULDocument objects.  But at least we have a
   // XULElement!
 
   Assert.equal(ChromeUtils.getClassName(root), "XULElement");
 
-  Assert.ok(root.getElementsByAttribute("foo", "foo") instanceof
-            nsIDOMNodeList);
+  Assert.equal(ChromeUtils.getClassName(root.getElementsByAttribute("foo", "foo")),
+               "HTMLCollection");
 
   var master1 = doc.getElementById("master1");
   var master2 = doc.getElementById("master2");
   var master3 = doc.getElementById("master3");
   var external = doc.getElementById("external");
 
   Assert.equal(ChromeUtils.getClassName(master1), "XULElement");
   Assert.equal(ChromeUtils.getClassName(master2), "XULElement");
@@ -289,19 +288,19 @@ function test_getElementsByAttributeNS()
   var doc = ParseFile("nodelist_data_2.xul");
   var root = doc.documentElement;
 
   // Sadly, DOMParser can't create XULDocument objects.  But at least we have a
   // XULElement!
 
   Assert.equal(ChromeUtils.getClassName(root), "XULElement");
 
-  // Check that getElementsByAttributeNS returns a nodelist.
-  Assert.ok(root.getElementsByAttributeNS("*", "*", "*") instanceof
-            nsIDOMNodeList);
+  // Check that getElementsByAttributeNS returns an HTMLCollection.
+  Assert.equal(ChromeUtils.getClassName(root.getElementsByAttributeNS("*", "*", "*")),
+               "HTMLCollection");
 
   var master1 = doc.getElementById("master1");
   var master2 = doc.getElementById("master2");
   var master3 = doc.getElementById("master3");
   var external = doc.getElementById("external");
 
   Assert.equal(ChromeUtils.getClassName(master1), "XULElement");
   Assert.equal(ChromeUtils.getClassName(master2), "XULElement");
--- a/dom/html/HTMLFormControlsCollection.cpp
+++ b/dom/html/HTMLFormControlsCollection.cpp
@@ -9,17 +9,16 @@
 #include "mozilla/FlushType.h"
 #include "mozilla/dom/BindingUtils.h"
 #include "mozilla/dom/Element.h"
 #include "mozilla/dom/HTMLFormControlsCollectionBinding.h"
 #include "mozilla/dom/HTMLFormElement.h"
 #include "nsGenericHTMLElement.h" // nsGenericHTMLFormElement
 #include "nsIDocument.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsIFormControl.h"
 #include "RadioNodeList.h"
 #include "jsfriendapi.h"
 
 namespace mozilla {
 namespace dom {
 
 /* static */ bool
--- a/dom/html/HTMLInputElement.cpp
+++ b/dom/html/HTMLInputElement.cpp
@@ -50,17 +50,16 @@
 #include "nsIServiceManager.h"
 #include "nsError.h"
 #include "nsIEditor.h"
 #include "nsDocument.h"
 #include "nsAttrValueOrString.h"
 #include "nsDateTimeControlFrame.h"
 
 #include "mozilla/PresState.h"
-#include "nsIDOMNodeList.h"
 #include "nsLinebreakConverter.h" //to strip out carriage returns
 #include "nsReadableUtils.h"
 #include "nsUnicharUtils.h"
 #include "nsLayoutUtils.h"
 #include "nsVariant.h"
 
 #include "mozilla/ContentEvents.h"
 #include "mozilla/EventDispatcher.h"
--- a/dom/html/nsHTMLDocument.cpp
+++ b/dom/html/nsHTMLDocument.cpp
@@ -18,17 +18,16 @@
 #include "nsIHTMLContentSink.h"
 #include "nsIXMLContentSink.h"
 #include "nsHTMLParts.h"
 #include "nsHTMLStyleSheet.h"
 #include "nsGkAtoms.h"
 #include "nsIPresShell.h"
 #include "nsPresContext.h"
 #include "nsIDOMNode.h" // for Find
-#include "nsIDOMNodeList.h"
 #include "nsIDOMElement.h"
 #include "nsPIDOMWindow.h"
 #include "nsDOMString.h"
 #include "nsIStreamListener.h"
 #include "nsIURI.h"
 #include "nsIURIMutator.h"
 #include "nsIIOService.h"
 #include "nsNetUtil.h"
--- a/dom/interfaces/base/domstubs.idl
+++ b/dom/interfaces/base/domstubs.idl
@@ -14,17 +14,16 @@ class nsWrapperCache;
 typedef unsigned long long DOMTimeStamp;
 typedef double DOMHighResTimeStamp;
 typedef unsigned long long nsViewID;
 
 // Core
 interface nsIDOMDocument;
 interface nsIDOMElement;
 interface nsIDOMNode;
-interface nsIDOMNodeList;
 
 // Needed for raises() in our IDL
 %{C++
 namespace mozilla {
 namespace dom {
 class DOMException;
 }
 }
--- a/dom/interfaces/base/nsIDOMWindowUtils.idl
+++ b/dom/interfaces/base/nsIDOMWindowUtils.idl
@@ -27,32 +27,32 @@ struct nsRect;
 
 [ref] native nsConstRect(const nsRect);
 native nscolor(nscolor);
 [ptr] native gfxContext(gfxContext);
 
 interface nsIArray;
 interface nsICycleCollectorListener;
 interface nsIDOMNode;
-interface nsIDOMNodeList;
 interface nsIDOMElement;
 interface nsIPreloadedStyleSheet;
 interface nsITransferable;
 interface nsIQueryContentEventResult;
 interface nsIDOMWindow;
 interface nsIFile;
 interface nsIURI;
 interface nsIRunnable;
 interface nsITranslationNodeList;
 interface nsIJSRAIIHelper;
 interface nsIContentPermissionRequest;
 interface nsIObserver;
 interface nsIDOMStorage;
 
 webidl DOMRect;
+webidl NodeList;
 webidl EventTarget;
 webidl Event;
 
 [scriptable, uuid(4d6732ca-9da7-4176-b8a1-8dde15cd0bf9)]
 interface nsIDOMWindowUtils : nsISupports {
 
   /**
    * Image animation mode of the window. When this attribute's value
@@ -758,24 +758,24 @@ interface nsIDOMWindowUtils : nsISupport
    * @param aRightSize How much to expand right the rectangle
    * @param aBottomSize How much to expand down the rectangle
    * @param aLeftSize How much to expand left the rectangle
    * @param aIgnoreRootScrollFrame whether or not to ignore the root scroll
    *        frame when retrieving the element. If false, this method returns
    *        null for coordinates outside of the viewport.
    * @param aFlushLayout flushes layout if true. Otherwise, no flush occurs.
    */
-  nsIDOMNodeList nodesFromRect(in float aX,
-                               in float aY,
-                               in float aTopSize,
-                               in float aRightSize,
-                               in float aBottomSize,
-                               in float aLeftSize,
-                               in boolean aIgnoreRootScrollFrame,
-                               in boolean aFlushLayout);
+  NodeList nodesFromRect(in float aX,
+                         in float aY,
+                         in float aTopSize,
+                         in float aRightSize,
+                         in float aBottomSize,
+                         in float aLeftSize,
+                         in boolean aIgnoreRootScrollFrame,
+                         in boolean aFlushLayout);
 
 
   /**
    * Get a list of nodes that have meaningful textual content to
    * be translated. The implementation of this algorithm is in flux
    * as we experiment and refine which approach works best.
    *
    * This method requires chrome privileges.
--- a/dom/interfaces/core/moz.build
+++ b/dom/interfaces/core/moz.build
@@ -6,14 +6,13 @@
 
 with Files("**"):
     BUG_COMPONENT = ("Core", "DOM")
 
 XPIDL_SOURCES += [
     'nsIDOMDocument.idl',
     'nsIDOMElement.idl',
     'nsIDOMNode.idl',
-    'nsIDOMNodeList.idl',
     'nsIDOMNSEditableElement.idl',
 ]
 
 XPIDL_MODULE = 'dom_core'
 
--- a/dom/interfaces/xul/nsIDOMXULMultSelectCntrlEl.idl
+++ b/dom/interfaces/xul/nsIDOMXULMultSelectCntrlEl.idl
@@ -1,36 +1,36 @@
 /* -*- 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 "nsIDOMXULSelectCntrlEl.idl"
 
-interface nsIDOMNodeList;
+webidl NodeList;
 
 [scriptable, uuid(40654a10-8204-4f06-9f21-7baa31c7b1dd)]
 interface nsIDOMXULMultiSelectControlElement : nsIDOMXULSelectControlElement
 {
   attribute DOMString selType;
 
   attribute nsIDOMXULSelectControlItemElement currentItem;
   attribute long currentIndex;
 
-  readonly attribute nsIDOMNodeList selectedItems;
+  readonly attribute NodeList selectedItems;
   
   void addItemToSelection(in nsIDOMXULSelectControlItemElement item);
   void removeItemFromSelection(in nsIDOMXULSelectControlItemElement item);
   void toggleItemSelection(in nsIDOMXULSelectControlItemElement item);
 
   void selectItem(in nsIDOMXULSelectControlItemElement item);
   void selectItemRange(in nsIDOMXULSelectControlItemElement startItem, in nsIDOMXULSelectControlItemElement item);
 
   void selectAll();
   void invertSelection();
   void clearSelection();
 
   // XXX - temporary, pending implementation of scriptable, 
-  //       mutable nsIDOMNodeList for selectedItems
+  //       mutable NodeList for selectedItems
   readonly attribute long selectedCount;
   [binaryname(MultiGetSelectedItem)]
   nsIDOMXULSelectControlItemElement getSelectedItem(in long index);
 };
--- a/dom/tests/mochitest/chrome/489127.html
+++ b/dom/tests/mochitest/chrome/489127.html
@@ -10,24 +10,24 @@
   function ok() { window.opener.ok.apply(window.opener, arguments); }
   function done() { window.opener.done.apply(window.opener, arguments); }
   let e = {};
 
   let dwu = window.QueryInterface(Ci.nsIInterfaceRequestor)
                   .getInterface(Ci.nsIDOMWindowUtils);
 
   /*
-    nsIDOMNodeList nodesFromRect(in float aX,
-                                 in float aY,
-                                 in float aTopSize, 
-                                 in float aRightSize,
-                                 in float aBottomSize,
-                                 in float aLeftSize,
-                                 in boolean aIgnoreRootScrollFrame,
-                                 in boolean aFlushLayout);
+    NodeList nodesFromRect(in float aX,
+                           in float aY,
+                           in float aTopSize, 
+                           in float aRightSize,
+                           in float aBottomSize,
+                           in float aLeftSize,
+                           in boolean aIgnoreRootScrollFrame,
+                           in boolean aFlushLayout);
 
   */
 
   function check(x, y, top, right, bottom, left, list) {
     let nodes = dwu.nodesFromRect(x, y, top, right, bottom, left, true, false);
     
     list.push(e.body);
     list.push(e.html);
--- a/dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
+++ b/dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
@@ -27,17 +27,16 @@
 #include "nsContentCID.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsDOMAttributeMap.h"
 #include "nsFrameLoader.h"
 #include "nsIComponentRegistrar.h"
 #include "nsIContent.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDOMWindowUtils.h"
 #include "nsIDocShell.h"
 #include "nsIDocument.h"
 #include "nsIDocumentEncoder.h"
 #include "nsILoadContext.h"
 #include "nsIProtocolHandler.h"
 #include "nsISHEntry.h"
 #include "nsISupportsPrimitives.h"
--- a/dom/xbl/XBLChildrenElement.cpp
+++ b/dom/xbl/XBLChildrenElement.cpp
@@ -78,17 +78,17 @@ using namespace mozilla::dom;
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(nsAnonymousContentList, mParent)
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsAnonymousContentList)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsAnonymousContentList)
 
 NS_INTERFACE_TABLE_HEAD(nsAnonymousContentList)
   NS_WRAPPERCACHE_INTERFACE_TABLE_ENTRY
-  NS_INTERFACE_TABLE(nsAnonymousContentList, nsINodeList, nsIDOMNodeList)
+  NS_INTERFACE_TABLE(nsAnonymousContentList, nsINodeList)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsAnonymousContentList)
 NS_INTERFACE_MAP_END
 
 uint32_t
 nsAnonymousContentList::Length()
 {
   if (!mParent) {
     return 0;
--- a/dom/xbl/nsXBLService.cpp
+++ b/dom/xbl/nsXBLService.cpp
@@ -22,17 +22,16 @@
 #include "nsIContent.h"
 #include "nsIDocument.h"
 #include "nsIXMLContentSink.h"
 #include "nsContentCID.h"
 #include "mozilla/dom/XMLDocument.h"
 #include "nsGkAtoms.h"
 #include "nsIMemory.h"
 #include "nsIObserverService.h"
-#include "nsIDOMNodeList.h"
 #include "nsXBLContentSink.h"
 #include "nsXBLBinding.h"
 #include "nsXBLPrototypeBinding.h"
 #include "nsXBLDocumentInfo.h"
 #include "nsCRT.h"
 #include "nsContentUtils.h"
 #include "nsSyncLoadService.h"
 #include "nsContentPolicyUtils.h"
--- a/dom/xslt/xslt/txMozillaXSLTProcessor.cpp
+++ b/dom/xslt/xslt/txMozillaXSLTProcessor.cpp
@@ -6,17 +6,16 @@
 #include "txMozillaXSLTProcessor.h"
 #include "nsContentCID.h"
 #include "nsError.h"
 #include "nsIChannel.h"
 #include "mozilla/dom/Element.h"
 #include "nsIDOMElement.h"
 #include "nsIDocument.h"
 #include "nsIDOMDocument.h"
-#include "nsIDOMNodeList.h"
 #include "nsIIOService.h"
 #include "nsILoadGroup.h"
 #include "nsIStringBundle.h"
 #include "nsIURI.h"
 #include "nsMemory.h"
 #include "XPathResult.h"
 #include "txExecutionState.h"
 #include "txMozillaTextOutput.h"
--- a/dom/xul/nsXULElement.cpp
+++ b/dom/xul/nsXULElement.cpp
@@ -7,17 +7,16 @@
 #include "nsDOMCID.h"
 #include "nsError.h"
 #include "nsDOMString.h"
 #include "nsAtom.h"
 #include "nsIBaseWindow.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMEventListener.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDOMXULCommandDispatcher.h"
 #include "nsIDOMXULSelectCntrlItemEl.h"
 #include "nsIDocument.h"
 #include "mozilla/AsyncEventDispatcher.h"
 #include "mozilla/ClearOnShutdown.h"
 #include "mozilla/EventListenerManager.h"
 #include "mozilla/EventStateManager.h"
 #include "mozilla/EventStates.h"
--- a/extensions/spellcheck/src/mozInlineSpellChecker.cpp
+++ b/extensions/spellcheck/src/mozInlineSpellChecker.cpp
@@ -48,17 +48,16 @@
 #include "mozISpellI18NManager.h"
 #include "mozISpellI18NUtil.h"
 #include "nsCOMPtr.h"
 #include "nsCRT.h"
 #include "nsIDOMNode.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsGenericHTMLElement.h"
 #include "nsRange.h"
 #include "nsIPlaintextEditor.h"
 #include "nsIPrefBranch.h"
 #include "nsIPrefService.h"
 #include "nsIRunnable.h"
 #include "nsISelection.h"
 #include "nsISelectionPrivate.h"
--- a/layout/base/PresShell.cpp
+++ b/layout/base/PresShell.cpp
@@ -57,17 +57,16 @@
 #include "nsTArray.h"
 #include "nsCOMArray.h"
 #include "nsContainerFrame.h"
 #include "nsISelection.h"
 #include "mozilla/dom/Selection.h"
 #include "nsGkAtoms.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDOMElement.h"
 #include "nsRange.h"
 #include "nsWindowSizes.h"
 #include "nsCOMPtr.h"
 #include "nsAutoPtr.h"
 #include "nsReadableUtils.h"
 #include "nsIPageSequenceFrame.h"
 #include "nsIPermissionManager.h"
--- a/layout/forms/nsTextControlFrame.cpp
+++ b/layout/forms/nsTextControlFrame.cpp
@@ -22,17 +22,16 @@
 #include "nsIContent.h"
 #include "nsPresContext.h"
 #include "nsGkAtoms.h"
 #include "nsLayoutUtils.h"
 #include "nsIDOMElement.h"
 #include "nsIPresShell.h"
 
 #include <algorithm>
-#include "nsIDOMNodeList.h" //for selection setting helper func
 #include "nsRange.h" //for selection setting helper func
 #include "nsINode.h"
 #include "nsPIDOMWindow.h" //needed for notify selection changed to update the menus ect.
 #include "nsQueryObject.h"
 #include "nsILayoutHistoryState.h"
 
 #include "nsFocusManager.h"
 #include "mozilla/PresState.h"
--- a/layout/inspector/inDeepTreeWalker.cpp
+++ b/layout/inspector/inDeepTreeWalker.cpp
@@ -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/. */
 
 #include "inDeepTreeWalker.h"
 #include "inLayoutUtils.h"
 
 #include "nsString.h"
 #include "nsIDOMDocument.h"
-#include "nsIDOMNodeList.h"
 #include "nsServiceManagerUtils.h"
 #include "nsIContent.h"
 #include "ChildIterator.h"
 #include "mozilla/dom/Element.h"
 #include "mozilla/dom/InspectorUtils.h"
 #include "mozilla/dom/NodeFilterBinding.h"
 
 /*****************************************************************************
--- a/layout/xul/nsButtonBoxFrame.cpp
+++ b/layout/xul/nsButtonBoxFrame.cpp
@@ -1,17 +1,16 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* 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 "nsCOMPtr.h"
 #include "nsButtonBoxFrame.h"
 #include "nsIContent.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDOMXULButtonElement.h"
 #include "nsGkAtoms.h"
 #include "nsNameSpaceManager.h"
 #include "nsPresContext.h"
 #include "nsIPresShell.h"
 #include "nsIDOMElement.h"
 #include "nsDisplayList.h"
 #include "nsContentUtils.h"
--- a/layout/xul/nsListBoxBodyFrame.cpp
+++ b/layout/xul/nsListBoxBodyFrame.cpp
@@ -12,17 +12,16 @@
 #include "nsCOMPtr.h"
 #include "nsGridRowGroupLayout.h"
 #include "nsIServiceManager.h"
 #include "nsGkAtoms.h"
 #include "nsIContent.h"
 #include "nsNameSpaceManager.h"
 #include "nsIDocument.h"
 #include "nsIDOMElement.h"
-#include "nsIDOMNodeList.h"
 #include "nsCSSFrameConstructor.h"
 #include "nsIScrollableFrame.h"
 #include "nsScrollbarFrame.h"
 #include "nsView.h"
 #include "nsViewManager.h"
 #include "mozilla/ComputedStyle.h"
 #include "nsFontMetrics.h"
 #include "nsITimer.h"
--- a/layout/xul/nsResizerFrame.cpp
+++ b/layout/xul/nsResizerFrame.cpp
@@ -5,17 +5,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsAutoPtr.h"
 #include "nsCOMPtr.h"
 #include "nsIServiceManager.h"
 #include "nsResizerFrame.h"
 #include "nsIContent.h"
 #include "nsIDocument.h"
-#include "nsIDOMNodeList.h"
 #include "nsGkAtoms.h"
 #include "nsNameSpaceManager.h"
 
 #include "nsPresContext.h"
 #include "nsFrameManager.h"
 #include "nsIDocShell.h"
 #include "nsIDocShellTreeOwner.h"
 #include "nsIBaseWindow.h"
--- a/layout/xul/nsTitleBarFrame.cpp
+++ b/layout/xul/nsTitleBarFrame.cpp
@@ -3,17 +3,16 @@
 /* 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 "nsCOMPtr.h"
 #include "nsTitleBarFrame.h"
 #include "nsIContent.h"
 #include "nsIDocument.h"
-#include "nsIDOMNodeList.h"
 #include "nsGkAtoms.h"
 #include "nsIWidget.h"
 #include "nsMenuPopupFrame.h"
 #include "nsPresContext.h"
 #include "nsIDocShell.h"
 #include "nsPIDOMWindow.h"
 #include "nsDisplayList.h"
 #include "nsContentUtils.h"
--- a/layout/xul/tree/nsTreeBodyFrame.cpp
+++ b/layout/xul/tree/nsTreeBodyFrame.cpp
@@ -30,17 +30,16 @@
 #include "nsGkAtoms.h"
 #include "nsCSSAnonBoxes.h"
 
 #include "gfxContext.h"
 #include "nsIContent.h"
 #include "mozilla/ComputedStyle.h"
 #include "nsIBoxObject.h"
 #include "nsIDOMElement.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDocument.h"
 #include "nsCSSRendering.h"
 #include "nsString.h"
 #include "nsContainerFrame.h"
 #include "nsView.h"
 #include "nsViewManager.h"
 #include "nsVariant.h"
 #include "nsWidgetsCID.h"
--- a/parser/html/nsParserUtils.cpp
+++ b/parser/html/nsParserUtils.cpp
@@ -16,17 +16,16 @@
 #include "nsHTMLParts.h"
 #include "nsHtml5Module.h"
 #include "nsIComponentManager.h"
 #include "nsIContent.h"
 #include "nsIContentSink.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDTD.h"
 #include "nsIDocument.h"
 #include "nsIDocumentEncoder.h"
 #include "nsIFragmentContentSink.h"
 #include "nsIParser.h"
 #include "nsIScriptableUnescapeHTML.h"
 #include "nsISupportsPrimitives.h"
 #include "nsNetCID.h"
--- a/toolkit/components/find/nsFind.cpp
+++ b/toolkit/components/find/nsFind.cpp
@@ -5,17 +5,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 //#define DEBUG_FIND 1
 
 #include "nsFind.h"
 #include "nsContentCID.h"
 #include "nsIContent.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsISelection.h"
 #include "nsISelectionController.h"
 #include "nsIFrame.h"
 #include "nsITextControlFrame.h"
 #include "nsIFormControl.h"
 #include "nsTextFragment.h"
 #include "nsString.h"
 #include "nsAtom.h"
--- a/widget/GfxInfoBase.cpp
+++ b/widget/GfxInfoBase.cpp
@@ -16,17 +16,16 @@
 #include "nsUnicharUtils.h"
 #include "nsVersionComparator.h"
 #include "mozilla/Services.h"
 #include "mozilla/Observer.h"
 #include "nsIObserver.h"
 #include "nsIObserverService.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMNode.h"
-#include "nsIDOMNodeList.h"
 #include "nsTArray.h"
 #include "nsXULAppAPI.h"
 #include "nsIXULAppInfo.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/dom/ContentChild.h"
 #include "mozilla/gfx/2D.h"
 #include "mozilla/gfx/GPUProcessManager.h"
 #include "mozilla/gfx/Logging.h"
--- a/xpfe/appshell/nsChromeTreeOwner.cpp
+++ b/xpfe/appshell/nsChromeTreeOwner.cpp
@@ -19,17 +19,16 @@
 #include "nsIAuthPrompt.h"
 #include "nsIBrowserDOMWindow.h"
 #include "nsIWebProgress.h"
 #include "nsIWidget.h"
 #include "nsIWindowMediator.h"
 #include "nsIDOMChromeWindow.h"
 #include "nsIDOMNode.h"
 #include "nsIDOMElement.h"
-#include "nsIDOMNodeList.h"
 #include "nsIXULBrowserWindow.h"
 #include "mozilla/dom/Element.h"
 
 using namespace mozilla;
 
 //*****************************************************************************
 // nsChromeTreeOwner string literals
 //*****************************************************************************
--- a/xpfe/appshell/nsContentTreeOwner.cpp
+++ b/xpfe/appshell/nsContentTreeOwner.cpp
@@ -11,17 +11,16 @@
 
 // Helper Classes
 #include "nsIServiceManager.h"
 #include "nsAutoPtr.h"
 
 // Interfaces needed to be included
 #include "nsIDOMNode.h"
 #include "nsIDOMElement.h"
-#include "nsIDOMNodeList.h"
 #include "nsIDOMWindow.h"
 #include "nsIDOMChromeWindow.h"
 #include "nsIBrowserDOMWindow.h"
 #include "nsIEmbeddingSiteWindow.h"
 #include "nsIPrompt.h"
 #include "nsIAuthPrompt.h"
 #include "nsIWindowMediator.h"
 #include "nsIXULBrowserWindow.h"