Fix for bug 264309 (Consolidate CloneNode implementation macros). r/sr=jst

This commit is contained in:
peterv%propagandism.org 2004-10-15 14:42:14 +00:00
Родитель 35d7eaa9c1
Коммит f3ad153070
68 изменённых файлов: 117 добавлений и 252 удалений

Просмотреть файл

@ -896,4 +896,54 @@ public:
} \
NS_IMETHOD CloneNode(PRBool aDeep, nsIDOMNode** aReturn);
/**
* Macros to implement CloneNode().
*/
#define NS_IMPL_DOM_CLONENODE(_elementName) \
NS_IMPL_DOM_CLONENODE_AMBIGUOUS(_elementName, nsIDOMNode)
#define NS_IMPL_DOM_CLONENODE_AMBIGUOUS(_elementName, _implClass) \
NS_IMETHODIMP \
_elementName::CloneNode(PRBool aDeep, nsIDOMNode **aResult) \
{ \
*aResult = nsnull; \
\
_elementName *it = new _elementName(mNodeInfo); \
if (!it) { \
return NS_ERROR_OUT_OF_MEMORY; \
} \
\
nsCOMPtr<nsIDOMNode> kungFuDeathGrip = NS_STATIC_CAST(_implClass*, it); \
\
nsresult rv = CopyInnerTo(it, aDeep); \
if (NS_SUCCEEDED(rv)) { \
kungFuDeathGrip.swap(*aResult); \
} \
\
return rv; \
}
#define NS_IMPL_DOM_CLONENODE_WITH_INIT(_elementName) \
NS_IMETHODIMP \
_elementName::CloneNode(PRBool aDeep, nsIDOMNode **aResult) \
{ \
*aResult = nsnull; \
\
_elementName *it = new _elementName(mNodeInfo); \
if (!it) { \
return NS_ERROR_OUT_OF_MEMORY; \
} \
\
nsCOMPtr<nsIDOMNode> kungFuDeathGrip(it); \
\
nsresult rv = it->Init(); \
\
rv |= CopyInnerTo(it, aDeep); \
if (NS_SUCCEEDED(rv)) { \
kungFuDeathGrip.swap(*aResult); \
} \
\
return rv; \
}
#endif /* nsGenericElement_h___ */

Просмотреть файл

@ -80,22 +80,7 @@ nsXMLEventsElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName, nsIAtom* aPref
aNotify);
}
NS_IMETHODIMP
nsXMLEventsElement::CloneNode(PRBool aDeep, nsIDOMNode** aReturn)
{
*aReturn = nsnull;
nsXMLEventsElement* it = new nsXMLEventsElement(mNodeInfo);
if (!it) {
return NS_ERROR_OUT_OF_MEMORY;
}
nsCOMPtr<nsIDOMNode> kungFuDeathGrip(it);
CopyInnerTo(it, aDeep);
kungFuDeathGrip.swap(*aReturn);
return NS_OK;
}
NS_IMPL_DOM_CLONENODE(nsXMLEventsElement)
nsresult
NS_NewXMLEventsElement(nsIContent** aInstancePtrResult, nsINodeInfo *aNodeInfo)

Просмотреть файл

