Bug 563659 part 5 - Move things from FragmentOrElement to nsGenericElement; r=bz

This commit is contained in:
Aryeh Gregor 2012-07-24 11:10:25 +03:00
parent df1115d2cb
commit 3881decf87
7 changed files with 97 additions and 60 deletions

View File

@ -189,6 +189,31 @@ public:
*/
virtual bool IsLabelable() const = 0;
/**
* Is the attribute named stored in the mapped attributes?
*
* // XXXbz we use this method in HasAttributeDependentStyle, so svg
* returns true here even though it stores nothing in the mapped
* attributes.
*/
NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const = 0;
/**
* Get a hint that tells the style system what to do when
* an attribute on this node changes, if something needs to happen
* in response to the change *other* than the result of what is
* mapped into style data via any type of style rule.
*/
virtual nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute,
PRInt32 aModType) const = 0;
/**
* Returns an atom holding the name of the "class" attribute on this
* content node (if applicable). Returns null if there is no
* "class" attribute for this type of content node.
*/
virtual nsIAtom *GetClassAttributeName() const = 0;
protected:
/**
* Method to get the _intrinsic_ content state of this element. This is the

View File

@ -4,8 +4,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
* Base class for all element classes; this provides an implementation
* of DOM Core's nsIDOMElement, implements nsIContent, provides
* Base class for all element classes as well as nsDocumentFragment. This
* provides an implementation of nsIDOMNode, implements nsIContent, provides
* utility methods for subclasses, and so forth.
*/
@ -250,9 +250,9 @@ public:
bool aNullParent = true);
#endif
virtual already_AddRefed<nsINodeList> GetChildren(PRUint32 aFilter);
#if 0
virtual nsIAtom *GetClassAttributeName() const;
virtual already_AddRefed<nsINodeInfo> GetExistingAttrNameFromQName(const nsAString& aStr) const;
#if 0
nsresult SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
const nsAString& aValue, bool aNotify)
{
@ -316,7 +316,9 @@ public:
virtual bool TextIsOnlyWhitespace();
virtual void AppendTextTo(nsAString& aResult);
virtual nsIContent *GetBindingParent() const;
#if 0
virtual bool IsNodeOfType(PRUint32 aFlags) const;
#endif
virtual bool IsLink(nsIURI** aURI) const;
virtual void DestroyContent();
@ -351,7 +353,6 @@ public:
virtual nsresult SetInlineStyleRule(mozilla::css::StyleRule* aStyleRule,
const nsAString* aSerialized,
bool aNotify);
#endif
NS_IMETHOD_(bool)
IsAttributeMapped(const nsIAtom* aAttribute) const;
virtual nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute,
@ -382,6 +383,7 @@ private:
FindAttributeDependence(const nsIAtom* aAttribute,
const MappedAttributeEntry* const aMaps[],
PRUint32 aMapCount);
#endif
public:
// nsIDOMNode method implementation
@ -432,6 +434,7 @@ public:
//----------------------------------------
#if 0
/**
* Add a script event listener with the given event handler name
* (like onclick) and with the value as JS
@ -447,6 +450,7 @@ public:
* Do whatever needs to be done when the mouse leaves a link
*/
nsresult LeaveLink(nsPresContext* aPresContext);
#endif
/**
* Check whether a spec feature/version is supported.
@ -461,7 +465,9 @@ public:
const nsAString& aVersion,
bool* aReturn);
#if 0
static bool ShouldBlur(nsIContent *aContent);
#endif
/**
* If there are listeners for DOMNodeInserted event, fires the event on all
@ -480,6 +486,7 @@ public:
const nsAString& aSelector,
nsIDOMNodeList **aReturn);
#if 0
/**
* Method to create and dispatch a left-click event loosely based on
* aSourceEvent. If aFullDispatch is true, the event will be dispatched
@ -556,7 +563,6 @@ public:
{
}
#if 0
PRInt32 GetScrollTop();
PRInt32 GetScrollLeft();
PRInt32 GetScrollHeight();
@ -599,9 +605,11 @@ public:
NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS(FragmentOrElement)
#if 0
virtual void NodeInfoChanged(nsINodeInfo* aOldNodeInfo)
{
}
#endif
/**
* Fire a DOMNodeRemoved mutation event for all children of this node
@ -639,6 +647,7 @@ public:
static void MarkUserDataHandler(void* aObject, nsIAtom* aKey, void* aChild,
void* aData);
#if 0
/**
* Parse a string into an nsAttrValue for a CORS attribute. This
* never fails. The resulting value is an enumerated value whose
@ -656,8 +665,10 @@ public:
* but if not should have been parsed via ParseCORSValue).
*/
static mozilla::CORSMode AttrValueToCORSMode(const nsAttrValue* aValue);
#endif
protected:
#if 0
/*
* Named-bools for use with SetAttrAndNotify to make call sites easier to
* read.
@ -691,7 +702,6 @@ protected:
* @param aNotify should we notify document-observers?
* @param aCallAfterSetAttr should we call AfterSetAttr?
*/
#if 0
nsresult SetAttrAndNotify(PRInt32 aNamespaceID,
nsIAtom* aName,
nsIAtom* aPrefix,
@ -735,7 +745,6 @@ protected:
nsIAtom* aName,
nsAttrValue& aValue,
nsresult* aRetval);
#endif
/**
* Hook that is called by FragmentOrElement::SetAttr to allow subclasses to
@ -786,6 +795,7 @@ protected:
*/
virtual nsEventListenerManager*
GetEventListenerManagerForAttr(nsIAtom* aAttrName, bool* aDefer);
#endif
/**
* Copy attributes and state to another element
@ -793,6 +803,7 @@ protected:
*/
nsresult CopyInnerTo(FragmentOrElement* aDest);
#if 0
/**
* Internal hook for converting an attribute name-string to an atomized name
*/
@ -805,7 +816,6 @@ protected:
* @param aRect offset rectangle
* @param aOffsetParent offset parent
*/
#if 0
virtual void GetOffsetRect(nsRect& aRect, nsIContent** aOffsetParent);
/**
@ -915,6 +925,7 @@ protected:
return static_cast<nsDOMSlots*>(GetExistingSlots());
}
#if 0
void RegisterFreezableElement() {
OwnerDoc()->RegisterFreezableElement(this);
}
@ -922,7 +933,6 @@ protected:
OwnerDoc()->UnregisterFreezableElement(this);
}
#if 0
/**
* Add/remove this element to the documents id cache
*/
@ -947,7 +957,6 @@ protected:
}
}
}
#endif
/**
* Functions to carry out event default actions for links of all types
@ -986,6 +995,7 @@ protected:
* (e.g. _blank).
*/
virtual void GetLinkTarget(nsAString& aTarget);
#endif
friend class ::ContentUnbinder;
/**
@ -1011,6 +1021,7 @@ protected:
} // namespace dom
} // namespace mozilla
#if 0
/**
* Macros to implement Clone(). _elementName is the class for which to implement
* Clone.
@ -1086,6 +1097,7 @@ _elementName::Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const \
{ \
return SetAttr(kNameSpaceID_None, nsGkAtoms::_atom, nullptr, aValue, true); \
}
#endif
/**
* Tearoff class to implement nsITouchEventReceiver

View File

@ -762,31 +762,6 @@ public:
*/
NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker) = 0;
/**
* Is the attribute named stored in the mapped attributes?
*
* // XXXbz we use this method in HasAttributeDependentStyle, so svg
* returns true here even though it stores nothing in the mapped
* attributes.
*/
NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const = 0;
/**
* Get a hint that tells the style system what to do when
* an attribute on this node changes, if something needs to happen
* in response to the change *other* than the result of what is
* mapped into style data via any type of style rule.
*/
virtual nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute,
PRInt32 aModType) const = 0;
/**
* Returns an atom holding the name of the "class" attribute on this
* content node (if applicable). Returns null if there is no
* "class" attribute for this type of content node.
*/
virtual nsIAtom *GetClassAttributeName() const = 0;
/**
* Should be called when the node can become editable or when it can stop
* being editable (for example when its contentEditable attribute changes,

View File

@ -2501,7 +2501,6 @@ FragmentOrElement::SetInlineStyleRule(css::StyleRule* aStyleRule,
NS_NOTYETIMPLEMENTED("FragmentOrElement::SetInlineStyleRule");
return NS_ERROR_NOT_IMPLEMENTED;
}
#endif
NS_IMETHODIMP_(bool)
FragmentOrElement::IsAttributeMapped(const nsIAtom* aAttribute) const
@ -2559,6 +2558,7 @@ FragmentOrElement::GetExistingAttrNameFromQName(const nsAString& aStr) const
return nodeInfo;
}
#endif
bool
FragmentOrElement::IsLink(nsIURI** aURI) const
@ -2567,6 +2567,7 @@ FragmentOrElement::IsLink(nsIURI** aURI) const
return false;
}
#if 0
// static
bool
FragmentOrElement::ShouldBlur(nsIContent *aContent)
@ -2591,6 +2592,7 @@ FragmentOrElement::ShouldBlur(nsIContent *aContent)
// content as well when blurring.
return (contentToBlur && nsFocusManager::GetRedirectedFocus(aContent) == contentToBlur);
}
#endif
nsIContent*
FragmentOrElement::GetBindingParent() const
@ -2603,11 +2605,13 @@ FragmentOrElement::GetBindingParent() const
return nullptr;
}
#if 0
bool
FragmentOrElement::IsNodeOfType(PRUint32 aFlags) const
{
return !(aFlags & ~eCONTENT);
}
#endif
nsresult
FragmentOrElement::InsertChildAt(nsIContent* aKid,
@ -2643,6 +2647,7 @@ FragmentOrElement::SetTextContent(const nsAString& aTextContent)
return nsContentUtils::SetNodeTextContent(this, aTextContent, false);
}
#if 0
/* static */
nsresult
FragmentOrElement::DispatchEvent(nsPresContext* aPresContext,
@ -2720,6 +2725,7 @@ FragmentOrElement::GetPrimaryFrame(mozFlushType aType)
return GetPrimaryFrame();
}
#endif
void
FragmentOrElement::DestroyContent()
@ -3519,6 +3525,7 @@ FragmentOrElement::PostQueryInterface(REFNSIID aIID, void** aInstancePtr)
}
//----------------------------------------------------------------------
#if 0
nsresult
FragmentOrElement::LeaveLink(nsPresContext* aPresContext)
{
@ -3564,6 +3571,7 @@ FragmentOrElement::InternalGetExistingAttrNameFromQName(const nsAString& aStr) c
{
return mAttrsAndChildren.GetExistingAttrNameFromQName(aStr);
}
#endif
nsresult
FragmentOrElement::CopyInnerTo(FragmentOrElement* aDst)
@ -3837,7 +3845,6 @@ FragmentOrElement::SetMappedAttribute(nsIDocument* aDocument,
*aRetval = NS_OK;
return false;
}
#endif
nsEventListenerManager*
FragmentOrElement::GetEventListenerManagerForAttr(nsIAtom* aAttrName,
@ -3847,7 +3854,6 @@ FragmentOrElement::GetEventListenerManagerForAttr(nsIAtom* aAttrName,
return GetListenerManager(true);
}
#if 0
FragmentOrElement::nsAttrInfo
FragmentOrElement::GetAttrInfo(PRInt32 aNamespaceID, nsIAtom* aName) const
{
@ -4282,6 +4288,7 @@ FragmentOrElement::CreateSlots()
return new nsDOMSlots();
}
#if 0
bool
FragmentOrElement::CheckHandleEventForLinksPrecondition(nsEventChainVisitor& aVisitor,
nsIURI** aURI) const
@ -4469,6 +4476,7 @@ FragmentOrElement::PostHandleEventForLinks(nsEventChainPostVisitor& aVisitor)
return rv;
}
#endif
void
FragmentOrElement::FireNodeRemovedForChildren()
@ -4490,11 +4498,13 @@ FragmentOrElement::FireNodeRemovedForChildren()
}
}
#if 0
void
FragmentOrElement::GetLinkTarget(nsAString& aTarget)
{
aTarget.Truncate();
}
#endif
// NOTE: The aPresContext pointer is NOT addrefed.
// *aSelectorList might be null even if NS_OK is returned; this
@ -4695,6 +4705,7 @@ FragmentOrElement::SizeOfExcludingThis(nsMallocSizeOfFun aMallocSizeOf) const
mAttrsAndChildren.SizeOfExcludingThis(aMallocSizeOf);
}
#if 0
static const nsAttrValue::EnumTable kCORSAttributeTable[] = {
// Order matters here
// See ParseCORSValue
@ -4737,7 +4748,6 @@ FragmentOrElement::AttrValueToCORSMode(const nsAttrValue* aValue)
return CORSMode(aValue->GetEnumValue());
}
#if 0
NS_IMETHODIMP
FragmentOrElement::GetOnmouseenter(JSContext* cx, JS::Value* vp)
{

View File

@ -9,6 +9,7 @@
#include "nsIDOMDocumentFragment.h"
#include "mozilla/dom/FragmentOrElement.h"
#include "nsGenericElement.h" // for DOMCI_NODE_DATA
#include "nsINameSpaceManager.h"
#include "nsINodeInfo.h"
#include "nsNodeInfoManager.h"
@ -41,6 +42,12 @@ public:
}
// nsIContent
virtual already_AddRefed<nsINodeInfo>
GetExistingAttrNameFromQName(const nsAString& aStr) const
{
return nullptr;
}
nsresult SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
const nsAString& aValue, bool aNotify)
{

View File

@ -2509,7 +2509,6 @@ nsGenericElement::SetInlineStyleRule(css::StyleRule* aStyleRule,
return NS_ERROR_NOT_IMPLEMENTED;
}
#if 0
NS_IMETHODIMP_(bool)
nsGenericElement::IsAttributeMapped(const nsIAtom* aAttribute) const
{
@ -2567,12 +2566,14 @@ nsGenericElement::GetExistingAttrNameFromQName(const nsAString& aStr) const
return nodeInfo;
}
#if 0
bool
nsGenericElement::IsLink(nsIURI** aURI) const
{
*aURI = nullptr;
return false;
}
#endif
// static
bool
@ -2599,6 +2600,7 @@ nsGenericElement::ShouldBlur(nsIContent *aContent)
return (contentToBlur && nsFocusManager::GetRedirectedFocus(aContent) == contentToBlur);
}
#if 0
nsIContent*
nsGenericElement::GetBindingParent() const
{
@ -2609,6 +2611,7 @@ nsGenericElement::GetBindingParent() const
}
return nullptr;
}
#endif
bool
nsGenericElement::IsNodeOfType(PRUint32 aFlags) const
@ -2616,6 +2619,7 @@ nsGenericElement::IsNodeOfType(PRUint32 aFlags) const
return !(aFlags & ~eCONTENT);
}
#if 0
nsresult
nsGenericElement::InsertChildAt(nsIContent* aKid,
PRUint32 aIndex,
@ -2649,6 +2653,7 @@ nsGenericElement::SetTextContent(const nsAString& aTextContent)
{
return nsContentUtils::SetNodeTextContent(this, aTextContent, false);
}
#endif
/* static */
nsresult
@ -2728,6 +2733,7 @@ nsGenericElement::GetPrimaryFrame(mozFlushType aType)
return GetPrimaryFrame();
}
#if 0
void
nsGenericElement::DestroyContent()
{
@ -3524,9 +3530,9 @@ nsGenericElement::PostQueryInterface(REFNSIID aIID, void** aInstancePtr)
return OwnerDoc()->BindingManager()->GetBindingImplementation(this, aIID,
aInstancePtr);
}
#endif
//----------------------------------------------------------------------
#if 0
nsresult
nsGenericElement::LeaveLink(nsPresContext* aPresContext)
{
@ -3563,7 +3569,6 @@ nsGenericElement::AddScriptEventListener(nsIAtom* aEventName,
defer, !nsContentUtils::IsChromeDoc(ownerDoc));
return NS_OK;
}
#endif
//----------------------------------------------------------------------
@ -3574,6 +3579,7 @@ nsGenericElement::InternalGetExistingAttrNameFromQName(const nsAString& aStr) co
return mAttrsAndChildren.GetExistingAttrNameFromQName(aStr);
}
#if 0
nsresult
nsGenericElement::CopyInnerTo(nsGenericElement* aDst)
{
@ -3847,7 +3853,6 @@ nsGenericElement::SetMappedAttribute(nsIDocument* aDocument,
return false;
}
#if 0
nsEventListenerManager*
nsGenericElement::GetEventListenerManagerForAttr(nsIAtom* aAttrName,
bool* aDefer)
@ -3855,7 +3860,6 @@ nsGenericElement::GetEventListenerManagerForAttr(nsIAtom* aAttrName,
*aDefer = true;
return GetListenerManager(true);
}
#endif
nsGenericElement::nsAttrInfo
nsGenericElement::GetAttrInfo(PRInt32 aNamespaceID, nsIAtom* aName) const
@ -4290,6 +4294,7 @@ nsGenericElement::CreateSlots()
{
return new nsDOMSlots();
}
#endif
bool
nsGenericElement::CheckHandleEventForLinksPrecondition(nsEventChainVisitor& aVisitor,
@ -4479,6 +4484,7 @@ nsGenericElement::PostHandleEventForLinks(nsEventChainPostVisitor& aVisitor)
return rv;
}
#if 0
void
nsGenericElement::FireNodeRemovedForChildren()
{
@ -4498,13 +4504,13 @@ nsGenericElement::FireNodeRemovedForChildren()
nsContentUtils::MaybeFireNodeRemoved(child, this, doc);
}
}
#endif
void
nsGenericElement::GetLinkTarget(nsAString& aTarget)
{
aTarget.Truncate();
}
#endif
// NOTE: The aPresContext pointer is NOT addrefed.
// *aSelectorList might be null even if NS_OK is returned; this
@ -4705,6 +4711,7 @@ nsGenericElement::SizeOfExcludingThis(nsMallocSizeOfFun aMallocSizeOf) const
return Element::SizeOfExcludingThis(aMallocSizeOf) +
mAttrsAndChildren.SizeOfExcludingThis(aMallocSizeOf);
}
#endif
static const nsAttrValue::EnumTable kCORSAttributeTable[] = {
// Order matters here
@ -4747,7 +4754,6 @@ nsGenericElement::AttrValueToCORSMode(const nsAttrValue* aValue)
return CORSMode(aValue->GetEnumValue());
}
#endif
NS_IMETHODIMP
nsGenericElement::GetOnmouseenter(JSContext* cx, JS::Value* vp)

