Bug 394114 Interfaces missing from various QI implementations. r=jag sr=jag a=dsicore
authortimeless@mozdev.org
Wed, 19 Mar 2008 14:19:35 -0700
changeset 13313 eeb8edf346bc71a6c4016925e196744c81f3ae67
parent 13312 94ded28fac60b3419c9615a8badf170c0bdf66cd
child 13314 7a76a837069e26961a42964506069c5bc720f60e
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjag, jag, dsicore
bugs394114
milestone1.9b5pre
Bug 394114 Interfaces missing from various QI implementations. r=jag sr=jag a=dsicore
browser/components/feeds/src/nsFeedSniffer.cpp
content/base/src/nsDOMParser.cpp
content/base/src/nsGenConImageContent.cpp
content/base/src/nsSyncLoadService.cpp
content/html/content/src/nsHTMLImageElement.cpp
content/html/content/src/nsHTMLInputElement.cpp
content/html/content/src/nsHTMLObjectElement.cpp
content/html/content/src/nsHTMLSharedObjectElement.cpp
content/svg/content/src/nsDOMSVGZoomEvent.cpp
content/xml/document/src/nsLoadSaveContentSink.cpp
embedding/browser/webBrowser/nsWebBrowser.cpp
js/src/xpconnect/tests/components/xpctest_child.cpp
layout/forms/nsComboboxControlFrame.cpp
layout/forms/nsFileControlFrame.cpp
layout/forms/nsIsIndexFrame.cpp
layout/forms/nsTextControlFrame.cpp
layout/inspector/src/inDeepTreeWalker.cpp
layout/xul/base/src/nsMenuBarListener.cpp
layout/xul/base/src/nsSliderFrame.cpp
layout/xul/base/src/nsSplitterFrame.cpp
layout/xul/base/src/nsXULPopupManager.cpp
netwerk/streamconv/converters/mozTXTToHTMLConv.cpp
netwerk/streamconv/converters/nsHTTPCompressConv.cpp
netwerk/streamconv/test/Converters.cpp
netwerk/streamconv/test/TestStreamConv.cpp
netwerk/test/TestUpload.cpp
parser/htmlparser/tests/grabpage/grabpage.cpp
plugin/oji/MRJ/plugin/Source/BackwardAdapter.cpp
toolkit/components/places/src/nsFaviconService.cpp
xpcom/base/nsExceptionService.cpp
xpcom/glue/nsISupportsImpl.h
xpfe/components/related/src/nsRelatedLinksHandler.cpp
xpinstall/src/nsXPInstallManager.cpp
--- a/browser/components/feeds/src/nsFeedSniffer.cpp
+++ b/browser/components/feeds/src/nsFeedSniffer.cpp
@@ -64,17 +64,20 @@
 #define TYPE_RSS "application/rss+xml"
 #define TYPE_MAYBE_FEED "application/vnd.mozilla.maybe.feed"
 
 #define NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 #define NS_RSS "http://purl.org/rss/1.0/"
 
 #define MAX_BYTES 512
 
-NS_IMPL_ISUPPORTS2(nsFeedSniffer, nsIContentSniffer, nsIStreamListener)
+NS_IMPL_ISUPPORTS3(nsFeedSniffer,
+                   nsIContentSniffer,
+                   nsIStreamListener,
+                   nsIRequestObserver)
 
 nsresult
 nsFeedSniffer::ConvertEncodedData(nsIRequest* request,
                                   const PRUint8* data,
                                   PRUint32 length)
 {
   nsresult rv = NS_OK;
 
--- a/content/base/src/nsDOMParser.cpp
+++ b/content/base/src/nsDOMParser.cpp
@@ -118,16 +118,17 @@ nsDOMParser::~nsDOMParser()
 
 
 // QueryInterface implementation for nsDOMParser
 NS_INTERFACE_MAP_BEGIN(nsDOMParser)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMParser)
   NS_INTERFACE_MAP_ENTRY(nsIDOMParser)
   NS_INTERFACE_MAP_ENTRY(nsIDOMParserJS)
   NS_INTERFACE_MAP_ENTRY(nsIDOMLoadListener)
+  NS_INTERFACE_MAP_ENTRY(nsIDOMEventListener)
   NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
   NS_INTERFACE_MAP_ENTRY(nsIJSNativeInitializer)
   NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(DOMParser)
 NS_INTERFACE_MAP_END
 
 
 NS_IMPL_ADDREF(nsDOMParser)
 NS_IMPL_RELEASE(nsDOMParser)
--- a/content/base/src/nsGenConImageContent.cpp
+++ b/content/base/src/nsGenConImageContent.cpp
@@ -68,18 +68,21 @@ public:
   
 private:
   virtual ~nsGenConImageContent();
 
 public:
   NS_DECL_ISUPPORTS_INHERITED
 };
 
