diff --git a/content/base/src/nsObjectLoadingContent.h b/content/base/src/nsObjectLoadingContent.h index 9e7d8113338f..654d9531775c 100644 --- a/content/base/src/nsObjectLoadingContent.h +++ b/content/base/src/nsObjectLoadingContent.h @@ -53,8 +53,6 @@ #include "nsIObjectLoadingContent.h" #include "nsIRunnable.h" -#include "nsWeakReference.h" - struct nsAsyncInstantiateEvent; class AutoNotifier; class AutoFallback; @@ -84,9 +82,6 @@ class nsObjectLoadingContent : public nsImageLoadingContent , public nsIObjectLoadingContent , public nsIInterfaceRequestor , public nsIChannelEventSink - // Plugins code wants a weak reference to - // notification callbacks - , public nsSupportsWeakReference { friend class AutoNotifier; friend class AutoFallback; diff --git a/content/html/content/src/nsFormSubmission.cpp b/content/html/content/src/nsFormSubmission.cpp index 86f031d23ddd..559c3ae3bb18 100644 --- a/content/html/content/src/nsFormSubmission.cpp +++ b/content/html/content/src/nsFormSubmission.cpp @@ -1076,14 +1076,7 @@ nsFSTextPlain::GetEncodedSubmission(nsIURI* aURI, // nsISupports stuff // -NS_IMPL_ADDREF(nsFormSubmission) -NS_IMPL_RELEASE(nsFormSubmission) - -NS_INTERFACE_MAP_BEGIN(nsFormSubmission) - NS_INTERFACE_MAP_ENTRY(nsIFormSubmission) - NS_INTERFACE_MAP_ENTRY(nsISupports) -NS_INTERFACE_MAP_END - +NS_IMPL_ISUPPORTS1(nsFormSubmission, nsIFormSubmission) // JBK moved from nsFormFrame - bug 34297 // submission diff --git a/content/html/content/src/nsGenericHTMLElement.cpp b/content/html/content/src/nsGenericHTMLElement.cpp index 417fb58009f2..a64c49b72b06 100644 --- a/content/html/content/src/nsGenericHTMLElement.cpp +++ b/content/html/content/src/nsGenericHTMLElement.cpp @@ -216,9 +216,11 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF_AMBIGUOUS(nsGenericHTMLElementTearoff, NS_IMPL_CYCLE_COLLECTING_RELEASE_AMBIGUOUS(nsGenericHTMLElementTearoff, nsIDOMNSHTMLElement) -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsGenericHTMLElementTearoff) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMElementCSSInlineStyle) +NS_INTERFACE_TABLE_HEAD(nsGenericHTMLElementTearoff) + NS_INTERFACE_TABLE_INHERITED2(nsGenericHTMLElementTearoff, + nsIDOMNSHTMLElement, + nsIDOMElementCSSInlineStyle) + NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsGenericHTMLElementTearoff) NS_INTERFACE_MAP_END_AGGREGATED(mElement) @@ -230,40 +232,23 @@ nsGenericHTMLElement::DOMQueryInterface(nsIDOMHTMLElement *aElement, { NS_PRECONDITION(aInstancePtr, "null out param"); - nsISupports *inst = nsnull; + nsresult rv = NS_ERROR_FAILURE; - if (aIID.Equals(NS_GET_IID(nsIDOMNode))) { - inst = static_cast(aElement); - } else if (aIID.Equals(NS_GET_IID(nsIDOMElement))) { - inst = static_cast(aElement); - } else if (aIID.Equals(NS_GET_IID(nsIDOMHTMLElement))) { - inst = static_cast(aElement); - } else if (aIID.Equals(NS_GET_IID(nsIDOMNSHTMLElement))) { - inst = static_cast - (new nsGenericHTMLElementTearoff(this)); - if (NS_UNLIKELY(!inst)) { - *aInstancePtr = nsnull; - return NS_ERROR_OUT_OF_MEMORY; - } - } else if (aIID.Equals(NS_GET_IID(nsIDOMElementCSSInlineStyle))) { - inst = static_cast - (new nsGenericHTMLElementTearoff(this)); - if (NS_UNLIKELY(!inst)) { - *aInstancePtr = nsnull; - return NS_ERROR_OUT_OF_MEMORY; - } - } else { - *aInstancePtr = nsnull; - return NS_ERROR_NO_INTERFACE; - } + NS_INTERFACE_TABLE_BEGIN + NS_INTERFACE_TABLE_ENTRY(nsIDOMHTMLElement, nsIDOMNode) + NS_INTERFACE_TABLE_ENTRY(nsIDOMHTMLElement, nsIDOMElement) + NS_INTERFACE_TABLE_ENTRY(nsIDOMHTMLElement, nsIDOMHTMLElement) + NS_INTERFACE_TABLE_END_WITH_PTR(aElement) - NS_ADDREF(inst); - - *aInstancePtr = inst; - - return NS_OK; -} + NS_INTERFACE_TABLE_TO_MAP_SEGUE + NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOMNSHTMLElement, + new nsGenericHTMLElementTearoff(this)) + NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOMElementCSSInlineStyle, + new nsGenericHTMLElementTearoff(this)) + NS_INTERFACE_MAP_END +// No closing bracket, becuase NS_INTERFACE_MAP_END does that for us. + nsresult nsGenericHTMLElement::CopyInnerTo(nsGenericElement* aDst) const { @@ -2537,10 +2522,9 @@ nsGenericHTMLFormElement::~nsGenericHTMLFormElement() SetForm(nsnull, PR_TRUE, PR_FALSE); } -NS_INTERFACE_MAP_BEGIN(nsGenericHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIFormControl) -NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement) - +NS_IMPL_QUERY_INTERFACE_INHERITED1(nsGenericHTMLFormElement, + nsGenericHTMLElement, + nsIFormControl) PRBool nsGenericHTMLFormElement::IsNodeOfType(PRUint32 aFlags) const @@ -2929,9 +2913,11 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsGenericHTMLFrameElement, NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mFrameLoader) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(nsGenericHTMLFrameElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLFrameElement) - NS_INTERFACE_MAP_ENTRY(nsIFrameLoaderOwner) +NS_INTERFACE_TABLE_HEAD(nsGenericHTMLFrameElement) + NS_INTERFACE_TABLE_INHERITED2(nsGenericHTMLFrameElement, + nsIDOMNSHTMLFrameElement, + nsIFrameLoaderOwner) + NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsGenericHTMLFrameElement) NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement) nsresult diff --git a/content/html/content/src/nsGenericHTMLElement.h b/content/html/content/src/nsGenericHTMLElement.h index a6368e089ec2..56284fafc35d 100644 --- a/content/html/content/src/nsGenericHTMLElement.h +++ b/content/html/content/src/nsGenericHTMLElement.h @@ -1063,7 +1063,8 @@ NS_NewHTML##_elementName##Element(nsINodeInfo *aNodeInfo, PRBool aFromParser)\ * QueryInterface() implementation helper macros */ -#define NS_HTML_CONTENT_INTERFACE_MAP_AMBIGOUS_BEGIN(_class, _base, _base_if) \ +#define NS_HTML_CONTENT_INTERFACE_TABLE_AMBIGOUS_HEAD(_class, _base, \ + _base_if) \ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ { \ NS_PRECONDITION(aInstancePtr, "null out param"); \ @@ -1079,27 +1080,16 @@ NS_NewHTML##_elementName##Element(nsINodeInfo *aNodeInfo, PRBool aFromParser)\ aInstancePtr); \ \ if (NS_SUCCEEDED(rv)) \ - return rv; \ - \ - nsISupports *foundInterface = nsnull; + return rv; -#define NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(_class, _base) \ - NS_HTML_CONTENT_INTERFACE_MAP_AMBIGOUS_BEGIN(_class, _base, \ - nsIDOMHTMLElement) +#define NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(_class, _base) \ + NS_HTML_CONTENT_INTERFACE_TABLE_AMBIGOUS_HEAD(_class, _base, \ + nsIDOMHTMLElement) -#define NS_HTML_CONTENT_CC_INTERFACE_MAP_AMBIGUOUS_BEGIN(_class, _base, \ - _base_if) \ - NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ - { \ - NS_PRECONDITION(aInstancePtr, "null out param"); \ - \ - if ( aIID.Equals(NS_GET_IID(nsXPCOMCycleCollectionParticipant)) ) { \ - *aInstancePtr = &NS_CYCLE_COLLECTION_NAME(_class); \ - return NS_OK; \ - } \ - \ - nsresult rv; \ +#define NS_HTML_CONTENT_CC_INTERFACE_TABLE_AMBIGUOUS_HEAD(_class, _base, \ + _base_if) \ + NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(_class) \ \ rv = _base::QueryInterface(aIID, aInstancePtr); \ \ @@ -1110,13 +1100,11 @@ NS_NewHTML##_elementName##Element(nsINodeInfo *aNodeInfo, PRBool aFromParser)\ aInstancePtr); \ \ if (NS_SUCCEEDED(rv)) \ - return rv; \ - \ - nsISupports *foundInterface = nsnull; + return rv; -#define NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(_class, _base) \ - NS_HTML_CONTENT_CC_INTERFACE_MAP_AMBIGUOUS_BEGIN(_class, _base, \ - nsIDOMHTMLElement) +#define NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(_class, _base) \ + NS_HTML_CONTENT_CC_INTERFACE_TABLE_AMBIGUOUS_HEAD(_class, _base, \ + nsIDOMHTMLElement) #define NS_HTML_CONTENT_INTERFACE_MAP_END \ { \ @@ -1130,6 +1118,10 @@ NS_NewHTML##_elementName##Element(nsINodeInfo *aNodeInfo, PRBool aFromParser)\ return NS_OK; \ } +#define NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(_class) \ + NS_INTERFACE_TABLE_TO_MAP_SEGUE \ + NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(_class) \ + NS_HTML_CONTENT_INTERFACE_MAP_END #define NS_INTERFACE_MAP_ENTRY_IF_TAG(_interface, _tag) \ NS_INTERFACE_MAP_ENTRY_CONDITIONAL(_interface, \ diff --git a/content/html/content/src/nsHTMLAnchorElement.cpp b/content/html/content/src/nsHTMLAnchorElement.cpp index 9f238743d5b4..84ade688e5ee 100644 --- a/content/html/content/src/nsHTMLAnchorElement.cpp +++ b/content/html/content/src/nsHTMLAnchorElement.cpp @@ -154,13 +154,13 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLAnchorElement, nsGenericElement) // QueryInterface implementation for nsHTMLAnchorElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLAnchorElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLAnchorElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLAnchorElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLAnchorElement2) - NS_INTERFACE_MAP_ENTRY(nsILink) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLAnchorElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLAnchorElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED4(nsHTMLAnchorElement, + nsIDOMHTMLAnchorElement, + nsIDOMNSHTMLAnchorElement, + nsIDOMNSHTMLAnchorElement2, + nsILink) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLAnchorElement) NS_IMPL_ELEMENT_CLONE(nsHTMLAnchorElement) diff --git a/content/html/content/src/nsHTMLAreaElement.cpp b/content/html/content/src/nsHTMLAreaElement.cpp index 4f32b9d5be45..127c1779147d 100644 --- a/content/html/content/src/nsHTMLAreaElement.cpp +++ b/content/html/content/src/nsHTMLAreaElement.cpp @@ -136,13 +136,13 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLAreaElement, nsGenericElement) // QueryInterface implementation for nsHTMLAreaElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLAreaElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLAreaElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLAreaElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLAreaElement2) - NS_INTERFACE_MAP_ENTRY(nsILink) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLAreaElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLAreaElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED4(nsHTMLAreaElement, + nsIDOMHTMLAreaElement, + nsIDOMNSHTMLAreaElement, + nsIDOMNSHTMLAreaElement2, + nsILink) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLAreaElement) NS_IMPL_ELEMENT_CLONE(nsHTMLAreaElement) diff --git a/content/html/content/src/nsHTMLBRElement.cpp b/content/html/content/src/nsHTMLBRElement.cpp index 36eeadc6dec2..a03fa2697b66 100644 --- a/content/html/content/src/nsHTMLBRElement.cpp +++ b/content/html/content/src/nsHTMLBRElement.cpp @@ -92,10 +92,9 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLBRElement, nsGenericElement) // QueryInterface implementation for nsHTMLBRElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLBRElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLBRElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLBRElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLBRElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLBRElement, nsIDOMHTMLBRElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLBRElement) NS_IMPL_ELEMENT_CLONE(nsHTMLBRElement) diff --git a/content/html/content/src/nsHTMLBodyElement.cpp b/content/html/content/src/nsHTMLBodyElement.cpp index 6b6f8af4dabc..54eec23934f3 100644 --- a/content/html/content/src/nsHTMLBodyElement.cpp +++ b/content/html/content/src/nsHTMLBodyElement.cpp @@ -300,10 +300,9 @@ NS_IMPL_ADDREF_INHERITED(nsHTMLBodyElement, nsGenericElement) NS_IMPL_RELEASE_INHERITED(nsHTMLBodyElement, nsGenericElement) // QueryInterface implementation for nsHTMLBodyElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLBodyElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLBodyElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLBodyElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLBodyElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLBodyElement, nsIDOMHTMLBodyElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLBodyElement) NS_IMPL_ELEMENT_CLONE(nsHTMLBodyElement) diff --git a/content/html/content/src/nsHTMLButtonElement.cpp b/content/html/content/src/nsHTMLButtonElement.cpp index 9e32ac40e6c7..06a3b085adfd 100644 --- a/content/html/content/src/nsHTMLButtonElement.cpp +++ b/content/html/content/src/nsHTMLButtonElement.cpp @@ -161,12 +161,12 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLButtonElement, nsGenericElement) // QueryInterface implementation for nsHTMLButtonElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLButtonElement, - nsGenericHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLButtonElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLButtonElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLButtonElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLButtonElement, + nsGenericHTMLFormElement) + NS_INTERFACE_TABLE_INHERITED2(nsHTMLButtonElement, + nsIDOMHTMLButtonElement, + nsIDOMNSHTMLButtonElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLButtonElement) // nsIDOMHTMLButtonElement diff --git a/content/html/content/src/nsHTMLCanvasElement.cpp b/content/html/content/src/nsHTMLCanvasElement.cpp index 1cc32fa664fc..317e6aa15c7a 100644 --- a/content/html/content/src/nsHTMLCanvasElement.cpp +++ b/content/html/content/src/nsHTMLCanvasElement.cpp @@ -154,11 +154,11 @@ nsHTMLCanvasElement::~nsHTMLCanvasElement() NS_IMPL_ADDREF_INHERITED(nsHTMLCanvasElement, nsGenericElement) NS_IMPL_RELEASE_INHERITED(nsHTMLCanvasElement, nsGenericElement) -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLCanvasElement, nsGenericElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLCanvasElement) - NS_INTERFACE_MAP_ENTRY(nsICanvasElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLCanvasElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLCanvasElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED2(nsHTMLCanvasElement, + nsIDOMHTMLCanvasElement, + nsICanvasElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLCanvasElement) NS_IMPL_ELEMENT_CLONE(nsHTMLCanvasElement) diff --git a/content/html/content/src/nsHTMLDelElement.cpp b/content/html/content/src/nsHTMLDelElement.cpp index b7d9105442fb..a8f451f7ebf0 100644 --- a/content/html/content/src/nsHTMLDelElement.cpp +++ b/content/html/content/src/nsHTMLDelElement.cpp @@ -85,9 +85,9 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLModElement, nsGenericElement) // QueryInterface implementation for nsHTMLModElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLModElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLModElement) - +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLModElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLModElement, nsIDOMHTMLModElement) + NS_INTERFACE_TABLE_TO_MAP_SEGUE NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO_IF_TAG(HTMLDelElement, del) NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO_IF_TAG(HTMLInsElement, ins) NS_HTML_CONTENT_INTERFACE_MAP_END diff --git a/content/html/content/src/nsHTMLDivElement.cpp b/content/html/content/src/nsHTMLDivElement.cpp index 4573262c1abd..c4e2bfebd8d1 100644 --- a/content/html/content/src/nsHTMLDivElement.cpp +++ b/content/html/content/src/nsHTMLDivElement.cpp @@ -93,11 +93,9 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLDivElement, nsGenericElement) // QueryInterface implementation for nsHTMLDivElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLDivElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLDivElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLDivElement) -NS_HTML_CONTENT_INTERFACE_MAP_END - +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLDivElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLDivElement, nsIDOMHTMLDivElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLDivElement) NS_IMPL_ELEMENT_CLONE(nsHTMLDivElement) diff --git a/content/html/content/src/nsHTMLFieldSetElement.cpp b/content/html/content/src/nsHTMLFieldSetElement.cpp index c23b88629e5e..b1dbd47e5a9f 100644 --- a/content/html/content/src/nsHTMLFieldSetElement.cpp +++ b/content/html/content/src/nsHTMLFieldSetElement.cpp @@ -96,11 +96,11 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLFieldSetElement, nsGenericElement) // QueryInterface implementation for nsHTMLFieldSetElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLFieldSetElement, - nsGenericHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLFieldSetElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLFieldSetElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLFieldSetElement, + nsGenericHTMLFormElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLFieldSetElement, + nsIDOMHTMLFieldSetElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLFieldSetElement) // nsIDOMHTMLFieldSetElement diff --git a/content/html/content/src/nsHTMLFontElement.cpp b/content/html/content/src/nsHTMLFontElement.cpp index 75b61f66411f..64451927d499 100644 --- a/content/html/content/src/nsHTMLFontElement.cpp +++ b/content/html/content/src/nsHTMLFontElement.cpp @@ -96,10 +96,9 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLFontElement, nsGenericElement) // QueryInterface implementation for nsHTMLFontElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLFontElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLFontElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLFontElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLFontElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLFontElement, nsIDOMHTMLFontElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLFontElement) NS_IMPL_ELEMENT_CLONE(nsHTMLFontElement) diff --git a/content/html/content/src/nsHTMLFormElement.cpp b/content/html/content/src/nsHTMLFormElement.cpp index 7ca85a29e9d1..513ffad15609 100644 --- a/content/html/content/src/nsHTMLFormElement.cpp +++ b/content/html/content/src/nsHTMLFormElement.cpp @@ -75,7 +75,6 @@ #include "nsIWebProgress.h" #include "nsIDocShell.h" #include "nsIWebProgressListener.h" -#include "nsWeakReference.h" // radio buttons #include "nsIDOMHTMLInputElement.h" @@ -129,7 +128,6 @@ private: // nsHTMLFormElement class nsHTMLFormElement : public nsGenericHTMLElement, - public nsSupportsWeakReference, public nsIDOMHTMLFormElement, public nsIDOMNSHTMLFormElement, public nsIWebProgressListener, @@ -552,15 +550,15 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLFormElement, nsGenericElement) // QueryInterface implementation for nsHTMLFormElement -NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(nsHTMLFormElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIForm) - NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener) - NS_INTERFACE_MAP_ENTRY(nsIRadioGroupContainer) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLFormElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLFormElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED5(nsHTMLFormElement, + nsIDOMHTMLFormElement, + nsIDOMNSHTMLFormElement, + nsIForm, + nsIWebProgressListener, + nsIRadioGroupContainer) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLFormElement) // nsIDOMHTMLFormElement @@ -2016,10 +2014,11 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsFormControlList) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END // XPConnect interface list for nsFormControlList -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsFormControlList) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLFormControlList) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLCollection) - NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMHTMLCollection) +NS_INTERFACE_TABLE_HEAD(nsFormControlList) + NS_INTERFACE_TABLE2(nsFormControlList, + nsIDOMHTMLCollection, + nsIDOMNSHTMLFormControlList) + NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsFormControlList) NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLFormControlCollection) NS_INTERFACE_MAP_END diff --git a/content/html/content/src/nsHTMLFrameElement.cpp b/content/html/content/src/nsHTMLFrameElement.cpp index d616730fe9cd..d13dcf3bd170 100644 --- a/content/html/content/src/nsHTMLFrameElement.cpp +++ b/content/html/content/src/nsHTMLFrameElement.cpp @@ -94,11 +94,10 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLFrameElement, nsGenericElement) // QueryInterface implementation for nsHTMLFrameElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLFrameElement, - nsGenericHTMLFrameElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLFrameElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLFrameElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLFrameElement, + nsGenericHTMLFrameElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLFrameElement, nsIDOMHTMLFrameElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLFrameElement) NS_IMPL_ELEMENT_CLONE(nsHTMLFrameElement) diff --git a/content/html/content/src/nsHTMLFrameSetElement.cpp b/content/html/content/src/nsHTMLFrameSetElement.cpp index fccc4f74ec94..9b119680a99a 100644 --- a/content/html/content/src/nsHTMLFrameSetElement.cpp +++ b/content/html/content/src/nsHTMLFrameSetElement.cpp @@ -138,12 +138,12 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLFrameSetElement, nsGenericElement) // QueryInterface implementation for nsHTMLFrameSetElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLFrameSetElement, - nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLFrameSetElement) - NS_INTERFACE_MAP_ENTRY(nsIFrameSetElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLFrameSetElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLFrameSetElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED2(nsHTMLFrameSetElement, + nsIDOMHTMLFrameSetElement, + nsIFrameSetElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLFrameSetElement) NS_IMPL_ELEMENT_CLONE(nsHTMLFrameSetElement) diff --git a/content/html/content/src/nsHTMLHRElement.cpp b/content/html/content/src/nsHTMLHRElement.cpp index 15d64a536c08..abe3fb8dc5b4 100644 --- a/content/html/content/src/nsHTMLHRElement.cpp +++ b/content/html/content/src/nsHTMLHRElement.cpp @@ -98,11 +98,11 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLHRElement, nsGenericElement) // QueryInterface implementation for nsHTMLHRElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLHRElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLHRElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLHRElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLHRElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLHRElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED2(nsHTMLHRElement, + nsIDOMHTMLHRElement, + nsIDOMNSHTMLHRElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLHRElement) NS_IMPL_ELEMENT_CLONE(nsHTMLHRElement) diff --git a/content/html/content/src/nsHTMLHeadElement.cpp b/content/html/content/src/nsHTMLHeadElement.cpp index 50d45f51de88..6e3004666e36 100644 --- a/content/html/content/src/nsHTMLHeadElement.cpp +++ b/content/html/content/src/nsHTMLHeadElement.cpp @@ -86,10 +86,9 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLHeadElement, nsGenericElement) // QueryInterface implementation for nsHTMLHeadElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLHeadElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLHeadElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLHeadElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLHeadElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLHeadElement, nsIDOMHTMLHeadElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLHeadElement) NS_IMPL_ELEMENT_CLONE(nsHTMLHeadElement) diff --git a/content/html/content/src/nsHTMLHeadingElement.cpp b/content/html/content/src/nsHTMLHeadingElement.cpp index de544499d75d..84051fee53d6 100644 --- a/content/html/content/src/nsHTMLHeadingElement.cpp +++ b/content/html/content/src/nsHTMLHeadingElement.cpp @@ -93,10 +93,10 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLHeadingElement, nsGenericElement) // QueryInterface implementation for nsHTMLHeadingElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLHeadingElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLHeadingElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLHeadingElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLHeadingElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLHeadingElement, nsIDOMHTMLHeadingElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLHeadingElement) NS_IMPL_ELEMENT_CLONE(nsHTMLHeadingElement) diff --git a/content/html/content/src/nsHTMLHtmlElement.cpp b/content/html/content/src/nsHTMLHtmlElement.cpp index fb43004d268f..4c2cbd70fd47 100644 --- a/content/html/content/src/nsHTMLHtmlElement.cpp +++ b/content/html/content/src/nsHTMLHtmlElement.cpp @@ -88,10 +88,9 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLHtmlElement, nsGenericElement) // QueryInterface implementation for nsHTMLHtmlElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLHtmlElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLHtmlElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLHtmlElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLHtmlElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLHtmlElement, nsIDOMHTMLHtmlElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLHtmlElement) NS_IMPL_ELEMENT_CLONE(nsHTMLHtmlElement) diff --git a/content/html/content/src/nsHTMLIFrameElement.cpp b/content/html/content/src/nsHTMLIFrameElement.cpp index 39a88419371f..9bdc629fbfbb 100644 --- a/content/html/content/src/nsHTMLIFrameElement.cpp +++ b/content/html/content/src/nsHTMLIFrameElement.cpp @@ -96,10 +96,10 @@ NS_IMPL_ADDREF_INHERITED(nsHTMLIFrameElement,nsGenericElement) NS_IMPL_RELEASE_INHERITED(nsHTMLIFrameElement,nsGenericElement) // QueryInterface implementation for nsHTMLIFrameElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLIFrameElement, nsGenericHTMLFrameElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLIFrameElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLIFrameElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLIFrameElement, + nsGenericHTMLFrameElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLIFrameElement, nsIDOMHTMLIFrameElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLIFrameElement) NS_IMPL_ELEMENT_CLONE(nsHTMLIFrameElement) diff --git a/content/html/content/src/nsHTMLImageElement.cpp b/content/html/content/src/nsHTMLImageElement.cpp index b443f3dc3284..b41b167182b8 100644 --- a/content/html/content/src/nsHTMLImageElement.cpp +++ b/content/html/content/src/nsHTMLImageElement.cpp @@ -191,14 +191,14 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLImageElement, nsGenericElement) // QueryInterface implementation for nsHTMLImageElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLImageElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLImageElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLImageElement) - NS_INTERFACE_MAP_ENTRY(nsIJSNativeInitializer) - NS_INTERFACE_MAP_ENTRY(imgIDecoderObserver) - NS_INTERFACE_MAP_ENTRY(nsIImageLoadingContent) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLImageElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLImageElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED5(nsHTMLImageElement, + nsIDOMHTMLImageElement, + nsIDOMNSHTMLImageElement, + nsIJSNativeInitializer, + imgIDecoderObserver, + nsIImageLoadingContent) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLImageElement) NS_IMPL_ELEMENT_CLONE(nsHTMLImageElement) diff --git a/content/html/content/src/nsHTMLInputElement.cpp b/content/html/content/src/nsHTMLInputElement.cpp index e2fecfe922b0..47bd5b06b1bb 100644 --- a/content/html/content/src/nsHTMLInputElement.cpp +++ b/content/html/content/src/nsHTMLInputElement.cpp @@ -403,19 +403,19 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLInputElement, nsGenericElement) // QueryInterface implementation for nsHTMLInputElement -NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(nsHTMLInputElement, - nsGenericHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLInputElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLInputElement) - NS_INTERFACE_MAP_ENTRY(nsITextControlElement) - NS_INTERFACE_MAP_ENTRY(nsIFileControlElement) - NS_INTERFACE_MAP_ENTRY(nsIRadioControlElement) - NS_INTERFACE_MAP_ENTRY(nsIPhonetic) - NS_INTERFACE_MAP_ENTRY(imgIDecoderObserver) - NS_INTERFACE_MAP_ENTRY(nsIImageLoadingContent) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSEditableElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLInputElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLInputElement, + nsGenericHTMLFormElement) + NS_INTERFACE_TABLE_INHERITED9(nsHTMLInputElement, + nsIDOMHTMLInputElement, + nsIDOMNSHTMLInputElement, + nsITextControlElement, + nsIFileControlElement, + nsIRadioControlElement, + nsIPhonetic, + imgIDecoderObserver, + nsIImageLoadingContent, + nsIDOMNSEditableElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLInputElement) // nsIDOMNode @@ -2960,13 +2960,7 @@ public: NS_IMETHOD Visit(nsIFormControl* aRadio, PRBool* aStop) = 0; }; -NS_IMPL_ADDREF(nsRadioVisitor) -NS_IMPL_RELEASE(nsRadioVisitor) - -NS_INTERFACE_MAP_BEGIN(nsRadioVisitor) - NS_INTERFACE_MAP_ENTRY(nsIRadioVisitor) - NS_INTERFACE_MAP_ENTRY(nsISupports) -NS_INTERFACE_MAP_END +NS_IMPL_ISUPPORTS1(nsRadioVisitor, nsIRadioVisitor) // diff --git a/content/html/content/src/nsHTMLLIElement.cpp b/content/html/content/src/nsHTMLLIElement.cpp index 72463937f144..f22aa08f009b 100644 --- a/content/html/content/src/nsHTMLLIElement.cpp +++ b/content/html/content/src/nsHTMLLIElement.cpp @@ -93,10 +93,9 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLLIElement, nsGenericElement) // QueryInterface implementation for nsHTMLLIElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLLIElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLLIElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLLIElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLLIElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLLIElement, nsIDOMHTMLLIElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLLIElement) NS_IMPL_ELEMENT_CLONE(nsHTMLLIElement) diff --git a/content/html/content/src/nsHTMLLabelElement.cpp b/content/html/content/src/nsHTMLLabelElement.cpp index a0bb837ab246..ba4c0e6241e3 100644 --- a/content/html/content/src/nsHTMLLabelElement.cpp +++ b/content/html/content/src/nsHTMLLabelElement.cpp @@ -138,11 +138,10 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLLabelElement, nsGenericElement) // QueryInterface implementation for nsHTMLLabelElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLLabelElement, - nsGenericHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLLabelElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLLabelElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLLabelElement, + nsGenericHTMLFormElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLLabelElement, nsIDOMHTMLLabelElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLLabelElement) // nsIDOMHTMLLabelElement diff --git a/content/html/content/src/nsHTMLLegendElement.cpp b/content/html/content/src/nsHTMLLegendElement.cpp index c074d8493545..99f94ad72e10 100644 --- a/content/html/content/src/nsHTMLLegendElement.cpp +++ b/content/html/content/src/nsHTMLLegendElement.cpp @@ -124,11 +124,10 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLLegendElement, nsGenericElement) // QueryInterface implementation for nsHTMLLegendElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLLegendElement, - nsGenericHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLLegendElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLLegendElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLLegendElement, + nsGenericHTMLFormElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLLegendElement, nsIDOMHTMLLegendElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLLegendElement) // nsIDOMHTMLLegendElement diff --git a/content/html/content/src/nsHTMLLinkElement.cpp b/content/html/content/src/nsHTMLLinkElement.cpp index 260b1e433db0..9d8af089e540 100644 --- a/content/html/content/src/nsHTMLLinkElement.cpp +++ b/content/html/content/src/nsHTMLLinkElement.cpp @@ -146,13 +146,13 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLLinkElement, nsGenericElement) // QueryInterface implementation for nsHTMLLinkElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLLinkElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLLinkElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMLinkStyle) - NS_INTERFACE_MAP_ENTRY(nsILink) - NS_INTERFACE_MAP_ENTRY(nsIStyleSheetLinkingElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLLinkElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLLinkElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED4(nsHTMLLinkElement, + nsIDOMHTMLLinkElement, + nsIDOMLinkStyle, + nsILink, + nsIStyleSheetLinkingElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLLinkElement) NS_IMPL_ELEMENT_CLONE(nsHTMLLinkElement) diff --git a/content/html/content/src/nsHTMLMapElement.cpp b/content/html/content/src/nsHTMLMapElement.cpp index 8b39631b7c1b..df5491930902 100644 --- a/content/html/content/src/nsHTMLMapElement.cpp +++ b/content/html/content/src/nsHTMLMapElement.cpp @@ -102,10 +102,10 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLMapElement, nsGenericElement) // QueryInterface implementation for nsHTMLMapElement -NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(nsHTMLMapElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLMapElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLMapElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLMapElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLMapElement, nsIDOMHTMLMapElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLMapElement) nsresult diff --git a/content/html/content/src/nsHTMLMetaElement.cpp b/content/html/content/src/nsHTMLMetaElement.cpp index 5732268e4b90..454b86ff0b3a 100644 --- a/content/html/content/src/nsHTMLMetaElement.cpp +++ b/content/html/content/src/nsHTMLMetaElement.cpp @@ -87,11 +87,10 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLMetaElement, nsGenericElement) // QueryInterface implementation for nsHTMLMetaElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLMetaElement, - nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLMetaElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLMetaElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLMetaElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLMetaElement, nsIDOMHTMLMetaElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLMetaElement) NS_IMPL_ELEMENT_CLONE(nsHTMLMetaElement) diff --git a/content/html/content/src/nsHTMLOListElement.cpp b/content/html/content/src/nsHTMLOListElement.cpp index 9418beb41281..d8f9d694fce9 100644 --- a/content/html/content/src/nsHTMLOListElement.cpp +++ b/content/html/content/src/nsHTMLOListElement.cpp @@ -103,9 +103,10 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLSharedListElement, nsGenericElement) // QueryInterface implementation for nsHTMLSharedListElement -NS_HTML_CONTENT_INTERFACE_MAP_AMBIGOUS_BEGIN(nsHTMLSharedListElement, - nsGenericHTMLElement, - nsIDOMHTMLOListElement) +NS_HTML_CONTENT_INTERFACE_TABLE_AMBIGOUS_HEAD(nsHTMLSharedListElement, + nsGenericHTMLElement, + nsIDOMHTMLOListElement) + NS_INTERFACE_TABLE_TO_MAP_SEGUE NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLOListElement, ol) NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLDListElement, dl) NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLUListElement, ul) diff --git a/content/html/content/src/nsHTMLObjectElement.cpp b/content/html/content/src/nsHTMLObjectElement.cpp index f2c15fc0ec43..6e9962f93217 100644 --- a/content/html/content/src/nsHTMLObjectElement.cpp +++ b/content/html/content/src/nsHTMLObjectElement.cpp @@ -165,20 +165,19 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END NS_IMPL_ADDREF_INHERITED(nsHTMLObjectElement, nsGenericElement) NS_IMPL_RELEASE_INHERITED(nsHTMLObjectElement, nsGenericElement) -NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(nsHTMLObjectElement, - nsGenericHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLObjectElement) - NS_INTERFACE_MAP_ENTRY(imgIDecoderObserver) - NS_INTERFACE_MAP_ENTRY(nsIRequestObserver) - NS_INTERFACE_MAP_ENTRY(nsIStreamListener) - NS_INTERFACE_MAP_ENTRY(nsIFrameLoaderOwner) - NS_INTERFACE_MAP_ENTRY(nsIObjectLoadingContent) - NS_INTERFACE_MAP_ENTRY(nsIImageLoadingContent) - NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor) - NS_INTERFACE_MAP_ENTRY(nsIChannelEventSink) - NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLObjectElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLObjectElement, + nsGenericHTMLFormElement) + NS_INTERFACE_TABLE_INHERITED9(nsHTMLObjectElement, + nsIDOMHTMLObjectElement, + imgIDecoderObserver, + nsIRequestObserver, + nsIStreamListener, + nsIFrameLoaderOwner, + nsIObjectLoadingContent, + nsIImageLoadingContent, + nsIInterfaceRequestor, + nsIChannelEventSink) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLObjectElement) NS_IMPL_ELEMENT_CLONE(nsHTMLObjectElement) diff --git a/content/html/content/src/nsHTMLOptGroupElement.cpp b/content/html/content/src/nsHTMLOptGroupElement.cpp index 80fd636c5dfd..2fc65ec37d2c 100644 --- a/content/html/content/src/nsHTMLOptGroupElement.cpp +++ b/content/html/content/src/nsHTMLOptGroupElement.cpp @@ -114,11 +114,11 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLOptGroupElement, nsGenericElement) // QueryInterface implementation for nsHTMLOptGroupElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLOptGroupElement, - nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLOptGroupElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLOptGroupElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLOptGroupElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLOptGroupElement, + nsIDOMHTMLOptGroupElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLOptGroupElement) NS_IMPL_ELEMENT_CLONE(nsHTMLOptGroupElement) diff --git a/content/html/content/src/nsHTMLOptionElement.cpp b/content/html/content/src/nsHTMLOptionElement.cpp index d4e50db3b274..c3e4fadc0381 100644 --- a/content/html/content/src/nsHTMLOptionElement.cpp +++ b/content/html/content/src/nsHTMLOptionElement.cpp @@ -171,13 +171,14 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLOptionElement, nsGenericElement) // QueryInterface implementation for nsHTMLOptionElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLOptionElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLOptionElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLOptionElement) - NS_INTERFACE_MAP_ENTRY(nsIJSNativeInitializer) - NS_INTERFACE_MAP_ENTRY(nsIOptionElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLOptionElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLOptionElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED4(nsHTMLOptionElement, + nsIDOMHTMLOptionElement, + nsIDOMNSHTMLOptionElement, + nsIJSNativeInitializer, + nsIOptionElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLOptionElement) NS_IMPL_ELEMENT_CLONE(nsHTMLOptionElement) diff --git a/content/html/content/src/nsHTMLParagraphElement.cpp b/content/html/content/src/nsHTMLParagraphElement.cpp index 17f2eda41e25..9c421ae98592 100644 --- a/content/html/content/src/nsHTMLParagraphElement.cpp +++ b/content/html/content/src/nsHTMLParagraphElement.cpp @@ -97,11 +97,11 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLParagraphElement, nsGenericElement) // QueryInterface implementation for nsHTMLParagraphElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLParagraphElement, - nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLParagraphElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLParagraphElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLParagraphElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLParagraphElement, + nsIDOMHTMLParagraphElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLParagraphElement) NS_IMPL_ELEMENT_CLONE(nsHTMLParagraphElement) diff --git a/content/html/content/src/nsHTMLPreElement.cpp b/content/html/content/src/nsHTMLPreElement.cpp index 9935b895477b..ec354043df16 100644 --- a/content/html/content/src/nsHTMLPreElement.cpp +++ b/content/html/content/src/nsHTMLPreElement.cpp @@ -99,10 +99,9 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLPreElement, nsGenericElement) // QueryInterface implementation for nsHTMLPreElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLPreElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLPreElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLPreElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLPreElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLPreElement, nsIDOMHTMLPreElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLPreElement) NS_IMPL_ELEMENT_CLONE(nsHTMLPreElement) diff --git a/content/html/content/src/nsHTMLScriptElement.cpp b/content/html/content/src/nsHTMLScriptElement.cpp index 259670094918..64c3b888c130 100644 --- a/content/html/content/src/nsHTMLScriptElement.cpp +++ b/content/html/content/src/nsHTMLScriptElement.cpp @@ -383,11 +383,13 @@ NS_IMPL_ADDREF_INHERITED(nsHTMLScriptElement, nsGenericElement) NS_IMPL_RELEASE_INHERITED(nsHTMLScriptElement, nsGenericElement) // QueryInterface implementation for nsHTMLScriptElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLScriptElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLScriptElement) - NS_INTERFACE_MAP_ENTRY(nsIScriptLoaderObserver) - NS_INTERFACE_MAP_ENTRY(nsIScriptElement) - NS_INTERFACE_MAP_ENTRY(nsIMutationObserver) +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLScriptElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED4(nsHTMLScriptElement, + nsIDOMHTMLScriptElement, + nsIScriptLoaderObserver, + nsIScriptElement, + nsIMutationObserver) + NS_INTERFACE_TABLE_TO_MAP_SEGUE if (mScriptEventHandler && aIID.Equals(NS_GET_IID(nsIScriptEventHandler))) foundInterface = static_cast (mScriptEventHandler); diff --git a/content/html/content/src/nsHTMLSelectElement.cpp b/content/html/content/src/nsHTMLSelectElement.cpp index 1edb7876919e..5c56f1f9cc67 100644 --- a/content/html/content/src/nsHTMLSelectElement.cpp +++ b/content/html/content/src/nsHTMLSelectElement.cpp @@ -534,14 +534,14 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLSelectElement, nsGenericElement) // QueryInterface implementation for nsHTMLSelectElement -NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(nsHTMLSelectElement, - nsGenericHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLSelectElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLSelectElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSXBLFormControl) - NS_INTERFACE_MAP_ENTRY(nsISelectElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLSelectElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLSelectElement, + nsGenericHTMLFormElement) + NS_INTERFACE_TABLE_INHERITED4(nsHTMLSelectElement, + nsIDOMHTMLSelectElement, + nsIDOMNSHTMLSelectElement, + nsIDOMNSXBLFormControl, + nsISelectElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLSelectElement) // nsIDOMHTMLSelectElement @@ -2247,11 +2247,12 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END // nsISupports // QueryInterface implementation for nsHTMLOptionCollection -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsHTMLOptionCollection) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLOptionsCollection) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLOptionCollection) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLCollection) - NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMNSHTMLOptionCollection) +NS_INTERFACE_TABLE_HEAD(nsHTMLOptionCollection) + NS_INTERFACE_TABLE3(nsHTMLOptionCollection, + nsIDOMNSHTMLOptionCollection, + nsIDOMHTMLOptionsCollection, + nsIDOMHTMLCollection) + NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsHTMLOptionCollection) NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLOptionsCollection) NS_INTERFACE_MAP_END diff --git a/content/html/content/src/nsHTMLSharedElement.cpp b/content/html/content/src/nsHTMLSharedElement.cpp index 7285eea4739a..69d2862dbaee 100644 --- a/content/html/content/src/nsHTMLSharedElement.cpp +++ b/content/html/content/src/nsHTMLSharedElement.cpp @@ -128,9 +128,10 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLSharedElement, nsGenericElement) // QueryInterface implementation for nsHTMLSharedElement -NS_HTML_CONTENT_INTERFACE_MAP_AMBIGOUS_BEGIN(nsHTMLSharedElement, - nsGenericHTMLElement, - nsIDOMHTMLParamElement) +NS_HTML_CONTENT_INTERFACE_TABLE_AMBIGOUS_HEAD(nsHTMLSharedElement, + nsGenericHTMLElement, + nsIDOMHTMLParamElement) + NS_INTERFACE_TABLE_TO_MAP_SEGUE NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLParamElement, param) NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLIsIndexElement, isindex) NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLBaseElement, base) diff --git a/content/html/content/src/nsHTMLSharedObjectElement.cpp b/content/html/content/src/nsHTMLSharedObjectElement.cpp index 6c48542475a5..3db646cf7523 100644 --- a/content/html/content/src/nsHTMLSharedObjectElement.cpp +++ b/content/html/content/src/nsHTMLSharedObjectElement.cpp @@ -209,23 +209,24 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END NS_IMPL_ADDREF_INHERITED(nsHTMLSharedObjectElement, nsGenericElement) NS_IMPL_RELEASE_INHERITED(nsHTMLSharedObjectElement, nsGenericElement) -NS_HTML_CONTENT_CC_INTERFACE_MAP_AMBIGUOUS_BEGIN(nsHTMLSharedObjectElement, - nsGenericHTMLElement, - nsIDOMHTMLAppletElement) +NS_HTML_CONTENT_CC_INTERFACE_TABLE_AMBIGUOUS_HEAD(nsHTMLSharedObjectElement, + nsGenericHTMLElement, + nsIDOMHTMLAppletElement) + NS_INTERFACE_TABLE_INHERITED8(nsHTMLSharedObjectElement, + imgIDecoderObserver, + nsIRequestObserver, + nsIStreamListener, + nsIFrameLoaderOwner, + nsIObjectLoadingContent, + 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) #endif - NS_INTERFACE_MAP_ENTRY(imgIDecoderObserver) - NS_INTERFACE_MAP_ENTRY(nsIRequestObserver) - NS_INTERFACE_MAP_ENTRY(nsIStreamListener) - NS_INTERFACE_MAP_ENTRY(nsIFrameLoaderOwner) - NS_INTERFACE_MAP_ENTRY(nsIObjectLoadingContent) - NS_INTERFACE_MAP_ENTRY(nsIImageLoadingContent) - NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor) - NS_INTERFACE_MAP_ENTRY(nsIChannelEventSink) - NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO_IF_TAG(HTMLAppletElement, applet) NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO_IF_TAG(HTMLEmbedElement, embed) NS_HTML_CONTENT_INTERFACE_MAP_END diff --git a/content/html/content/src/nsHTMLSpanElement.cpp b/content/html/content/src/nsHTMLSpanElement.cpp index 2fd3f1a12408..7b02961358f5 100644 --- a/content/html/content/src/nsHTMLSpanElement.cpp +++ b/content/html/content/src/nsHTMLSpanElement.cpp @@ -87,9 +87,8 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLSpanElement, nsGenericElement) // QueryInterface implementation for nsHTMLSpanElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLSpanElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLSpanElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLSpanElement, nsGenericHTMLElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLSpanElement) NS_IMPL_ELEMENT_CLONE(nsHTMLSpanElement) diff --git a/content/html/content/src/nsHTMLStyleElement.cpp b/content/html/content/src/nsHTMLStyleElement.cpp index b861eb87345c..283d1c3b4166 100644 --- a/content/html/content/src/nsHTMLStyleElement.cpp +++ b/content/html/content/src/nsHTMLStyleElement.cpp @@ -147,13 +147,13 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLStyleElement, nsGenericElement) // QueryInterface implementation for nsHTMLStyleElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLStyleElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLStyleElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMLinkStyle) - NS_INTERFACE_MAP_ENTRY(nsIStyleSheetLinkingElement) - NS_INTERFACE_MAP_ENTRY(nsIMutationObserver) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLStyleElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLStyleElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED4(nsHTMLStyleElement, + nsIDOMHTMLStyleElement, + nsIDOMLinkStyle, + nsIStyleSheetLinkingElement, + nsIMutationObserver) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLStyleElement) NS_IMPL_ELEMENT_CLONE(nsHTMLStyleElement) diff --git a/content/html/content/src/nsHTMLTableCaptionElement.cpp b/content/html/content/src/nsHTMLTableCaptionElement.cpp index 186cd8b924a4..14e1f1063f71 100644 --- a/content/html/content/src/nsHTMLTableCaptionElement.cpp +++ b/content/html/content/src/nsHTMLTableCaptionElement.cpp @@ -94,11 +94,11 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLTableCaptionElement, nsGenericElement) // QueryInterface implementation for nsHTMLTableCaptionElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTableCaptionElement, - nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLTableCaptionElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLTableCaptionElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLTableCaptionElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLTableCaptionElement, + nsIDOMHTMLTableCaptionElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLTableCaptionElement) NS_IMPL_ELEMENT_CLONE(nsHTMLTableCaptionElement) diff --git a/content/html/content/src/nsHTMLTableCellElement.cpp b/content/html/content/src/nsHTMLTableCellElement.cpp index f9235c480b9e..93e70c27e298 100644 --- a/content/html/content/src/nsHTMLTableCellElement.cpp +++ b/content/html/content/src/nsHTMLTableCellElement.cpp @@ -104,10 +104,11 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLTableCellElement, nsGenericElement) // QueryInterface implementation for nsHTMLTableCellElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTableCellElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLTableCellElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLTableCellElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLTableCellElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLTableCellElement, + nsIDOMHTMLTableCellElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLTableCellElement) NS_IMPL_ELEMENT_CLONE(nsHTMLTableCellElement) diff --git a/content/html/content/src/nsHTMLTableColElement.cpp b/content/html/content/src/nsHTMLTableColElement.cpp index dcd055b3c0bd..18b6d709eae8 100644 --- a/content/html/content/src/nsHTMLTableColElement.cpp +++ b/content/html/content/src/nsHTMLTableColElement.cpp @@ -98,12 +98,11 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLTableColElement, nsGenericElement) // QueryInterface implementation for nsHTMLTableColElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTableColElement, +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLTableColElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLTableColElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLTableColElement) -NS_HTML_CONTENT_INTERFACE_MAP_END - + NS_INTERFACE_TABLE_INHERITED1(nsHTMLTableColElement, + nsIDOMHTMLTableColElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLTableColElement) NS_IMPL_ELEMENT_CLONE(nsHTMLTableColElement) diff --git a/content/html/content/src/nsHTMLTableElement.cpp b/content/html/content/src/nsHTMLTableElement.cpp index 385f48cc4e80..46d1656193b0 100644 --- a/content/html/content/src/nsHTMLTableElement.cpp +++ b/content/html/content/src/nsHTMLTableElement.cpp @@ -150,11 +150,10 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END NS_IMPL_CYCLE_COLLECTING_ADDREF(TableRowsCollection) NS_IMPL_CYCLE_COLLECTING_RELEASE(TableRowsCollection) -NS_INTERFACE_MAP_BEGIN(TableRowsCollection) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLCollection) - NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_TABLE_HEAD(TableRowsCollection) + NS_INTERFACE_TABLE1(TableRowsCollection, nsIDOMHTMLCollection) + NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(TableRowsCollection) NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLGenericCollection) - NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(TableRowsCollection) NS_INTERFACE_MAP_END nsresult @@ -364,10 +363,10 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLTableElement, nsGenericElement) // QueryInterface implementation for nsHTMLTableElement -NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(nsHTMLTableElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLTableElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLTableElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLTableElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLTableElement, nsIDOMHTMLTableElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLTableElement) NS_IMPL_ELEMENT_CLONE(nsHTMLTableElement) diff --git a/content/html/content/src/nsHTMLTableRowElement.cpp b/content/html/content/src/nsHTMLTableRowElement.cpp index 5380430bc96a..5d12d867ad39 100644 --- a/content/html/content/src/nsHTMLTableRowElement.cpp +++ b/content/html/content/src/nsHTMLTableRowElement.cpp @@ -109,11 +109,11 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLTableRowElement, nsGenericElement) // QueryInterface implementation for nsHTMLTableRowElement -NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(nsHTMLTableRowElement, - nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLTableRowElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLTableRowElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLTableRowElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLTableRowElement, + nsIDOMHTMLTableRowElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLTableRowElement) NS_IMPL_ELEMENT_CLONE(nsHTMLTableRowElement) diff --git a/content/html/content/src/nsHTMLTableSectionElement.cpp b/content/html/content/src/nsHTMLTableSectionElement.cpp index 8a29e282b108..e14aa34f0151 100644 --- a/content/html/content/src/nsHTMLTableSectionElement.cpp +++ b/content/html/content/src/nsHTMLTableSectionElement.cpp @@ -107,11 +107,11 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLTableSectionElement, nsGenericElement) // QueryInterface implementation for nsHTMLTableSectionElement -NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(nsHTMLTableSectionElement, - nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLTableSectionElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLTableSectionElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLTableSectionElement, + nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLTableSectionElement, + nsIDOMHTMLTableSectionElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLTableSectionElement) NS_IMPL_ELEMENT_CLONE(nsHTMLTableSectionElement) diff --git a/content/html/content/src/nsHTMLTextAreaElement.cpp b/content/html/content/src/nsHTMLTextAreaElement.cpp index c24004ee2b66..e153e8840d11 100644 --- a/content/html/content/src/nsHTMLTextAreaElement.cpp +++ b/content/html/content/src/nsHTMLTextAreaElement.cpp @@ -251,15 +251,15 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLTextAreaElement, nsGenericElement) // QueryInterface implementation for nsHTMLTextAreaElement -NS_HTML_CONTENT_CC_INTERFACE_MAP_BEGIN(nsHTMLTextAreaElement, - nsGenericHTMLFormElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLTextAreaElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLTextAreaElement) - NS_INTERFACE_MAP_ENTRY(nsITextControlElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSEditableElement) - NS_INTERFACE_MAP_ENTRY(nsIMutationObserver) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLTextAreaElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_CC_INTERFACE_TABLE_HEAD(nsHTMLTextAreaElement, + nsGenericHTMLFormElement) + NS_INTERFACE_TABLE_INHERITED5(nsHTMLTextAreaElement, + nsIDOMHTMLTextAreaElement, + nsIDOMNSHTMLTextAreaElement, + nsITextControlElement, + nsIDOMNSEditableElement, + nsIMutationObserver) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLTextAreaElement) // nsIDOMHTMLTextAreaElement diff --git a/content/html/content/src/nsHTMLTitleElement.cpp b/content/html/content/src/nsHTMLTitleElement.cpp index 5aba1cf987ee..ddc324f1f07c 100644 --- a/content/html/content/src/nsHTMLTitleElement.cpp +++ b/content/html/content/src/nsHTMLTitleElement.cpp @@ -88,10 +88,9 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLTitleElement, nsGenericElement) // QueryInterface implementation for nsHTMLTitleElement -NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTitleElement, nsGenericHTMLElement) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLTitleElement) - NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLTitleElement) -NS_HTML_CONTENT_INTERFACE_MAP_END +NS_HTML_CONTENT_INTERFACE_TABLE_HEAD(nsHTMLTitleElement, nsGenericHTMLElement) + NS_INTERFACE_TABLE_INHERITED1(nsHTMLTitleElement, nsIDOMHTMLTitleElement) +NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLTitleElement) NS_IMPL_ELEMENT_CLONE(nsHTMLTitleElement) diff --git a/content/html/content/src/nsTextRectangle.cpp b/content/html/content/src/nsTextRectangle.cpp index 943608d63ffe..5a4ac1c766aa 100644 --- a/content/html/content/src/nsTextRectangle.cpp +++ b/content/html/content/src/nsTextRectangle.cpp @@ -40,9 +40,9 @@ #include "nsContentUtils.h" #include "nsDOMClassInfoID.h" -NS_INTERFACE_MAP_BEGIN(nsTextRectangle) - NS_INTERFACE_MAP_ENTRY(nsIDOMTextRectangle) - NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_TABLE_HEAD(nsTextRectangle) + NS_INTERFACE_TABLE1(nsTextRectangle, nsIDOMTextRectangle) + NS_INTERFACE_TABLE_TO_MAP_SEGUE NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(TextRectangle) NS_INTERFACE_MAP_END @@ -82,9 +82,9 @@ nsTextRectangle::GetBottom(float* aResult) return NS_OK; } -NS_INTERFACE_MAP_BEGIN(nsTextRectangleList) - NS_INTERFACE_MAP_ENTRY(nsIDOMTextRectangleList) - NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_TABLE_HEAD(nsTextRectangleList) + NS_INTERFACE_TABLE1(nsTextRectangleList, nsIDOMTextRectangleList) + NS_INTERFACE_TABLE_TO_MAP_SEGUE NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(TextRectangleList) NS_INTERFACE_MAP_END diff --git a/content/html/content/test/Makefile.in b/content/html/content/test/Makefile.in index 111a1f3d598f..93ee6fc0e7c1 100644 --- a/content/html/content/test/Makefile.in +++ b/content/html/content/test/Makefile.in @@ -94,6 +94,7 @@ _TEST_FILES = test_bug589.html \ test_bug386728.html \ test_bug386996.html \ test_bug388746.html \ + test_bug389797.html \ $(NULL) libs:: $(_TEST_FILES) diff --git a/content/html/content/test/test_bug389797.html b/content/html/content/test/test_bug389797.html new file mode 100644 index 000000000000..1fbaf59383d8 --- /dev/null +++ b/content/html/content/test/test_bug389797.html @@ -0,0 +1,282 @@ + + + + + Test for Bug 389797 + + + + + +Mozilla Bug 389797 +