View File

@ -251,9 +251,9 @@ public:
bool aNullParent = true);
#if 0
virtual already_AddRefed<nsINodeList> GetChildren(PRUint32 aFilter);
#endif
virtual nsIAtom *GetClassAttributeName() const;
virtual already_AddRefed<nsINodeInfo> GetExistingAttrNameFromQName(const nsAString& aStr) const;
#endif
nsresult SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName,
const nsAString& aValue, bool aNotify)
{
@ -317,7 +317,9 @@ public:
virtual bool TextIsOnlyWhitespace();
virtual void AppendTextTo(nsAString& aResult);
virtual nsIContent *GetBindingParent() const;
#endif
virtual bool IsNodeOfType(PRUint32 aFlags) const;
#if 0
virtual bool IsLink(nsIURI** aURI) const;
virtual void DestroyContent();
@ -352,7 +354,6 @@ public:
virtual nsresult SetInlineStyleRule(mozilla::css::StyleRule* aStyleRule,
const nsAString* aSerialized,
bool aNotify);
#if 0
NS_IMETHOD_(bool)
IsAttributeMapped(const nsIAtom* aAttribute) const;
virtual nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute,
@ -377,15 +378,12 @@ public:
{
return FindAttributeDependence(aAttribute, aMaps, N);
}
#endif
private:
#if 0
static bool
FindAttributeDependence(const nsIAtom* aAttribute,
const MappedAttributeEntry* const aMaps[],
PRUint32 aMapCount);
#endif
public:
#if 0
@ -434,6 +432,7 @@ public:
return nsNodeUtils::CloneNodeImpl(this, aDeep, true, aResult);
}
#endif
//----------------------------------------
@ -453,6 +452,7 @@ public:
*/
nsresult LeaveLink(nsPresContext* aPresContext);
#if 0
/**
* Check whether a spec feature/version is supported.
* @param aObject the object, which should support the feature,
@ -465,9 +465,11 @@ public:
const nsAString& aFeature,
const nsAString& aVersion,
bool* aReturn);
#endif
static bool ShouldBlur(nsIContent *aContent);
#if 0
/**
* If there are listeners for DOMNodeInserted event, fires the event on all
* aNodes
@ -484,6 +486,7 @@ public:
static nsresult doQuerySelectorAll(nsINode* aRoot,
const nsAString& aSelector,
nsIDOMNodeList **aReturn);
#endif
/**
* Method to create and dispatch a left-click event loosely based on
@ -560,7 +563,6 @@ public:
virtual void RecompileScriptEventListeners()
{
}
#endif
PRInt32 GetScrollTop();
PRInt32 GetScrollLeft();
@ -603,11 +605,13 @@ public:
#if 0
NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS(nsGenericElement)
#endif
virtual void NodeInfoChanged(nsINodeInfo* aOldNodeInfo)
{
}
#if 0
/**
* Fire a DOMNodeRemoved mutation event for all children of this node
*/
@ -643,6 +647,7 @@ public:
void *aData);
static void MarkUserDataHandler(void* aObject, nsIAtom* aKey, void* aChild,
void* aData);
#endif
/**
* Parse a string into an nsAttrValue for a CORS attribute. This
@ -661,10 +666,8 @@ public:
* but if not should have been parsed via ParseCORSValue).
*/
static mozilla::CORSMode AttrValueToCORSMode(const nsAttrValue* aValue);
#endif
protected:
#if 0
/*
* Named-bools for use with SetAttrAndNotify to make call sites easier to
* read.
@ -675,7 +678,6 @@ protected:
static const bool kDontNotifyDocumentObservers = false;
static const bool kCallAfterSetAttr = true;
static const bool kDontCallAfterSetAttr = false;
#endif
/**
* Set attribute and (if needed) notify documentobservers and fire off
@ -759,7 +761,6 @@ protected:
*/
// Note that this is inlined so that when subclasses call it it gets
// inlined. Those calls don't go through a vtable.
#if 0
virtual nsresult BeforeSetAttr(PRInt32 aNamespaceID, nsIAtom* aName,
const nsAttrValueOrString* aValue,
bool aNotify)
@ -794,17 +795,18 @@ protected:
virtual nsEventListenerManager*
GetEventListenerManagerForAttr(nsIAtom* aAttrName, bool* aDefer);
#if 0
/**
* Copy attributes and state to another element
* @param aDest the object to copy to
*/
nsresult CopyInnerTo(nsGenericElement* aDest);
#endif
/**
* Internal hook for converting an attribute name-string to an atomized name
*/
virtual const nsAttrName* InternalGetExistingAttrNameFromQName(const nsAString& aStr) const;
#endif
/**
* Retrieve the rectangle for the offsetX properties, which
@ -923,6 +925,7 @@ protected:
{
return static_cast<nsDOMSlots*>(GetExistingSlots());
}
#endif
void RegisterFreezableElement() {
OwnerDoc()->RegisterFreezableElement(this);
@ -931,7 +934,6 @@ protected:
OwnerDoc()->UnregisterFreezableElement(this);
}
#endif
/**
* Add/remove this element to the documents id cache
*/
@ -956,7 +958,6 @@ protected:
}
}
}
#if 0
/**
* Functions to carry out event default actions for links of all types
@ -996,6 +997,7 @@ protected:
*/
virtual void GetLinkTarget(nsAString& aTarget);
#if 0
friend class ContentUnbinder;
/**
* Array containing all attributes and children for this element
@ -1017,7 +1019,6 @@ private:
#endif
};
#if 0
/**
* Macros to implement Clone(). _elementName is the class for which to implement
* Clone.
@ -1094,6 +1095,7 @@ _elementName::Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const \
return SetAttr(kNameSpaceID_None, nsGkAtoms::_atom, nullptr, aValue, true); \
}
#if 0
/**
* Tearoff class to implement nsITouchEventReceiver
*/