-NS_IMPL_ISUPPORTS_INHERITED2(nsGenConImageContent, nsXMLElement,
-                             nsIImageLoadingContent, imgIDecoderObserver)
+NS_IMPL_ISUPPORTS_INHERITED3(nsGenConImageContent,
+                             nsXMLElement,
+                             nsIImageLoadingContent,
+                             imgIContainerObserver,
+                             imgIDecoderObserver)
 
 nsresult
 NS_NewGenConImageContent(nsIContent** aResult, nsINodeInfo* aNodeInfo,
                          imgIRequest* aImageRequest)
 {
   NS_PRECONDITION(aImageRequest, "Must have request!");
   nsGenConImageContent *it = new nsGenConImageContent(aNodeInfo);
   if (!it)
--- a/content/base/src/nsSyncLoadService.cpp
+++ b/content/base/src/nsSyncLoadService.cpp
@@ -150,18 +150,19 @@ nsForceXMLListener::OnStopRequest(nsIReq
 
 nsSyncLoader::~nsSyncLoader()
 {
     if (mLoading && mChannel) {
         mChannel->Cancel(NS_BINDING_ABORTED);
     }
 }
 
-NS_IMPL_ISUPPORTS4(nsSyncLoader,
+NS_IMPL_ISUPPORTS5(nsSyncLoader,
                    nsIDOMLoadListener,
+                   nsIDOMEventListener,
                    nsIChannelEventSink,
                    nsIInterfaceRequestor,
                    nsISupportsWeakReference)
 
 nsresult
 nsSyncLoader::LoadDocument(nsIChannel* aChannel,
                            nsIPrincipal *aLoaderPrincipal,
                            PRBool aChannelIsSync,
--- a/content/html/content/src/nsHTMLImageElement.cpp
+++ b/content/html/content/src/nsHTMLImageElement.cpp
@@ -187,20 +187,21 @@ nsHTMLImageElement::~nsHTMLImageElement(
 
 
 NS_IMPL_ADDREF_INHERITED(nsHTMLImageElement, nsGenericElement)
 NS_IMPL_RELEASE_INHERITED(nsHTMLImageElement, nsGenericElement)
 
 
 // QueryInterface implementation for nsHTMLImageElement
 NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLImageElement, nsGenericHTMLElement)
-  NS_INTERFACE_TABLE_INHERITED5(nsHTMLImageElement,
+  NS_INTERFACE_TABLE_INHERITED6(nsHTMLImageElement,
                                 nsIDOMHTMLImageElement,
                                 nsIDOMNSHTMLImageElement,
                                 nsIJSNativeInitializer,
+                                imgIContainerObserver,
                                 imgIDecoderObserver,
                                 nsIImageLoadingContent)
 NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLImageElement)
 
 
 NS_IMPL_ELEMENT_CLONE(nsHTMLImageElement)
 
 
--- a/content/html/content/src/nsHTMLInputElement.cpp
+++ b/content/html/content/src/nsHTMLInputElement.cpp
@@ -405,26 +405,27 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 
 NS_IMPL_ADDREF_INHERITED(nsHTMLInputElement, nsGenericElement) 
 NS_IMPL_RELEASE_INHERITED(nsHTMLInputElement, nsGenericElement) 
 
 
 // QueryInterface implementation for nsHTMLInputElement
 NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLInputElement,
                                         nsGenericHTMLFormElement)
-  NS_INTERFACE_TABLE_INHERITED9(nsHTMLInputElement,
-                                nsIDOMHTMLInputElement,
-                                nsIDOMNSHTMLInputElement,
-                                nsITextControlElement,
-                                nsIFileControlElement,
-                                nsIRadioControlElement,
-                                nsIPhonetic,
-                                imgIDecoderObserver,
-                                nsIImageLoadingContent,
-                                nsIDOMNSEditableElement)
+  NS_INTERFACE_TABLE_INHERITED10(nsHTMLInputElement,
+                                 nsIDOMHTMLInputElement,
+                                 nsIDOMNSHTMLInputElement,
+                                 nsITextControlElement,
+                                 nsIFileControlElement,
+                                 nsIRadioControlElement,
+                                 nsIPhonetic,
+                                 imgIContainerObserver,
+                                 imgIDecoderObserver,
+                                 nsIImageLoadingContent,
+                                 nsIDOMNSEditableElement)
 NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLInputElement)
 
 
 // nsIDOMNode
 
 nsresult
 nsHTMLInputElement::Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const
 {
--- a/content/html/content/src/nsHTMLObjectElement.cpp
+++ b/content/html/content/src/nsHTMLObjectElement.cpp
@@ -163,26 +163,27 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_
   tmp->Traverse(cb);
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 
 NS_IMPL_ADDREF_INHERITED(nsHTMLObjectElement, nsGenericElement) 
 NS_IMPL_RELEASE_INHERITED(nsHTMLObjectElement, nsGenericElement) 
 
 NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLObjectElement,
                                         nsGenericHTMLFormElement)
-  NS_INTERFACE_TABLE_INHERITED9(nsHTMLObjectElement,
-                                nsIDOMHTMLObjectElement,
-                                imgIDecoderObserver,
-                                nsIRequestObserver,
-                                nsIStreamListener,
-                                nsIFrameLoaderOwner,
-                                nsIObjectLoadingContent,
-                                nsIImageLoadingContent,
-                                nsIInterfaceRequestor,
-                                nsIChannelEventSink)
+  NS_INTERFACE_TABLE_INHERITED10(nsHTMLObjectElement,
+                                 nsIDOMHTMLObjectElement,
+                                 nsIRequestObserver,
+                                 nsIStreamListener,
+                                 nsIFrameLoaderOwner,
+                                 imgIContainerObserver,
+                                 imgIDecoderObserver,
+                                 nsIObjectLoadingContent,
+                                 nsIImageLoadingContent,
+                                 nsIInterfaceRequestor,
+                                 nsIChannelEventSink)
 NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLObjectElement)
 
 NS_IMPL_ELEMENT_CLONE(nsHTMLObjectElement)
 
 
 NS_IMETHODIMP
 nsHTMLObjectElement::GetForm(nsIDOMHTMLFormElement **aForm)
 {
--- a/content/html/content/src/nsHTMLSharedObjectElement.cpp
+++ b/content/html/content/src/nsHTMLSharedObjectElement.cpp
@@ -208,22 +208,23 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 
 NS_IMPL_ADDREF_INHERITED(nsHTMLSharedObjectElement, nsGenericElement) 
 NS_IMPL_RELEASE_INHERITED(nsHTMLSharedObjectElement, nsGenericElement) 
 
 NS_HTML_CONTENT_CC_INTERFACE_TABLE_AMBIGUOUS_HEAD(nsHTMLSharedObjectElement,
                                                   nsGenericHTMLElement,
                                                   nsIDOMHTMLAppletElement)
-  NS_INTERFACE_TABLE_INHERITED8(nsHTMLSharedObjectElement,
-                                imgIDecoderObserver,
+  NS_INTERFACE_TABLE_INHERITED9(nsHTMLSharedObjectElement,
                                 nsIRequestObserver,
                                 nsIStreamListener,
                                 nsIFrameLoaderOwner,
+                                imgIContainerObserver,
                                 nsIObjectLoadingContent,
+                                imgIDecoderObserver,
                                 nsIImageLoadingContent,
                                 nsIInterfaceRequestor,
                                 nsIChannelEventSink)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE
   NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLAppletElement, applet)
   NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLEmbedElement, embed)
 #ifdef MOZ_SVG
   NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMGetSVGDocument, embed)