@ -987,30 +987,6 @@ NS_NewHTML##_elementName##Element(nsINodeInfo *aNodeInfo, PRBool aFromParser)\
return new nsHTML##_elementName##Element(aNodeInfo, aFromParser); \
}
/**
* A macro to implement the nsHTMLXXXElement::CloneNode().
*/
#define NS_IMPL_HTML_DOM_CLONENODE(_elementName) \
nsresult \
nsHTML##_elementName##Element::CloneNode(PRBool aDeep, nsIDOMNode** aReturn) \
{ \
*aReturn = nsnull; \
\
nsHTML##_elementName##Element* it = \
new nsHTML##_elementName##Element(mNodeInfo); \
if (!it) { \
return NS_ERROR_OUT_OF_MEMORY; \
} \
\
nsCOMPtr<nsIDOMNode> kungFuDeathGrip(it); \
\
CopyInnerTo(it, aDeep); \
\
kungFuDeathGrip.swap(*aReturn); \
\
return NS_OK; \
}
/**
* A macro to implement the getter and setter for a given string

Просмотреть файл

@ -153,7 +153,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLAnchorElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Anchor)
NS_IMPL_DOM_CLONENODE(nsHTMLAnchorElement)
NS_IMPL_STRING_ATTR(nsHTMLAnchorElement, Charset, charset)

Просмотреть файл

@ -130,7 +130,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLAppletElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Applet)
NS_IMPL_DOM_CLONENODE(nsHTMLAppletElement)
NS_IMPL_STRING_ATTR(nsHTMLAppletElement, Align, align)

Просмотреть файл

@ -134,7 +134,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLAreaElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Area)
NS_IMPL_DOM_CLONENODE(nsHTMLAreaElement)
NS_IMPL_STRING_ATTR(nsHTMLAreaElement, AccessKey, accesskey)

Просмотреть файл

@ -100,7 +100,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLBRElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(BR)
NS_IMPL_DOM_CLONENODE(nsHTMLBRElement)
NS_IMPL_STRING_ATTR(nsHTMLBRElement, Clear, clear)

Просмотреть файл

@ -319,7 +319,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLBodyElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Body)
NS_IMPL_DOM_CLONENODE(nsHTMLBodyElement)
NS_IMPL_URI_ATTR(nsHTMLBodyElement, Background, background)

Просмотреть файл

@ -155,7 +155,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_END
// nsIDOMHTMLButtonElement
NS_IMPL_HTML_DOM_CLONENODE(Button)
NS_IMPL_DOM_CLONENODE(nsHTMLButtonElement)
// nsIDOMHTMLButtonElement

Просмотреть файл

@ -92,7 +92,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLModElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Mod)
NS_IMPL_DOM_CLONENODE(nsHTMLModElement)
NS_IMPL_STRING_ATTR(nsHTMLModElement, Cite, cite)

Просмотреть файл

@ -104,7 +104,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLDivElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Div)
NS_IMPL_DOM_CLONENODE(nsHTMLDivElement)
NS_IMPL_STRING_ATTR(nsHTMLDivElement, Align, align)

Просмотреть файл

@ -107,7 +107,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_END
// nsIDOMHTMLFieldSetElement
NS_IMPL_HTML_DOM_CLONENODE(FieldSet)
NS_IMPL_DOM_CLONENODE(nsHTMLFieldSetElement)
// nsIDOMHTMLFieldSetElement

Просмотреть файл

@ -104,7 +104,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLFontElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Font)
NS_IMPL_DOM_CLONENODE(nsHTMLFontElement)
NS_IMPL_STRING_ATTR(nsHTMLFontElement, Color, color)

Просмотреть файл

@ -494,27 +494,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_END
// nsIDOMHTMLFormElement
nsresult
nsHTMLFormElement::CloneNode(PRBool aDeep, nsIDOMNode** aReturn)
{
*aReturn = nsnull;
nsHTMLFormElement* it = new nsHTMLFormElement(mNodeInfo);
if (!it) {
return NS_ERROR_OUT_OF_MEMORY;
}
nsCOMPtr<nsIDOMNode> kungFuDeathGrip(it);
nsresult rv = it->Init();
NS_ENSURE_SUCCESS(rv, rv);
CopyInnerTo(it, aDeep);
kungFuDeathGrip.swap(*aReturn);
return NS_OK;
}
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsHTMLFormElement)
NS_IMETHODIMP
nsHTMLFormElement::GetElements(nsIDOMHTMLCollection** aElements)

Просмотреть файл

@ -104,7 +104,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLFrameElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Frame)
NS_IMPL_DOM_CLONENODE(nsHTMLFrameElement)
NS_IMPL_STRING_ATTR(nsHTMLFrameElement, FrameBorder, frameborder)

Просмотреть файл

@ -159,7 +159,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLFrameSetElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(FrameSet)
NS_IMPL_DOM_CLONENODE(nsHTMLFrameSetElement)
NS_IMPL_STRING_ATTR(nsHTMLFrameSetElement, Cols, cols)

Просмотреть файл

@ -107,7 +107,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLHRElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(HR)
NS_IMPL_DOM_CLONENODE(nsHTMLHRElement)
NS_IMPL_STRING_ATTR(nsHTMLHRElement, Align, align)

Просмотреть файл

@ -91,7 +91,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLHeadElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Head)
NS_IMPL_DOM_CLONENODE(nsHTMLHeadElement)
NS_IMPL_URI_ATTR(nsHTMLHeadElement, Profile, profile)

Просмотреть файл

@ -101,7 +101,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLHeadingElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Heading)
NS_IMPL_DOM_CLONENODE(nsHTMLHeadingElement)
NS_IMPL_STRING_ATTR(nsHTMLHeadingElement, Align, align)

Просмотреть файл

@ -93,7 +93,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLHtmlElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Html)
NS_IMPL_DOM_CLONENODE(nsHTMLHtmlElement)
NS_IMPL_STRING_ATTR(nsHTMLHtmlElement, Version, version)

Просмотреть файл

@ -103,7 +103,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLIFrameElement, nsGenericHTMLFrameEleme
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(IFrame)
NS_IMPL_DOM_CLONENODE(nsHTMLIFrameElement)
NS_IMPL_STRING_ATTR(nsHTMLIFrameElement, Align, align)

Просмотреть файл

@ -205,7 +205,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLImageElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Image)
NS_IMPL_DOM_CLONENODE(nsHTMLImageElement)
NS_IMPL_STRING_ATTR(nsHTMLImageElement, Name, name)

Просмотреть файл

@ -101,7 +101,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLLIElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(LI)
NS_IMPL_DOM_CLONENODE(nsHTMLLIElement)
NS_IMPL_STRING_ATTR(nsHTMLLIElement, Type, type)

Просмотреть файл

@ -143,7 +143,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_END
// nsIDOMHTMLLabelElement
NS_IMPL_HTML_DOM_CLONENODE(Label)
NS_IMPL_DOM_CLONENODE(nsHTMLLabelElement)
NS_IMETHODIMP

Просмотреть файл

@ -115,7 +115,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_END
// nsIDOMHTMLLegendElement
NS_IMPL_HTML_DOM_CLONENODE(Legend)
NS_IMPL_DOM_CLONENODE(nsHTMLLegendElement)
NS_IMETHODIMP

Просмотреть файл

@ -148,7 +148,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLLinkElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Link)
NS_IMPL_DOM_CLONENODE(nsHTMLLinkElement)
NS_IMETHODIMP

Просмотреть файл

@ -132,7 +132,7 @@ nsHTMLMapElement::SetDocument(nsIDocument* aDocument, PRBool aDeep,
}
NS_IMPL_HTML_DOM_CLONENODE(Map)
NS_IMPL_DOM_CLONENODE(nsHTMLMapElement)
NS_IMETHODIMP

Просмотреть файл

@ -93,7 +93,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLMetaElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Meta)
NS_IMPL_DOM_CLONENODE(nsHTMLMetaElement)
NS_IMPL_STRING_ATTR(nsHTMLMetaElement, Content, content)

Просмотреть файл

@ -118,25 +118,8 @@ NS_HTML_CONTENT_INTERFACE_MAP_AMBIGOUS_BEGIN(nsHTMLSharedListElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
nsresult
nsHTMLSharedListElement::CloneNode(PRBool aDeep, nsIDOMNode** aReturn)
{
*aReturn = nsnull;
nsHTMLSharedListElement *it = new nsHTMLSharedListElement(mNodeInfo);
if (!it) {
return NS_ERROR_OUT_OF_MEMORY;
}
nsCOMPtr<nsIDOMNode> kungFuDeathGrip =
NS_STATIC_CAST(nsIDOMHTMLOListElement *, it);
CopyInnerTo(it, aDeep);
kungFuDeathGrip.swap(*aReturn);
return NS_OK;
}
NS_IMPL_DOM_CLONENODE_AMBIGUOUS(nsHTMLSharedListElement,
nsIDOMHTMLOListElement)
NS_IMPL_BOOL_ATTR(nsHTMLSharedListElement, Compact, compact)

Просмотреть файл

@ -139,7 +139,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_END
// nsIDOMHTMLObjectElement
NS_IMPL_HTML_DOM_CLONENODE(Object)
NS_IMPL_DOM_CLONENODE(nsHTMLObjectElement)
NS_IMETHODIMP

Просмотреть файл

@ -120,7 +120,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLOptGroupElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(OptGroup)
NS_IMPL_DOM_CLONENODE(nsHTMLOptGroupElement)
NS_IMPL_BOOL_ATTR(nsHTMLOptGroupElement, Disabled, disabled)

Просмотреть файл

@ -203,7 +203,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLOptionElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Option)
NS_IMPL_DOM_CLONENODE(nsHTMLOptionElement)
NS_IMETHODIMP

Просмотреть файл

@ -105,7 +105,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLParagraphElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Paragraph)
NS_IMPL_DOM_CLONENODE(nsHTMLParagraphElement)
NS_IMPL_STRING_ATTR(nsHTMLParagraphElement, Align, align)

Просмотреть файл

@ -103,7 +103,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLPreElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Pre)
NS_IMPL_DOM_CLONENODE(nsHTMLPreElement)
NS_IMPL_INT_ATTR(nsHTMLPreElement, Width, width)

Просмотреть файл

@ -473,7 +473,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_END
// nsIDOMHTMLSelectElement
NS_IMPL_HTML_DOM_CLONENODE(Select)
NS_IMPL_DOM_CLONENODE(nsHTMLSelectElement)
NS_IMETHODIMP

Просмотреть файл

@ -171,25 +171,8 @@ NS_HTML_CONTENT_INTERFACE_MAP_AMBIGOUS_BEGIN(nsHTMLSharedElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
nsresult
nsHTMLSharedElement::CloneNode(PRBool aDeep, nsIDOMNode** aReturn)
{
*aReturn = nsnull;
NS_IMPL_DOM_CLONENODE_AMBIGUOUS(nsHTMLSharedElement, nsIDOMHTMLEmbedElement)
nsHTMLSharedElement *it = new nsHTMLSharedElement(mNodeInfo);
if (!it) {
return NS_ERROR_OUT_OF_MEMORY;
}
nsCOMPtr<nsIDOMNode> kungFuDeathGrip =
NS_STATIC_CAST(nsIDOMHTMLEmbedElement *, it);
CopyInnerTo(it, aDeep);
kungFuDeathGrip.swap(*aReturn);
return NS_OK;
}
/////////////////////////////////////////////
// Implement nsIDOMHTMLEmbedElement interface

Просмотреть файл

@ -121,7 +121,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_END
// nsIDOMHTMLObjectElement
NS_IMPL_HTML_DOM_CLONENODE(Object)
NS_IMPL_DOM_CLONENODE(nsHTMLObjectElement)
NS_IMETHODIMP

Просмотреть файл

@ -92,7 +92,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLSpanElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Span)
NS_IMPL_DOM_CLONENODE(nsHTMLSpanElement)
static void
@ -166,4 +166,4 @@ nsHTMLUnknownElement::nsHTMLUnknownElement(nsINodeInfo *aNodeInfo)
NS_IMPL_NS_NEW_HTML_ELEMENT(Unknown)
NS_IMPL_HTML_DOM_CLONENODE(Unknown)
NS_IMPL_DOM_CLONENODE(nsHTMLUnknownElement)

Просмотреть файл

@ -132,7 +132,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLStyleElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Style)
NS_IMPL_DOM_CLONENODE(nsHTMLStyleElement)
NS_IMETHODIMP

Просмотреть файл

@ -102,7 +102,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTableCaptionElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(TableCaption)
NS_IMPL_DOM_CLONENODE(nsHTMLTableCaptionElement)
NS_IMPL_STRING_ATTR(nsHTMLTableCaptionElement, Align, align)

Просмотреть файл

@ -111,7 +111,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTableCellElement, nsGenericHTMLElement
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(TableCell)
NS_IMPL_DOM_CLONENODE(nsHTMLTableCellElement)
// protected method

Просмотреть файл

@ -106,7 +106,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTableColElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(TableCol)
NS_IMPL_DOM_CLONENODE(nsHTMLTableColElement)
NS_IMPL_STRING_ATTR_DEFAULT_VALUE(nsHTMLTableColElement, Align, align, "left")

Просмотреть файл

@ -336,7 +336,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTableElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Table)
NS_IMPL_DOM_CLONENODE(nsHTMLTableElement)
// the DOM spec says border, cellpadding, cellSpacing are all "wstring"

Просмотреть файл

@ -146,7 +146,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTableRowElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(TableRow)
NS_IMPL_DOM_CLONENODE(nsHTMLTableRowElement)
// protected method

Просмотреть файл

@ -114,7 +114,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTableSectionElement,
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(TableSection)
NS_IMPL_DOM_CLONENODE(nsHTMLTableSectionElement)
NS_IMPL_STRING_ATTR_DEFAULT_VALUE(nsHTMLTableSectionElement, Align, align, "left")

Просмотреть файл

@ -203,7 +203,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_END
// nsIDOMHTMLTextAreaElement
NS_IMPL_HTML_DOM_CLONENODE(TextArea)
NS_IMPL_DOM_CLONENODE(nsHTMLTextAreaElement)
NS_IMETHODIMP

Просмотреть файл

@ -94,7 +94,7 @@ NS_HTML_CONTENT_INTERFACE_MAP_BEGIN(nsHTMLTitleElement, nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_MAP_END
NS_IMPL_HTML_DOM_CLONENODE(Title)
NS_IMPL_DOM_CLONENODE(nsHTMLTitleElement)
NS_IMETHODIMP

Просмотреть файл

@ -158,7 +158,7 @@ nsSVGCircleElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Circle)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGCircleElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -105,7 +105,7 @@ nsSVGDefsElement::~nsSVGDefsElement()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Defs)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGDefsElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -697,51 +697,6 @@ nsSVGElement::SetAttrAndNotify(PRInt32 aNamespaceID, nsIAtom* aAttribute,
return NS_OK;
}
nsresult
nsSVGElement::CopyNode(nsSVGElement* aDest, PRBool aDeep)
{
nsresult rv;
// copy attributes:
PRUint32 i, count = mAttrsAndChildren.AttrCount();
for (i = 0; i < count; ++i) {
const nsAttrName* name = mAttrsAndChildren.GetSafeAttrNameAt(i);
const nsAttrValue* value = mAttrsAndChildren.AttrAt(i);
nsAutoString valStr;
value->ToString(valStr);
rv = aDest->SetAttr(name->NamespaceID(), name->LocalName(),
name->GetPrefix(), valStr, PR_FALSE);
NS_ENSURE_SUCCESS(rv, rv);
}
if (aDeep) {
// copy children:
PRInt32 count = mAttrsAndChildren.ChildCount();
for (PRInt32 i = 0; i < count; ++i) {
nsIContent* child = mAttrsAndChildren.ChildAt(i);
nsCOMPtr<nsIDOMNode> domchild = do_QueryInterface(child);
NS_ASSERTION(domchild != nsnull, "child is not a DOM node");
if (! domchild)
return NS_ERROR_UNEXPECTED;
nsCOMPtr<nsIDOMNode> newdomchild;
rv = domchild->CloneNode(PR_TRUE, getter_AddRefs(newdomchild));
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIContent> newchild = do_QueryInterface(newdomchild);
NS_ASSERTION(newchild != nsnull, "newdomchild is not an nsIContent");
if (!newchild)
return NS_ERROR_UNEXPECTED;
rv = aDest->AppendChildTo(newchild, PR_FALSE, PR_FALSE);
if (NS_FAILED(rv)) return rv;
}
}
return rv;
}
void
nsSVGElement::UpdateContentStyleRule()
{

Просмотреть файл

@ -146,7 +146,6 @@ protected:
PRBool aFireMutation,
PRBool aNotify);
nsresult CopyNode(nsSVGElement* dest, PRBool deep);
void UpdateContentStyleRule();
nsISVGValue* GetMappedAttribute(PRInt32 aNamespaceID, nsIAtom* aName);
nsresult AddMappedSVGValue(nsIAtom* aName, nsISupports* aValue,
@ -185,34 +184,5 @@ NS_NewSVG##_elementName##Element(nsIContent **aResult, \
return rv; \
}
/**
* A macro to implement the nsSVGXXXElement::CloneNode().
*/
#define NS_IMPL_SVG_DOM_CLONENODE(_elementName) \
NS_IMETHODIMP \
nsSVG##_elementName##Element::CloneNode(PRBool aDeep, nsIDOMNode** aReturn) \
{ \
*aReturn = nsnull; \
\
nsSVG##_elementName##Element* it = \
new nsSVG##_elementName##Element(mNodeInfo); \
if (!it) { \
return NS_ERROR_OUT_OF_MEMORY; \
} \
\
nsCOMPtr<nsIDOMNode> kungFuDeathGrip(it); \
\
nsresult rv = it->Init(); \
\
rv |= CopyNode(it, aDeep); \
NS_ASSERTION(NS_SUCCEEDED(rv), "Error copying SVG node!"); \
\
if (NS_SUCCEEDED(rv)) { \
kungFuDeathGrip.swap(*aReturn); \
} \
\
return rv; \
}
#endif // __NS_SVGELEMENT_H__

