Make HTML content objects use QI tables. Bug 389797, r+sr=jst, a=sicking.

This commit is contained in:
bzbarsky@mit.edu 2007-08-20 15:55:06 -07:00
parent 6b2ada8afa
commit 3200cf8f82
60 changed files with 854 additions and 496 deletions

View File

@ -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;

View File

@ -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

View File

@ -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<nsIDOMNode *>(aElement);
} else if (aIID.Equals(NS_GET_IID(nsIDOMElement))) {
inst = static_cast<nsIDOMElement *>(aElement);
} else if (aIID.Equals(NS_GET_IID(nsIDOMHTMLElement))) {
inst = static_cast<nsIDOMHTMLElement *>(aElement);
} else if (aIID.Equals(NS_GET_IID(nsIDOMNSHTMLElement))) {
inst = static_cast<nsIDOMNSHTMLElement *>
(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<nsIDOMElementCSSInlineStyle *>
(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

View File

@ -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, \

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)
//

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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<nsIScriptEventHandler*>
(mScriptEventHandler);

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -0,0 +1,282 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=389797
-->
<head>
<title>Test for Bug 389797</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=389797">Mozilla Bug 389797</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
/** Test for Bug 389797 **/
var allTags = [];
var classInfos = {};
var interfaces = {};
var interfacesNonClassinfo = {};
function getClassName(tag) {
return "HTML" + classInfos[tag] + "Element";
}
function HTML_TAG(aTagName, aImplClass) {
allTags.push(aTagName);
classInfos[aTagName] = aImplClass;
interfaces[aTagName] =
[ "nsIDOM3Node",
"nsIDOMNSElement",
"nsIDOMEventTarget",
"nsIDOMNSHTMLElement",
"nsIDOMElementCSSInlineStyle" ];
// Some interfaces don't appear in classinfo because other interfaces that
// inherit from them do.
interfacesNonClassinfo[aTagName] =
[ "nsIDOMNode",
"nsIDOMElement",
"nsIDOM3EventTarget", "nsIDOMNSEventTarget",
"nsISupportsWeakReference" ];
var interfaceName = "nsIDOM" + getClassName(aTagName);
if (interfaceName in Components.interfaces) { // no nsIDOMHTMLSpanElement
interfaces[aTagName].push(interfaceName);
interfacesNonClassinfo[aTagName].push("nsIDOMHTMLElement");
} else if (aTagName != "ins" && aTagName != "del") {
// Inherits directly from nsIDOMHTMLElement, unless it's "ins" or "del",
// which are weird.
interfaces[aTagName].push("nsIDOMHTMLElement");
}
var interfaceNameNS = "nsIDOMNS" + getClassName(aTagName);
if (interfaceNameNS in Components.interfaces) {
interfaces[aTagName].push(interfaceNameNS);
}
if (arguments.length > 2) {
for (var i = 0; i < arguments[2].length; ++i) {
interfaces[aTagName].push(arguments[2][i]);
}
}
if (arguments.length > 3) {
for (i = 0; i < arguments[3].length; ++i) {
interfacesNonClassinfo[aTagName].push(arguments[3][i]);
}
}
}
const objectIfaces = [
"imgIDecoderObserver", "nsIRequestObserver", "nsIStreamListener",
"nsIFrameLoaderOwner", "nsIObjectLoadingContent", "nsIInterfaceRequestor",
"nsIChannelEventSink"
];
var objectIfaces2 = [];
for each (var iface in objectIfaces) {
objectIfaces2.push(iface);
}
objectIfaces2.push("nsIImageLoadingContent");
/* List copy/pasted from nsHTMLTagList.h, with the second field modified to the
correct classinfo (instead of the impl class) in the following cases:
applet
base
basefont
blockquote
del
dir
dl
embed
ins
isindex
menu
ol
param
q
spacer
ul
wbr
*/
HTML_TAG("a", "Anchor", [ "nsIDOMNSHTMLAnchorElement2" ]);
HTML_TAG("abbr", "Span");
HTML_TAG("acronym", "Span");
HTML_TAG("address", "Span");
HTML_TAG("applet", "Applet", [], objectIfaces);
HTML_TAG("area", "Area", [ "nsIDOMNSHTMLAreaElement2" ]);
HTML_TAG("b", "Span");
HTML_TAG("base", "Base");
HTML_TAG("basefont", "BaseFont");
HTML_TAG("bdo", "Span");
HTML_TAG("bgsound", "Span");
HTML_TAG("big", "Span");
HTML_TAG("blink", "Span");
HTML_TAG("blockquote", "Quote");
HTML_TAG("body", "Body");
HTML_TAG("br", "BR");
HTML_TAG("button", "Button");
HTML_TAG("canvas", "Canvas");
HTML_TAG("caption", "TableCaption");
HTML_TAG("center", "Span");
HTML_TAG("cite", "Span");
HTML_TAG("code", "Span");
HTML_TAG("col", "TableCol");
HTML_TAG("colgroup", "TableCol");
HTML_TAG("dd", "Span");
HTML_TAG("del", "Del", [ "nsIDOMHTMLModElement" ]);
HTML_TAG("dfn", "Span");
HTML_TAG("dir", "Directory");
HTML_TAG("div", "Div");
HTML_TAG("dl", "DList");
HTML_TAG("dt", "Span");
HTML_TAG("em", "Span");
HTML_TAG("embed", "Embed", [ "nsIDOMGetSVGDocument" ], objectIfaces);
HTML_TAG("fieldset", "FieldSet");
HTML_TAG("font", "Font");
HTML_TAG("form", "Form", [], [ "nsIWebProgressListener" ]);
HTML_TAG("frame", "Frame", [], [ "nsIFrameLoaderOwner" ]);
HTML_TAG("frameset", "FrameSet");
HTML_TAG("h1", "Heading");
HTML_TAG("h2", "Heading");
HTML_TAG("h3", "Heading");
HTML_TAG("h4", "Heading");
HTML_TAG("h5", "Heading");
HTML_TAG("h6", "Heading");
HTML_TAG("head", "Head");
HTML_TAG("hr", "HR");
HTML_TAG("html", "Html");
HTML_TAG("i", "Span");
HTML_TAG("iframe", "IFrame", [ "nsIDOMNSHTMLFrameElement" ],
[ "nsIFrameLoaderOwner" ]);
HTML_TAG("image", "Span");
HTML_TAG("img", "Image", [], [ "imgIDecoderObserver",
"nsIImageLoadingContent" ]);
HTML_TAG("input", "Input", [], [ "imgIDecoderObserver",
"nsIImageLoadingContent",
"nsIDOMNSEditableElement" ]);
HTML_TAG("ins", "Ins", [ "nsIDOMHTMLModElement" ]);
HTML_TAG("isindex", "IsIndex");
HTML_TAG("kbd", "Span");
HTML_TAG("keygen", "Span");
HTML_TAG("label", "Label");
HTML_TAG("legend", "Legend");
HTML_TAG("li", "LI");
HTML_TAG("link", "Link", [ "nsIDOMLinkStyle" ]);
HTML_TAG("listing", "Span");
HTML_TAG("map", "Map");
HTML_TAG("marquee", "Div");
HTML_TAG("menu", "Menu");
HTML_TAG("meta", "Meta");
HTML_TAG("multicol", "Span");
HTML_TAG("nobr", "Span");
HTML_TAG("noembed", "Div");
HTML_TAG("noframes", "Div");
HTML_TAG("noscript", "Div");
HTML_TAG("object", "Object", [],
objectIfaces.concat([ "nsIImageLoadingContent" ]));
HTML_TAG("ol", "OList");
HTML_TAG("optgroup", "OptGroup");
HTML_TAG("option", "Option");
HTML_TAG("p", "Paragraph");
HTML_TAG("param", "Param");
HTML_TAG("plaintext", "Span");
HTML_TAG("pre", "Pre");
HTML_TAG("q", "Quote");
HTML_TAG("s", "Span");
HTML_TAG("samp", "Span");
HTML_TAG("script", "Script", [], [ "nsIScriptLoaderObserver" ]);
HTML_TAG("select", "Select", [ "nsIDOMNSXBLFormControl" ]);
HTML_TAG("small", "Span");
HTML_TAG("spacer", "Spacer");
HTML_TAG("span", "Span");
HTML_TAG("strike", "Span");
HTML_TAG("strong", "Span");
HTML_TAG("style", "Style", [ "nsIDOMLinkStyle" ]);
HTML_TAG("sub", "Span");
HTML_TAG("sup", "Span");
HTML_TAG("table", "Table");
HTML_TAG("tbody", "TableSection");
HTML_TAG("td", "TableCell");
HTML_TAG("textarea", "TextArea", [], [ "nsIDOMNSEditableElement" ]);
HTML_TAG("tfoot", "TableSection");
HTML_TAG("th", "TableCell");
HTML_TAG("thead", "TableSection");
HTML_TAG("title", "Title");
HTML_TAG("tr", "TableRow");
HTML_TAG("tt", "Span");
HTML_TAG("u", "Span");
HTML_TAG("ul", "UList");
HTML_TAG("var", "Span");
HTML_TAG("wbr", "WBR");
HTML_TAG("xmp", "Span");
function tagName(aTag) {
return "<" + aTag + ">";
}
for each (var tag in allTags) {
var node = document.createElement(tag);
// Have to use the proto's toString(), since HTMLAnchorElement and company
// override toString().
var nodeString = HTMLElement.prototype.toString.apply(node);
// Debug builds have extra info, so chop off after "Element" if it's followed
// by ' ' or ']'
nodeString = nodeString.replace(/Element[\] ].*/, "Element");
var classInfoString = getClassName(tag);
is(nodeString, "[object " + classInfoString,
"Unexpected classname for " + tagName(tag));
is(node instanceof window[classInfoString], true,
tagName(tag) + " not an instance of " + classInfos[tag]);
// Check that each node QIs to all the things we expect it to QI to
for each (var iface in interfaces[tag].concat(interfacesNonClassinfo[tag])) {
is(iface in Components.interfaces, true,
iface + " not in Components.interfaces");
is(node instanceof Components.interfaces[iface], true,
tagName(tag) + " does not QI to " + iface);
}
// Now see what classinfo reports
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var nodeClassInfo = node.QueryInterface(Components.interfaces.nsIClassInfo);
var count = {};
var classInfoInterfaces = nodeClassInfo.getInterfaces(count);
// Stringify them
for (var idx = 0; idx < classInfoInterfaces.length; ++idx) {
classInfoInterfaces[idx] =
Components.interfacesByID[classInfoInterfaces[idx]].toString();
}
// Make sure that we know about all the things classinfo claims
for each (var classInfoInterface in classInfoInterfaces) {
isnot(interfaces[tag].indexOf(classInfoInterface), -1,
"Should know about " + tagName(tag) + " implementing " +
classInfoInterface);
}
// And make sure classinfo claims all the things we know about
for each (iface in interfaces[tag]) {
isnot(classInfoInterfaces.indexOf(iface), -1,
"Classinfo for " + tagName(tag) + " should claim to implement " +
iface);
}
}
</script>
</pre>
</body>
</html>

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -80,7 +80,8 @@ public:
* receive the result.
* @return <b>NS_OK</b> if the interface is supported by the associated
* instance, <b>NS_NOINTERFACE</b> if it is not.
* <b>NS_ERROR_INVALID_POINTER</b> if <i>aInstancePtr</i> is <b>NULL</b>.
*
* aInstancePtr must not be null.
*/
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr) = 0;
/**

View File

@ -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
///////////////////////////////////////////////////////////////////////////////

View File

@ -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<char*>((_class*) 0x1000) \
},
#define NS_INTERFACE_TABLE_END \
#define NS_INTERFACE_TABLE_END_WITH_PTR(_ptr) \
{ nsnull, 0 } }; \
rv = NS_TableDrivenQI(static_cast<void*>(this), \
rv = NS_TableDrivenQI(static_cast<void*>(_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;
///////////////////////////////////////////////////////////////////////////////
/**
*