--- a/content/svg/content/src/nsDOMSVGZoomEvent.cpp
+++ b/content/svg/content/src/nsDOMSVGZoomEvent.cpp
@@ -107,16 +107,17 @@ nsDOMSVGZoomEvent::nsDOMSVGZoomEvent(nsP
 //----------------------------------------------------------------------
 // nsISupports methods:
 
 NS_IMPL_ADDREF_INHERITED(nsDOMSVGZoomEvent, nsDOMEvent)
 NS_IMPL_RELEASE_INHERITED(nsDOMSVGZoomEvent, nsDOMEvent)
 
 NS_INTERFACE_MAP_BEGIN(nsDOMSVGZoomEvent)
   NS_INTERFACE_MAP_ENTRY(nsIDOMSVGZoomEvent)
+  NS_INTERFACE_MAP_ENTRY(nsIDOMUIEvent)
   NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(SVGZoomEvent)
 NS_INTERFACE_MAP_END_INHERITING(nsDOMEvent)
 
 
 //----------------------------------------------------------------------
 // nsIDOMSVGZoomEvent methods:
 
 /* readonly attribute SVGRect zoomRectScreen; */
--- a/content/xml/document/src/nsLoadSaveContentSink.cpp
+++ b/content/xml/document/src/nsLoadSaveContentSink.cpp
@@ -81,16 +81,17 @@ nsLoadSaveContentSink::Init(nsIXMLConten
   return NS_OK;
 }
 
 NS_IMPL_THREADSAFE_ADDREF(nsLoadSaveContentSink)
 NS_IMPL_THREADSAFE_RELEASE(nsLoadSaveContentSink)
 
 NS_INTERFACE_MAP_BEGIN(nsLoadSaveContentSink)
   NS_INTERFACE_MAP_ENTRY(nsIXMLContentSink)
+  NS_INTERFACE_MAP_ENTRY(nsIContentSink)
   NS_INTERFACE_MAP_ENTRY(nsIExpatSink)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIXMLContentSink)
 NS_INTERFACE_MAP_END
 
 // nsIContentSink
 NS_IMETHODIMP
 nsLoadSaveContentSink::WillBuildModel(void)
 {
--- a/embedding/browser/webBrowser/nsWebBrowser.cpp
+++ b/embedding/browser/webBrowser/nsWebBrowser.cpp
@@ -168,16 +168,17 @@ NS_IMPL_RELEASE(nsWebBrowser)
 NS_INTERFACE_MAP_BEGIN(nsWebBrowser)
     NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowser)
     NS_INTERFACE_MAP_ENTRY(nsIWebBrowser)
     NS_INTERFACE_MAP_ENTRY(nsIWebNavigation)
     NS_INTERFACE_MAP_ENTRY(nsIBaseWindow)
     NS_INTERFACE_MAP_ENTRY(nsIScrollable)
     NS_INTERFACE_MAP_ENTRY(nsITextScroll)
     NS_INTERFACE_MAP_ENTRY(nsIDocShellTreeItem)