Просмотреть файл

@ -178,7 +178,7 @@ nsSVGEllipseElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Ellipse)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGEllipseElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -177,7 +177,7 @@ nsSVGForeignObjectElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(ForeignObject)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGForeignObjectElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -106,7 +106,7 @@ nsSVGGElement::~nsSVGGElement()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(G)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGGElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -364,7 +364,7 @@ nsSVGLinearGradientElement::Init()
//----------------------------------------------------------------------
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(LinearGradient)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGLinearGradientElement)
//----------------------------------------------------------------------
// nsIDOMSVGLinearGradientElement methods
@ -549,7 +549,7 @@ nsSVGRadialGradientElement::Init()
//----------------------------------------------------------------------
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(RadialGradient)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGRadialGradientElement)
//----------------------------------------------------------------------
// nsIDOMSVGRadialGradientElement methods

Просмотреть файл

@ -200,7 +200,7 @@ nsSVGImageElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Image)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGImageElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -176,7 +176,7 @@ nsSVGLineElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Line)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGLineElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -128,7 +128,7 @@ nsSVGPathElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Path)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGPathElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -126,7 +126,7 @@ nsSVGPolygonElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Polygon)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGPolygonElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -126,7 +126,7 @@ nsSVGPolylineElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Polyline)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGPolylineElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -205,7 +205,7 @@ nsSVGRectElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Rect)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGRectElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -265,7 +265,7 @@ nsSVGSVGElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(SVG)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGSVGElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -181,7 +181,7 @@ nsSVGScriptElement::Init()
//----------------------------------------------------------------------
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Script)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGScriptElement)
//----------------------------------------------------------------------
// nsIDOMSVGScriptElement methods