+ +
+
+
+ + + diff --git a/content/html/document/src/nsHTMLDocument.cpp b/content/html/document/src/nsHTMLDocument.cpp index 6c45e6bfeed4..27ae5325d2d4 100644 --- a/content/html/document/src/nsHTMLDocument.cpp +++ b/content/html/document/src/nsHTMLDocument.cpp @@ -383,10 +383,12 @@ NS_IMPL_RELEASE_INHERITED(nsHTMLDocument, nsDocument) // QueryInterface implementation for nsHTMLDocument -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(nsHTMLDocument) - NS_INTERFACE_MAP_ENTRY(nsIHTMLDocument) - NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLDocument) - NS_INTERFACE_MAP_ENTRY(nsIDOMNSHTMLDocument) +NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(nsHTMLDocument) + NS_INTERFACE_TABLE_INHERITED3(nsHTMLDocument, + nsIHTMLDocument, + nsIDOMHTMLDocument, + nsIDOMNSHTMLDocument) + NS_INTERFACE_TABLE_TO_MAP_SEGUE NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLDocument) NS_INTERFACE_MAP_END_INHERITING(nsDocument) diff --git a/content/html/document/src/nsHTMLFragmentContentSink.cpp b/content/html/document/src/nsHTMLFragmentContentSink.cpp index ee61da91eb70..06cc327e1404 100644 --- a/content/html/document/src/nsHTMLFragmentContentSink.cpp +++ b/content/html/document/src/nsHTMLFragmentContentSink.cpp @@ -223,16 +223,10 @@ nsHTMLFragmentContentSink::~nsHTMLFragmentContentSink() } } -NS_IMPL_ADDREF(nsHTMLFragmentContentSink) -NS_IMPL_RELEASE(nsHTMLFragmentContentSink) - -NS_INTERFACE_MAP_BEGIN(nsHTMLFragmentContentSink) - NS_INTERFACE_MAP_ENTRY(nsIFragmentContentSink) - NS_INTERFACE_MAP_ENTRY(nsIHTMLContentSink) - NS_INTERFACE_MAP_ENTRY(nsIContentSink) - NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIFragmentContentSink) -NS_INTERFACE_MAP_END - +NS_IMPL_ISUPPORTS3(nsHTMLFragmentContentSink, + nsIFragmentContentSink, + nsIHTMLContentSink, + nsIContentSink) NS_IMETHODIMP nsHTMLFragmentContentSink::WillBuildModel(void) diff --git a/content/html/document/src/nsImageDocument.cpp b/content/html/document/src/nsImageDocument.cpp index 8e5abe6809ce..4c9199e58510 100644 --- a/content/html/document/src/nsImageDocument.cpp +++ b/content/html/document/src/nsImageDocument.cpp @@ -80,8 +80,6 @@ public: ImageListener(nsImageDocument* aDocument); virtual ~ImageListener(); - NS_DECL_ISUPPORTS - NS_DECL_NSIREQUESTOBSERVER }; @@ -94,7 +92,7 @@ public: nsImageDocument(); virtual ~nsImageDocument(); - NS_DECL_ISUPPORTS + NS_DECL_ISUPPORTS_INHERITED virtual nsresult Init(); @@ -148,12 +146,6 @@ protected: PRPackedBool mFirstResize; }; -NS_IMPL_ADDREF_INHERITED(ImageListener, nsMediaDocumentStreamListener) -NS_IMPL_RELEASE_INHERITED(ImageListener, nsMediaDocumentStreamListener) - -NS_INTERFACE_MAP_BEGIN(ImageListener) -NS_INTERFACE_MAP_END_INHERITING(nsMediaDocumentStreamListener) - ImageListener::ImageListener(nsImageDocument* aDocument) : nsMediaDocumentStreamListener(aDocument) { @@ -269,14 +261,18 @@ nsImageDocument::~nsImageDocument() { } +// XXXbz shouldn't this participate in cycle collection? It's got +// mImageContent! NS_IMPL_ADDREF_INHERITED(nsImageDocument, nsMediaDocument) NS_IMPL_RELEASE_INHERITED(nsImageDocument, nsMediaDocument) -NS_INTERFACE_MAP_BEGIN(nsImageDocument) - NS_INTERFACE_MAP_ENTRY(nsIImageDocument) - NS_INTERFACE_MAP_ENTRY(imgIDecoderObserver) - NS_INTERFACE_MAP_ENTRY(imgIContainerObserver) - NS_INTERFACE_MAP_ENTRY(nsIDOMEventListener) +NS_INTERFACE_TABLE_HEAD(nsImageDocument) + NS_INTERFACE_TABLE4(nsImageDocument, + nsIImageDocument, + imgIDecoderObserver, + imgIContainerObserver, + nsIDOMEventListener) + NS_INTERFACE_TABLE_TO_MAP_SEGUE NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(ImageDocument) NS_INTERFACE_MAP_END_INHERITING(nsMediaDocument) diff --git a/content/html/document/src/nsPluginDocument.cpp b/content/html/document/src/nsPluginDocument.cpp index 25173d6e8fd5..bd51e9d22c45 100644 --- a/content/html/document/src/nsPluginDocument.cpp +++ b/content/html/document/src/nsPluginDocument.cpp @@ -44,6 +44,8 @@ #include "nsIDocShellTreeItem.h" #include "nsNodeInfoManager.h" #include "nsContentCreatorFunctions.h" +#include "nsContentPolicyUtils.h" +#include "nsIPropertyBag2.h" class nsPluginDocument : public nsMediaDocument, public nsIPluginDocument @@ -52,7 +54,7 @@ public: nsPluginDocument(); virtual ~nsPluginDocument(); - NS_DECL_ISUPPORTS + NS_DECL_ISUPPORTS_INHERITED NS_DECL_NSIPLUGINDOCUMENT virtual nsresult StartDocumentLoad(const char* aCommand, @@ -143,13 +145,10 @@ nsPluginDocument::~nsPluginDocument() { } -NS_IMPL_ADDREF_INHERITED(nsPluginDocument, nsMediaDocument) -NS_IMPL_RELEASE_INHERITED(nsPluginDocument, nsMediaDocument) - -NS_INTERFACE_MAP_BEGIN(nsPluginDocument) - NS_INTERFACE_MAP_ENTRY(nsIPluginDocument) -NS_INTERFACE_MAP_END_INHERITING(nsMediaDocument) - +// XXXbz shouldn't this participate in cycle collection? It's got +// mPluginContent! +NS_IMPL_ISUPPORTS_INHERITED1(nsPluginDocument, nsMediaDocument, + nsIPluginDocument) void nsPluginDocument::SetScriptGlobalObject(nsIScriptGlobalObject* aScriptGlobalObject) diff --git a/xpcom/base/nsISupportsBase.h b/xpcom/base/nsISupportsBase.h index 708321bdc765..0fb7a7ad4aa1 100644 --- a/xpcom/base/nsISupportsBase.h +++ b/xpcom/base/nsISupportsBase.h @@ -80,7 +80,8 @@ public: * receive the result. * @return NS_OK if the interface is supported by the associated * instance, NS_NOINTERFACE if it is not. - * NS_ERROR_INVALID_POINTER if aInstancePtr is NULL. + * + * aInstancePtr must not be null. */ NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr) = 0; /** diff --git a/xpcom/glue/nsCycleCollectionParticipant.h b/xpcom/glue/nsCycleCollectionParticipant.h index a8863fe7b7c9..8e056207f933 100644 --- a/xpcom/glue/nsCycleCollectionParticipant.h +++ b/xpcom/glue/nsCycleCollectionParticipant.h @@ -167,13 +167,29 @@ public: #define NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(_class) \ NS_INTERFACE_MAP_BEGIN(_class) \ - NS_INTERFACE_MAP_ENTRY_CYCLE_COLLECTION(_class) \ - NS_INTERFACE_MAP_ENTRY_CYCLE_COLLECTION_ISUPPORTS(_class) + NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(_class) #define NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(_class) \ NS_INTERFACE_MAP_BEGIN(_class) \ NS_INTERFACE_MAP_ENTRY_CYCLE_COLLECTION(_class) +#define NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(_class) \ + if (rv == NS_OK) return rv; \ + nsISupports* foundInterface; \ + NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(_class) + +#define NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(_class) \ + NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ + { \ + NS_PRECONDITION(aInstancePtr, "null out param"); \ + \ + if ( aIID.Equals(NS_GET_IID(nsXPCOMCycleCollectionParticipant)) ) { \ + *aInstancePtr = &NS_CYCLE_COLLECTION_NAME(_class); \ + return NS_OK; \ + } \ + nsresult rv; + + /////////////////////////////////////////////////////////////////////////////// // Helpers for implementing nsCycleCollectionParticipant::Unlink /////////////////////////////////////////////////////////////////////////////// diff --git a/xpcom/glue/nsISupportsImpl.h b/xpcom/glue/nsISupportsImpl.h index 6f2061c5967b..9d1c766011fc 100644 --- a/xpcom/glue/nsISupportsImpl.h +++ b/xpcom/glue/nsISupportsImpl.h @@ -435,7 +435,7 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ { \ NS_ASSERTION(aInstancePtr, \ "QueryInterface requires a non-NULL destination!"); \ - nsresult rv = NS_ERROR_FAILURE;; + nsresult rv = NS_ERROR_FAILURE; #define NS_INTERFACE_TABLE_BEGIN \ static const QITableEntry table[] = { @@ -456,11 +456,14 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ reinterpret_cast((_class*) 0x1000) \ }, -#define NS_INTERFACE_TABLE_END \ +#define NS_INTERFACE_TABLE_END_WITH_PTR(_ptr) \ { nsnull, 0 } }; \ - rv = NS_TableDrivenQI(static_cast(this), \ + rv = NS_TableDrivenQI(static_cast(_ptr), \ table, aIID, aInstancePtr); +#define NS_INTERFACE_TABLE_END \ + NS_INTERFACE_TABLE_END_WITH_PTR(this) + #define NS_INTERFACE_TABLE_TAIL \ return rv; \ } @@ -586,53 +589,42 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ #define NS_INTERFACE_MAP_END_AGGREGATED(_aggregator) \ NS_IMPL_QUERY_TAIL_USING_AGGREGATOR(_aggregator) -#define NS_IMPL_QUERY_INTERFACE0(_class) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE0(_class) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(_class, nsISupports) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE1(_class, _i1) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE1(_class, _i1) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(_class, _i1) \ NS_INTERFACE_TABLE_ENTRY_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE2(_class, _i1, _i2) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE2(_class, _i1, _i2) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(_class, _i1) \ NS_INTERFACE_TABLE_ENTRY(_class, _i2) \ NS_INTERFACE_TABLE_ENTRY_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE3(_class, _i1, _i2, _i3) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE3(_class, _i1, _i2, _i3) \ 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_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE4(_class, _i1, _i2, _i3, _i4) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE4(_class, _i1, _i2, _i3, _i4) \ 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_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE5(_class, _i1, _i2, _i3, _i4, _i5) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE5(_class, _i1, _i2, _i3, _i4, _i5) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(_class, _i1) \ NS_INTERFACE_TABLE_ENTRY(_class, _i2) \ @@ -640,11 +632,9 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ NS_INTERFACE_TABLE_ENTRY(_class, _i4) \ NS_INTERFACE_TABLE_ENTRY(_class, _i5) \ NS_INTERFACE_TABLE_ENTRY_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE6(_class, _i1, _i2, _i3, _i4, _i5, _i6) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE6(_class, _i1, _i2, _i3, _i4, _i5, _i6) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(_class, _i1) \ NS_INTERFACE_TABLE_ENTRY(_class, _i2) \ @@ -653,11 +643,9 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ NS_INTERFACE_TABLE_ENTRY(_class, _i5) \ NS_INTERFACE_TABLE_ENTRY(_class, _i6) \ NS_INTERFACE_TABLE_ENTRY_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(_class, _i1) \ NS_INTERFACE_TABLE_ENTRY(_class, _i2) \ @@ -667,12 +655,9 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ NS_INTERFACE_TABLE_ENTRY(_class, _i6) \ NS_INTERFACE_TABLE_ENTRY(_class, _i7) \ NS_INTERFACE_TABLE_ENTRY_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE8(_class, _i1, _i2, _i3, _i4, _i5, _i6, \ - _i7, _i8) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE8(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(_class, _i1) \ NS_INTERFACE_TABLE_ENTRY(_class, _i2) \ @@ -683,12 +668,10 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ NS_INTERFACE_TABLE_ENTRY(_class, _i7) \ NS_INTERFACE_TABLE_ENTRY(_class, _i8) \ NS_INTERFACE_TABLE_ENTRY_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE9(_class, _i1, _i2, _i3, _i4, _i5, _i6, \ - _i7, _i8, _i9) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE9(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \ + _i8, _i9) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(_class, _i1) \ NS_INTERFACE_TABLE_ENTRY(_class, _i2) \ @@ -700,12 +683,10 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ NS_INTERFACE_TABLE_ENTRY(_class, _i8) \ NS_INTERFACE_TABLE_ENTRY(_class, _i9) \ NS_INTERFACE_TABLE_ENTRY_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE10(_class, _i1, _i2, _i3, _i4, _i5, _i6, \ - _i7, _i8, _i9, _i10) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE10(_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) \ @@ -718,12 +699,10 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ NS_INTERFACE_TABLE_ENTRY(_class, _i9) \ NS_INTERFACE_TABLE_ENTRY(_class, _i10) \ NS_INTERFACE_TABLE_ENTRY_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE11(_class, _i1, _i2, _i3, _i4, _i5, _i6, \ - _i7, _i8, _i9, _i10, _i11) \ - NS_INTERFACE_TABLE_HEAD(_class) \ +#define NS_INTERFACE_TABLE11(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \ + _i8, _i9, _i10, _i11) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(_class, _i1) \ NS_INTERFACE_TABLE_ENTRY(_class, _i2) \ @@ -737,7 +716,72 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ NS_INTERFACE_TABLE_ENTRY(_class, _i10) \ NS_INTERFACE_TABLE_ENTRY(_class, _i11) \ NS_INTERFACE_TABLE_ENTRY_AMBIGUOUS(_class, nsISupports, _i1) \ - NS_INTERFACE_TABLE_END \ + NS_INTERFACE_TABLE_END + +#define NS_IMPL_QUERY_INTERFACE0(_class) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE0(_class) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE1(_class, _i1) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE1(_class, _i1) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE2(_class, _i1, _i2) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE2(_class, _i1, _i2) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE3(_class, _i1, _i2, _i3) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE3(_class, _i1, _i2, _i3) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE4(_class, _i1, _i2, _i3, _i4) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE4(_class, _i1, _i2, _i3, _i4) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE5(_class, _i1, _i2, _i3, _i4, _i5) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE5(_class, _i1, _i2, _i3, _i4, _i5) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE6(_class, _i1, _i2, _i3, _i4, _i5, _i6) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE6(_class, _i1, _i2, _i3, _i4, _i5, _i6) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE8(_class, _i1, _i2, _i3, _i4, _i5, _i6, \ + _i7, _i8) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE8(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE9(_class, _i1, _i2, _i3, _i4, _i5, _i6, \ + _i7, _i8, _i9) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE9(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, _i9) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE10(_class, _i1, _i2, _i3, _i4, _i5, _i6, \ + _i7, _i8, _i9, _i10) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE10(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, \ + _i9, _i10) \ + NS_INTERFACE_TABLE_TAIL + +#define NS_IMPL_QUERY_INTERFACE11(_class, _i1, _i2, _i3, _i4, _i5, _i6, \ + _i7, _i8, _i9, _i10, _i11) \ + NS_INTERFACE_TABLE_HEAD(_class) \ + NS_INTERFACE_TABLE11(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, \ + _i9, _i10, _i11) \ NS_INTERFACE_TABLE_TAIL @@ -754,17 +798,6 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \ #define NS_IMPL_THREADSAFE_QUERY_INTERFACE10 NS_IMPL_QUERY_INTERFACE10 #define NS_IMPL_THREADSAFE_QUERY_INTERFACE11 NS_IMPL_QUERY_INTERFACE11 -#define NS_IMPL_QUERY_INTERFACE_INHERITED7(Class,Super,i1,i2,i3,i4,i5,i6,i7) \ - NS_IMPL_QUERY_HEAD(Class) \ - NS_IMPL_QUERY_BODY(i1) \ - NS_IMPL_QUERY_BODY(i2) \ - NS_IMPL_QUERY_BODY(i3) \ - NS_IMPL_QUERY_BODY(i4) \ - NS_IMPL_QUERY_BODY(i5) \ - NS_IMPL_QUERY_BODY(i6) \ - NS_IMPL_QUERY_BODY(i7) \ - NS_IMPL_QUERY_TAIL_INHERITING(Super) \ - /** * Declare that you're going to inherit from something that already * implements nsISupports, but also implements an additional interface, thus @@ -808,57 +841,44 @@ NS_IMETHODIMP_(nsrefcnt) Class::Release(void) \ return r; \ } \ -#define NS_IMPL_QUERY_INTERFACE_INHERITED0(Class, Super) \ - NS_INTERFACE_TABLE_HEAD(Class) \ - NS_INTERFACE_TABLE_TAIL_INHERITING(Super) +#define NS_INTERFACE_TABLE_INHERITED0(Class) /* Nothing to do here */ -#define NS_IMPL_QUERY_INTERFACE_INHERITED1(Class, Super, i1) \ - NS_INTERFACE_TABLE_HEAD(Class) \ +#define NS_INTERFACE_TABLE_INHERITED1(Class, i1) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(Class, i1) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE_INHERITED2(Class, Super, i1, i2) \ - NS_INTERFACE_TABLE_HEAD(Class) \ +#define NS_INTERFACE_TABLE_INHERITED2(Class, i1, i2) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(Class, i1) \ NS_INTERFACE_TABLE_ENTRY(Class, i2) \ - NS_INTERFACE_TABLE_END \ - NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE_INHERITED3(Class, Super, i1, i2, i3) \ - NS_INTERFACE_TABLE_HEAD(Class) \ +#define NS_INTERFACE_TABLE_INHERITED3(Class, i1, i2, i3) \ 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_END \ - NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE_INHERITED4(Class, Super, i1, i2, i3, i4) \ - NS_INTERFACE_TABLE_HEAD(Class) \ +#define NS_INTERFACE_TABLE_INHERITED4(Class, i1, i2, i3, i4) \ 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_END \ - NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE_INHERITED5(Class,Super,i1,i2,i3,i4,i5) \ - NS_INTERFACE_TABLE_HEAD(Class) \ +#define NS_INTERFACE_TABLE_INHERITED5(Class, i1, i2, i3, i4, i5) \ 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_END \ - NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + NS_INTERFACE_TABLE_END -#define NS_IMPL_QUERY_INTERFACE_INHERITED6(Class,Super,i1,i2,i3,i4,i5,i6) \ - NS_INTERFACE_TABLE_HEAD(Class) \ +#define NS_INTERFACE_TABLE_INHERITED6(Class, i1, i2, i3, i4, i5, i6) \ NS_INTERFACE_TABLE_BEGIN \ NS_INTERFACE_TABLE_ENTRY(Class, i1) \ NS_INTERFACE_TABLE_ENTRY(Class, i2) \ @@ -866,7 +886,95 @@ NS_IMETHODIMP_(nsrefcnt) Class::Release(void) \ NS_INTERFACE_TABLE_ENTRY(Class, i4) \ NS_INTERFACE_TABLE_ENTRY(Class, i5) \ NS_INTERFACE_TABLE_ENTRY(Class, i6) \ - NS_INTERFACE_TABLE_END \ + NS_INTERFACE_TABLE_END + +#define NS_INTERFACE_TABLE_INHERITED7(Class, i1, i2, i3, i4, i5, i6, i7) \ + 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_END + +#define NS_INTERFACE_TABLE_INHERITED8(Class, i1, i2, i3, i4, i5, i6, i7, i8) \ + 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_END + +#define NS_INTERFACE_TABLE_INHERITED9(Class, i1, i2, i3, i4, i5, i6, i7, \ + i8, i9) \ + 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_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) \ + NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + +#define NS_IMPL_QUERY_INTERFACE_INHERITED2(Class, Super, i1, i2) \ + NS_INTERFACE_TABLE_HEAD(Class) \ + NS_INTERFACE_TABLE_INHERITED2(Class, i1, i2) \ + NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + +#define NS_IMPL_QUERY_INTERFACE_INHERITED3(Class, Super, i1, i2, i3) \ + NS_INTERFACE_TABLE_HEAD(Class) \ + NS_INTERFACE_TABLE_INHERITED3(Class, i1, i2, i3) \ + NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + +#define NS_IMPL_QUERY_INTERFACE_INHERITED4(Class, Super, i1, i2, i3, i4) \ + NS_INTERFACE_TABLE_HEAD(Class) \ + NS_INTERFACE_TABLE_INHERITED4(Class, i1, i2, i3, i4) \ + NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + +#define NS_IMPL_QUERY_INTERFACE_INHERITED5(Class,Super,i1,i2,i3,i4,i5) \ + NS_INTERFACE_TABLE_HEAD(Class) \ + NS_INTERFACE_TABLE_INHERITED5(Class, i1, i2, i3, i4, i5) \ + NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + +#define NS_IMPL_QUERY_INTERFACE_INHERITED6(Class,Super,i1,i2,i3,i4,i5,i6) \ + NS_INTERFACE_TABLE_HEAD(Class) \ + NS_INTERFACE_TABLE_INHERITED6(Class, i1, i2, i3, i4, i5, i6) \ + NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + +#define NS_IMPL_QUERY_INTERFACE_INHERITED7(Class,Super,i1,i2,i3,i4,i5,i6,i7) \ + NS_INTERFACE_TABLE_HEAD(Class) \ + NS_INTERFACE_TABLE_INHERITED7(Class, i1, i2, i3, i4, i5, i6, i7) \ + NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + +#define NS_IMPL_QUERY_INTERFACE_INHERITED8(Class,Super,i1,i2,i3,i4,i5,i6, \ + i7,i8) \ + NS_INTERFACE_TABLE_HEAD(Class) \ + NS_INTERFACE_TABLE_INHERITED8(Class, i1, i2, i3, i4, i5, i6, i7, i8) \ + NS_INTERFACE_TABLE_TAIL_INHERITING(Super) + +#define NS_IMPL_QUERY_INTERFACE_INHERITED9(Class,Super,i1,i2,i3,i4,i5,i6, \ + i7,i8,i9) \ + NS_INTERFACE_TABLE_HEAD(Class) \ + NS_INTERFACE_TABLE_INHERITED9(Class, i1, i2, i3, i4, i5, i6, i7, i8, i9) \ NS_INTERFACE_TABLE_TAIL_INHERITING(Super) /** @@ -982,6 +1090,16 @@ NS_IMETHODIMP_(nsrefcnt) Class::Release(void) \ NS_IMPL_ADDREF_INHERITED(Class, Super) \ NS_IMPL_RELEASE_INHERITED(Class, Super) \ +/* + * Macro to glue together a QI that starts with an interface table + * and segues into an interface map (e.g. it uses singleton classinfo + * or tearoffs). + */ +#define NS_INTERFACE_TABLE_TO_MAP_SEGUE \ + if (rv == NS_OK) return rv; \ + nsISupports* foundInterface; + + /////////////////////////////////////////////////////////////////////////////// /** *