+    NS_INTERFACE_MAP_ENTRY(nsIDocShellTreeNode)
     NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
     NS_INTERFACE_MAP_ENTRY(nsIWebBrowserSetup)
     NS_INTERFACE_MAP_ENTRY(nsIWebBrowserPersist)
     NS_INTERFACE_MAP_ENTRY(nsICancelable)
     NS_INTERFACE_MAP_ENTRY(nsIWebBrowserFocus)
     NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener)
     NS_INTERFACE_MAP_ENTRY(nsIWebBrowserStream)
     NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
--- a/js/src/xpconnect/tests/components/xpctest_child.cpp
+++ b/js/src/xpconnect/tests/components/xpctest_child.cpp
@@ -75,17 +75,20 @@ xpctestOther::xpctestOther()
 }
 
 NS_IMETHODIMP xpctestOther::Method3(PRInt16 i, PRInt16 j, PRInt16 k)
 {
     printf("Method3 called on inherited other\n");
     return NS_OK;
 }
 
-NS_IMPL_ISUPPORTS_INHERITED1(xpctestChild, xpctestOther, nsIXPCTestChild)
+NS_IMPL_ISUPPORTS_INHERITED2(xpctestChild,
+                             xpctestOther,
+                             nsIXPCTestChild,
+                             nsIXPCTestParent)
 
 xpctestChild::xpctestChild()
 {
 }
 
 NS_IMETHODIMP xpctestChild::Method1(PRInt16 i)
 {
     printf("Method1 called on child\n");
--- a/layout/forms/nsComboboxControlFrame.cpp
+++ b/layout/forms/nsComboboxControlFrame.cpp
@@ -148,17 +148,19 @@ class nsComboButtonListener: public nsID
     mComboBox = aCombobox; 
   }
 
   virtual ~nsComboButtonListener() {}
 
   nsComboboxControlFrame* mComboBox;
 };
 
-NS_IMPL_ISUPPORTS1(nsComboButtonListener, nsIDOMMouseListener)
+NS_IMPL_ISUPPORTS2(nsComboButtonListener,
+                   nsIDOMMouseListener,
+                   nsIDOMEventListener)
 
 // static class data member for Bug 32920
 nsComboboxControlFrame * nsComboboxControlFrame::mFocused = nsnull;
 
 nsIFrame*
 NS_NewComboboxControlFrame(nsIPresShell* aPresShell, nsStyleContext* aContext, PRUint32 aStateFlags)
 {
   nsComboboxControlFrame* it = new (aPresShell) nsComboboxControlFrame(aContext);
--- a/layout/forms/nsFileControlFrame.cpp
+++ b/layout/forms/nsFileControlFrame.cpp
@@ -607,17 +607,19 @@ NS_IMETHODIMP nsFileControlFrame::GetAcc
 
   return NS_ERROR_FAILURE;
 }
 #endif
 
 ////////////////////////////////////////////////////////////
 // Mouse listener implementation
 