Просмотреть файл

@ -130,7 +130,7 @@ nsSVGStopElement::Init()
//----------------------------------------------------------------------
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Stop)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGStopElement)
//----------------------------------------------------------------------
// nsIDOMSVGStopElement methods

Просмотреть файл

@ -137,7 +137,7 @@ nsSVGStyleElement::~nsSVGStyleElement()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Style)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGStyleElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -160,7 +160,7 @@ nsSVGTSpanElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(TSpan)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGTSpanElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -167,7 +167,7 @@ nsSVGTextElement::Init()
// nsIDOMNode methods
NS_IMPL_SVG_DOM_CLONENODE(Text)
NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGTextElement)
//----------------------------------------------------------------------

Просмотреть файл

@ -435,24 +435,7 @@ nsXMLElement::IsFocusable(PRInt32 *aTabIndex)
}
NS_IMETHODIMP
nsXMLElement::CloneNode(PRBool aDeep, nsIDOMNode** aReturn)
{
*aReturn = nsnull;
nsXMLElement* it = new nsXMLElement(mNodeInfo);
if (!it) {
return NS_ERROR_OUT_OF_MEMORY;
}
nsCOMPtr<nsIDOMNode> kungFuDeathGrip(it);
CopyInnerTo(it, aDeep);
kungFuDeathGrip.swap(*aReturn);
return NS_OK;
}
NS_IMPL_DOM_CLONENODE(nsXMLElement)
// nsIStyledContent implementation