-NS_IMPL_ISUPPORTS1(nsFileControlFrame::MouseListener, nsIDOMMouseListener)
+NS_IMPL_ISUPPORTS2(nsFileControlFrame::MouseListener,
+                   nsIDOMMouseListener,
+                   nsIDOMEventListener)
 
 NS_IMETHODIMP
 nsFileControlFrame::MouseListener::MouseClick(nsIDOMEvent* aMouseEvent)
 {
   if (mFrame) {
     return mFrame->MouseClick(aMouseEvent);
   }
 
--- a/layout/forms/nsIsIndexFrame.cpp
+++ b/layout/forms/nsIsIndexFrame.cpp
@@ -247,16 +247,20 @@ nsIsIndexFrame::QueryInterface(const nsI
   if (aIID.Equals(NS_GET_IID(nsIStatefulFrame))) {
     *aInstancePtr = static_cast<nsIStatefulFrame*>(this);
     return NS_OK;
   }
   if (aIID.Equals(NS_GET_IID(nsIDOMKeyListener))) {
     *aInstancePtr = static_cast<nsIDOMKeyListener*>(this);
     return NS_OK;
   }
+  if (aIID.Equals(NS_GET_IID(nsIDOMEventListener))) {
+    *aInstancePtr = static_cast<nsIDOMEventListener*>(this);
+    return NS_OK;
+  }
 
   return nsAreaFrame::QueryInterface(aIID, aInstancePtr);
 }
 
 nscoord
 nsIsIndexFrame::GetMinWidth(nsIRenderingContext *aRenderingContext)
 {
   nscoord result;
--- a/layout/forms/nsTextControlFrame.cpp
+++ b/layout/forms/nsTextControlFrame.cpp
@@ -597,17 +597,20 @@ public:
 
 private:
   nsCOMPtr<nsFrameSelection> mFrameSelection;
   nsCOMPtr<nsIContent>        mLimiter;
   nsWeakPtr mPresShellWeak;
 };
 
 // Implement our nsISupports methods
-NS_IMPL_ISUPPORTS2(nsTextInputSelectionImpl, nsISelectionController, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS3(nsTextInputSelectionImpl,
+                   nsISelectionController,
+                   nsISelectionDisplay,
+                   nsISupportsWeakReference)
 
 
 // BEGIN nsTextInputSelectionImpl
 
 nsTextInputSelectionImpl::nsTextInputSelectionImpl(nsFrameSelection *aSel, nsIPresShell *aShell, nsIContent *aLimiter)
 {
   if (aSel && aShell)
   {
--- a/layout/inspector/src/inDeepTreeWalker.cpp
+++ b/layout/inspector/src/inDeepTreeWalker.cpp
@@ -74,17 +74,19 @@ inDeepTreeWalker::inDeepTreeWalker()
 
 inDeepTreeWalker::~inDeepTreeWalker() 
 { 
   for (PRInt32 i = mStack.Count() - 1; i >= 0; --i) {
     delete static_cast<DeepTreeStackItem*>(mStack[i]);
   }
 }
 
-NS_IMPL_ISUPPORTS1(inDeepTreeWalker, inIDeepTreeWalker)
+NS_IMPL_ISUPPORTS2(inDeepTreeWalker,
+                   inIDeepTreeWalker,
+                   nsIDOMTreeWalker)
 
 ////////////////////////////////////////////////////
 // inIDeepTreeWalker
 
 NS_IMETHODIMP
 inDeepTreeWalker::GetShowAnonymousContent(PRBool *aShowAnonymousContent)
 {
   *aShowAnonymousContent = mShowAnonymousContent;
--- a/layout/xul/base/src/nsMenuBarListener.cpp
+++ b/layout/xul/base/src/nsMenuBarListener.cpp
@@ -63,17 +63,21 @@
 #include "nsContentUtils.h"
 
 /*
  * nsMenuBarListener implementation
  */
 
 NS_IMPL_ADDREF(nsMenuBarListener)
 NS_IMPL_RELEASE(nsMenuBarListener)
-NS_IMPL_QUERY_INTERFACE3(nsMenuBarListener, nsIDOMKeyListener, nsIDOMFocusListener, nsIDOMMouseListener)
+NS_IMPL_QUERY_INTERFACE4(nsMenuBarListener,
+                         nsIDOMKeyListener,
+                         nsIDOMFocusListener,
+                         nsIDOMEventListener,
+                         nsIDOMMouseListener)
 
 #define MODIFIER_SHIFT    1
 #define MODIFIER_CONTROL  2
 #define MODIFIER_ALT      4
 #define MODIFIER_META     8
 
 ////////////////////////////////////////////////////////////////////////
 
--- a/layout/xul/base/src/nsSliderFrame.cpp
+++ b/layout/xul/base/src/nsSliderFrame.cpp
@@ -1140,9 +1140,11 @@ void nsSliderFrame::Notify(void)
 
     if (stop) {
       StopRepeat();
     } else {
       PageUpDown(mChange);
     }
 }
 
-NS_IMPL_ISUPPORTS1(nsSliderMediator, nsIDOMMouseListener)
+NS_IMPL_ISUPPORTS2(nsSliderMediator,
+                   nsIDOMMouseListener,
+                   nsIDOMEventListener)
--- a/layout/xul/base/src/nsSplitterFrame.cpp
+++ b/layout/xul/base/src/nsSplitterFrame.cpp
@@ -175,17 +175,20 @@ public:
   State mState;
   nscoord mSplitterPos;
   nscoord mSplitterViewPos;
   PRBool mDragging;
 
 };
 
 
-NS_IMPL_ISUPPORTS2(nsSplitterFrameInner, nsIDOMMouseListener, nsIDOMMouseMotionListener)
+NS_IMPL_ISUPPORTS3(nsSplitterFrameInner,
+                   nsIDOMMouseListener,
+                   nsIDOMEventListener,
+                   nsIDOMMouseMotionListener)
 
 nsSplitterFrameInner::ResizeType
 nsSplitterFrameInner::GetResizeBefore()
 {
   static nsIContent::AttrValuesArray strings[] =
     {&nsGkAtoms::farthest, &nsGkAtoms::flex, nsnull};
   switch (mOuter->GetContent()->FindAttrValueIn(kNameSpaceID_None,
                                                 nsGkAtoms::resizebefore,
--- a/layout/xul/base/src/nsXULPopupManager.cpp
+++ b/layout/xul/base/src/nsXULPopupManager.cpp
@@ -118,18 +118,22 @@ void nsMenuChainItem::Detach(nsMenuChain
     // An item without a child should be the first item in the chain, so set
     // the first item pointer, pointed to by aRoot, to the parent.
     NS_ASSERTION(this == *aRoot, "Unexpected - popup with no child not at end of chain");
     *aRoot = mParent;
     SetParent(nsnull);
   }
 }
 
-NS_IMPL_ISUPPORTS4(nsXULPopupManager, nsIDOMKeyListener,
-                   nsIMenuRollup, nsIRollupListener, nsITimerCallback)
+NS_IMPL_ISUPPORTS5(nsXULPopupManager,
+                   nsIDOMKeyListener,
+                   nsIDOMEventListener,
+                   nsIMenuRollup,
+                   nsIRollupListener,
+                   nsITimerCallback)
 
 nsXULPopupManager::nsXULPopupManager() :
   mRangeOffset(0),
   mActiveMenuBar(nsnull),
   mCurrentMenu(nsnull),
   mPanels(nsnull),
   mTimerMenu(nsnull)
 {
--- a/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp
+++ b/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp
@@ -1007,17 +1007,21 @@ mozTXTToHTMLConv::GlyphHit(const PRUnich
 mozTXTToHTMLConv::mozTXTToHTMLConv()
 {
 }
 
 mozTXTToHTMLConv::~mozTXTToHTMLConv() 
 {
 }
 
-NS_IMPL_ISUPPORTS1(mozTXTToHTMLConv, mozITXTToHTMLConv)
+NS_IMPL_ISUPPORTS4(mozTXTToHTMLConv,
+                   mozITXTToHTMLConv,
+                   nsIStreamConverter,
+                   nsIStreamListener,
+                   nsIRequestObserver)
 
 PRInt32
 mozTXTToHTMLConv::CiteLevelTXT(const PRUnichar *line,
 				    PRUint32& logLineStart)
 {
   PRInt32 result = 0;
   PRInt32 lineLength = nsCRT::strlen(line);
 
--- a/netwerk/streamconv/converters/nsHTTPCompressConv.cpp
+++ b/netwerk/streamconv/converters/nsHTTPCompressConv.cpp
@@ -45,17 +45,20 @@
 #include "nsCOMPtr.h"
 #include "nsReadableUtils.h"
 #include "nsNetError.h"
 #include "nsStreamUtils.h"
 #include "nsStringStream.h"
 #include "nsComponentManagerUtils.h"
 
 // nsISupports implementation
-NS_IMPL_ISUPPORTS2(nsHTTPCompressConv, nsIStreamConverter, nsIStreamListener)
+NS_IMPL_ISUPPORTS3(nsHTTPCompressConv,
+                   nsIStreamConverter,
+                   nsIStreamListener,
+                   nsIRequestObserver)
 
 // nsFTPDirListingConv methods
 nsHTTPCompressConv::nsHTTPCompressConv()
     : mListener(nsnull)
     , mMode(HTTP_COMPRESS_IDENTITY)
     , mOutBuffer(NULL)
     , mInpBuffer(NULL)
     , mOutBufferLen(0)
--- a/netwerk/streamconv/test/Converters.cpp
+++ b/netwerk/streamconv/test/Converters.cpp
@@ -4,17 +4,20 @@
 #include "nsComponentManagerUtils.h"
 
 #include <stdio.h>
 
 //////////////////////////////////////////////////
 // TestConverter
 //////////////////////////////////////////////////
 
-NS_IMPL_ISUPPORTS2(TestConverter, nsIStreamConverter, nsIStreamListener)
+NS_IMPL_ISUPPORTS3(TestConverter,
+                   nsIStreamConverter,
+                   nsIStreamListener,
+                   nsIRequestObserver)
 
 TestConverter::TestConverter() {
 }
 
 // Convert aFromStream (of type aFromType), to _retval (nsIInputStream of type aToType).
 // This Convert method simply converts the stream byte-by-byte, to the first character
 // in the aToType "string".
 NS_IMETHODIMP
--- a/netwerk/streamconv/test/TestStreamConv.cpp
+++ b/netwerk/streamconv/test/TestStreamConv.cpp
@@ -111,17 +111,20 @@ public:
 
     // nsIRequestObserver methods
     NS_IMETHOD OnStartRequest(nsIRequest* request, nsISupports *ctxt) { return NS_OK; }
 
     NS_IMETHOD OnStopRequest(nsIRequest* request, nsISupports *ctxt, 
                              nsresult aStatus) { return NS_OK; }
 };
 
-NS_IMPL_ISUPPORTS1(EndListener, nsIStreamListener)
+NS_IMPL_ISUPPORTS2(EndListener,
+                   nsIStreamListener,
+                   nsIRequestObserver)
+
 ////////////////////////////////////////////////////////////////////////
 // EndListener END
 ////////////////////////////////////////////////////////////////////////
 
 
 nsresult SendData(const char * aData, nsIStreamListener* aListener, nsIRequest* request) {
     nsresult rv;
 
--- a/netwerk/test/TestUpload.cpp
+++ b/netwerk/test/TestUpload.cpp
@@ -77,17 +77,19 @@ public:
 InputTestConsumer::InputTestConsumer()
 {
 }
 
 InputTestConsumer::~InputTestConsumer()
 {
 }
 
-NS_IMPL_ISUPPORTS1(InputTestConsumer, nsIStreamListener)
+NS_IMPL_ISUPPORTS2(InputTestConsumer,
+                   nsIStreamListener,
+                   nsIRequestObserver)
 
 NS_IMETHODIMP
 InputTestConsumer::OnStartRequest(nsIRequest *request, nsISupports* context)
 {
   LOG(("InputTestConsumer::OnStartRequest\n"));
   return NS_OK;
 }
 
--- a/parser/htmlparser/tests/grabpage/grabpage.cpp
+++ b/parser/htmlparser/tests/grabpage/grabpage.cpp
@@ -92,17 +92,19 @@ protected:
 
 StreamToFile::StreamToFile(FILE* fp)
 {
   mDone = PR_FALSE;
   mError = PR_FALSE;
   mFile = fp;
 }
 
-NS_IMPL_ISUPPORTS1(StreamToFile, nsIStreamListener)
+NS_IMPL_ISUPPORTS2(StreamToFile,
+                   nsIStreamListener,
+                   nsIRequestObserver)
 
 StreamToFile::~StreamToFile()
 {
   if (nsnull != mFile) {
     fclose(mFile);
   }
 }
 
--- a/plugin/oji/MRJ/plugin/Source/BackwardAdapter.cpp
+++ b/plugin/oji/MRJ/plugin/Source/BackwardAdapter.cpp
@@ -2499,17 +2499,19 @@ CPluginInputStream::~CPluginInputStream(
 {
 	NS_IF_RELEASE(mListener);
 
     delete mBuffer;
     
     NS_IF_RELEASE(mStreamInfo);
 }
 
-NS_IMPL_ISUPPORTS1(CPluginInputStream, nsIPluginInputStream)
+NS_IMPL_ISUPPORTS2(CPluginInputStream,
+                   nsIPluginInputStream,
+                   nsIInputStream)
 
 NS_METHOD
 CPluginInputStream::Close(void)
 {
     if (mNPP == NULL || mStream == NULL)
         return NS_ERROR_FAILURE;
     NPError err = NPN_DestroyStream(mNPP, mStream, NPRES_USER_BREAK);
     return fromNPError[err];
--- a/toolkit/components/places/src/nsFaviconService.cpp
+++ b/toolkit/components/places/src/nsFaviconService.cpp
@@ -853,19 +853,20 @@ nsFaviconService::OptimizeFaviconImage(c
   // Read the stream into a new buffer.
   rv = NS_ConsumeStream(iconStream, PR_UINT32_MAX, aNewData);
   NS_ENSURE_SUCCESS(rv, rv);
 
   return NS_OK;
 }
 
 
-NS_IMPL_ISUPPORTS4(FaviconLoadListener,
+NS_IMPL_ISUPPORTS5(FaviconLoadListener,
                    nsIRequestObserver,
                    nsIStreamListener,
+                   nsIRequestObserver,
                    nsIInterfaceRequestor,
                    nsIChannelEventSink)
 
 // FaviconLoadListener::FaviconLoadListener
 
 FaviconLoadListener::FaviconLoadListener(nsFaviconService* aFaviconService,
                                          nsIURI* aPageURI, nsIURI* aFaviconURI,
                                          nsIChannel* aChannel) :
--- a/xpcom/base/nsExceptionService.cpp
+++ b/xpcom/base/nsExceptionService.cpp
@@ -144,17 +144,20 @@ NS_IMETHODIMP nsExceptionManager::GetExc
 PRUintn nsExceptionService::tlsIndex = BAD_TLS_INDEX;
 PRLock *nsExceptionService::lock = nsnull;
 nsExceptionManager *nsExceptionService::firstThread = nsnull;
 
 #ifdef NS_DEBUG
 PRInt32 nsExceptionService::totalInstances = 0;
 #endif
 
-NS_IMPL_THREADSAFE_ISUPPORTS2(nsExceptionService, nsIExceptionService, nsIObserver)
+NS_IMPL_THREADSAFE_ISUPPORTS3(nsExceptionService,
+                              nsIExceptionService,
+                              nsIExceptionManager,
+                              nsIObserver)
 
 nsExceptionService::nsExceptionService()
   : mProviders(4, PR_TRUE) /* small, thread-safe hashtable */
 {
 #ifdef NS_DEBUG
   if (PR_AtomicIncrement(&totalInstances)!=1) {
     NS_ERROR("The nsExceptionService is a singleton!");
   }
--- a/xpcom/glue/nsISupportsImpl.h
+++ b/xpcom/glue/nsISupportsImpl.h
@@ -911,16 +911,31 @@ NS_IMETHODIMP_(nsrefcnt) Class::Release(
     NS_INTERFACE_TABLE_ENTRY(Class, i4)                                       \
     NS_INTERFACE_TABLE_ENTRY(Class, i5)                                       \
     NS_INTERFACE_TABLE_ENTRY(Class, i6)                                       \
     NS_INTERFACE_TABLE_ENTRY(Class, i7)                                       \
     NS_INTERFACE_TABLE_ENTRY(Class, i8)                                       \
     NS_INTERFACE_TABLE_ENTRY(Class, i9)                                       \
   NS_INTERFACE_TABLE_END
 
+#define NS_INTERFACE_TABLE_INHERITED10(Class, i1, i2, i3, i4, i5, i6, i7,     \
+                                       i8, i9, i10)                           \
+  NS_INTERFACE_TABLE_BEGIN                                                    \
+    NS_INTERFACE_TABLE_ENTRY(Class, i1)                                       \
+    NS_INTERFACE_TABLE_ENTRY(Class, i2)                                       \
+    NS_INTERFACE_TABLE_ENTRY(Class, i3)                                       \
+    NS_INTERFACE_TABLE_ENTRY(Class, i4)                                       \
+    NS_INTERFACE_TABLE_ENTRY(Class, i5)                                       \
+    NS_INTERFACE_TABLE_ENTRY(Class, i6)                                       \
+    NS_INTERFACE_TABLE_ENTRY(Class, i7)                                       \
+    NS_INTERFACE_TABLE_ENTRY(Class, i8)                                       \
+    NS_INTERFACE_TABLE_ENTRY(Class, i9)                                       \
+    NS_INTERFACE_TABLE_ENTRY(Class, i10)                                      \
+  NS_INTERFACE_TABLE_END
+
 #define NS_IMPL_QUERY_INTERFACE_INHERITED0(Class, Super)                      \
   NS_INTERFACE_TABLE_HEAD(Class)                                              \
   NS_INTERFACE_TABLE_INHERITED0(Class)                                        \
   NS_INTERFACE_TABLE_TAIL_INHERITING(Super)
 
 #define NS_IMPL_QUERY_INTERFACE_INHERITED1(Class, Super, i1)                  \
   NS_INTERFACE_TABLE_HEAD(Class)                                              \
   NS_INTERFACE_TABLE_INHERITED1(Class, i1)                                    \
--- a/xpfe/components/related/src/nsRelatedLinksHandler.cpp
+++ b/xpfe/components/related/src/nsRelatedLinksHandler.cpp
@@ -242,19 +242,19 @@ RelatedLinksStreamListener::Init()
 
 	 mParentArray.AppendElement(kNC_RelatedLinksRoot);
 	 return(NS_OK);
 }
 
 
 
 // nsISupports interface
-NS_IMPL_ISUPPORTS1(RelatedLinksStreamListener, nsIStreamListener)
-
-
+NS_IMPL_ISUPPORTS2(RelatedLinksStreamListener,
+                   nsIStreamListener,
+                   nsIRequestObserver)
 
 // stream observer methods
 
 
 
 NS_IMETHODIMP
 RelatedLinksStreamListener::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
 {
--- a/xpinstall/src/nsXPInstallManager.cpp
+++ b/xpinstall/src/nsXPInstallManager.cpp
@@ -117,16 +117,17 @@ nsXPInstallManager::~nsXPInstallManager(
 }
 
 
 NS_INTERFACE_MAP_BEGIN(nsXPInstallManager)
   NS_INTERFACE_MAP_ENTRY(nsIXPIDialogService)
   NS_INTERFACE_MAP_ENTRY(nsIXPInstallManager)
   NS_INTERFACE_MAP_ENTRY(nsIObserver)
   NS_INTERFACE_MAP_ENTRY(nsIStreamListener)
+  NS_INTERFACE_MAP_ENTRY(nsIRequestObserver)
   NS_INTERFACE_MAP_ENTRY(nsIProgressEventSink)
   NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
   NS_INTERFACE_MAP_ENTRY(nsPICertNotification)
   NS_INTERFACE_MAP_ENTRY(nsIBadCertListener2)
   NS_INTERFACE_MAP_ENTRY(nsISSLErrorListener)
   NS_INTERFACE_MAP_ENTRY(nsIChannelEventSink)
   NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsISupportsWeakReference)