[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

darin at apple.com darin at apple.com
Wed Dec 22 12:47:06 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 3cbd5cb519f8caa7a7c916fdb171b82c552c02af
Author: darin at apple.com <darin at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Aug 30 06:51:56 2010 +0000

    2010-08-29  Darin Adler  <darin at apple.com>
    
            Reviewed by Maciej Stachowiak.
    
            Create SVG and WML elements with create functions instead of direct invocations of new
            https://bugs.webkit.org/show_bug.cgi?id=44851
    
            Added the create functions, made some existing constructors protected and private,
            made some other member functions protected and and private, added some missing virtual
            keywords for clarity to functions that already were overriding virtual functions,
            fixed some inconsistent indentation, and removed some unneeded empty destructors.
    
            In the future, it will be good to have the constructors all be private so we don't
            use them by accident. Then we'll change the reference count rule globally and add
            all the necessary calls to adoptRef.
    
            The SVG changes are compiled and tested. The WML changes are speculative and untested.
    
            * dom/make_names.pl: Removed supportfor the createWithNew keyword.
            * svg/svgtags.in: Removed all the createWithNew keywords.
            * wml/WMLTagNames.in: Ditto.
    
            * svg/SVGAElement.cpp:
            (WebCore::SVGAElement::create): Added.
            * svg/SVGAElement.h:
            * svg/SVGAltGlyphElement.cpp:
            (WebCore::SVGAltGlyphElement::create): Added.
            * svg/SVGAltGlyphElement.h:
            * svg/SVGAnimateColorElement.cpp:
            (WebCore::SVGAnimateColorElement::create): Added.
            * svg/SVGAnimateColorElement.h:
            * svg/SVGAnimateElement.cpp:
            (WebCore::SVGAnimateElement::create): Added.
            * svg/SVGAnimateElement.h:
            * svg/SVGAnimateMotionElement.cpp:
            (WebCore::SVGAnimateMotionElement::create): Added.
            * svg/SVGAnimateMotionElement.h:
            * svg/SVGAnimateTransformElement.cpp:
            (WebCore::SVGAnimateTransformElement::create): Added.
            * svg/SVGAnimateTransformElement.h:
            * svg/SVGCircleElement.cpp:
            (WebCore::SVGCircleElement::create): Added.
            * svg/SVGCircleElement.h:
            * svg/SVGClipPathElement.cpp:
            (WebCore::SVGClipPathElement::create): Added.
            * svg/SVGClipPathElement.h:
            * svg/SVGCursorElement.cpp:
            (WebCore::SVGCursorElement::create): Added.
            * svg/SVGCursorElement.h:
            * svg/SVGDefsElement.cpp:
            (WebCore::SVGDefsElement::create): Added.
            * svg/SVGDefsElement.h:
            * svg/SVGDescElement.cpp:
            (WebCore::SVGDescElement::create): Added.
            * svg/SVGDescElement.h:
            * svg/SVGEllipseElement.cpp:
            (WebCore::SVGEllipseElement::create): Added.
            * svg/SVGEllipseElement.h:
            * svg/SVGFEBlendElement.cpp:
            (WebCore::SVGFEBlendElement::create): Added.
            * svg/SVGFEBlendElement.h:
            * svg/SVGFEColorMatrixElement.cpp:
            (WebCore::SVGFEColorMatrixElement::create): Added.
            * svg/SVGFEColorMatrixElement.h:
            * svg/SVGFEComponentTransferElement.cpp:
            (WebCore::SVGFEComponentTransferElement::create): Added.
            * svg/SVGFEComponentTransferElement.h:
            * svg/SVGFECompositeElement.cpp:
            (WebCore::SVGFECompositeElement::create): Added.
            * svg/SVGFECompositeElement.h:
            * svg/SVGFEConvolveMatrixElement.cpp:
            (WebCore::SVGFEConvolveMatrixElement::create): Added.
            * svg/SVGFEConvolveMatrixElement.h:
            * svg/SVGFEDiffuseLightingElement.cpp:
            (WebCore::SVGFEDiffuseLightingElement::create): Added.
            * svg/SVGFEDiffuseLightingElement.h:
            * svg/SVGFEDisplacementMapElement.cpp:
            (WebCore::SVGFEDisplacementMapElement::create): Added.
            * svg/SVGFEDisplacementMapElement.h:
            * svg/SVGFEDistantLightElement.cpp:
            (WebCore::SVGFEDistantLightElement::create): Added.
            * svg/SVGFEDistantLightElement.h:
            * svg/SVGFEFloodElement.cpp:
            (WebCore::SVGFEFloodElement::create): Added.
            * svg/SVGFEFloodElement.h:
            * svg/SVGFEFuncAElement.cpp:
            (WebCore::SVGFEFuncAElement::create): Added.
            * svg/SVGFEFuncAElement.h:
            * svg/SVGFEFuncBElement.cpp:
            (WebCore::SVGFEFuncBElement::create): Added.
            * svg/SVGFEFuncBElement.h:
            * svg/SVGFEFuncGElement.cpp:
            (WebCore::SVGFEFuncGElement::create): Added.
            * svg/SVGFEFuncGElement.h:
            * svg/SVGFEFuncRElement.cpp:
            (WebCore::SVGFEFuncRElement::create): Added.
            * svg/SVGFEFuncRElement.h:
            * svg/SVGFEGaussianBlurElement.cpp:
            (WebCore::SVGFEGaussianBlurElement::create): Added.
            * svg/SVGFEGaussianBlurElement.h:
            * svg/SVGFEImageElement.cpp:
            (WebCore::SVGFEImageElement::create): Added.
            * svg/SVGFEImageElement.h:
            * svg/SVGFEMergeElement.cpp:
            (WebCore::SVGFEMergeElement::create): Added.
            * svg/SVGFEMergeElement.h:
            * svg/SVGFEMergeNodeElement.cpp:
            (WebCore::SVGFEMergeNodeElement::create): Added.
            * svg/SVGFEMergeNodeElement.h:
            * svg/SVGFEMorphologyElement.cpp:
            (WebCore::SVGFEMorphologyElement::create): Added.
            * svg/SVGFEMorphologyElement.h:
            * svg/SVGFEOffsetElement.cpp:
            (WebCore::SVGFEOffsetElement::create): Added.
            * svg/SVGFEOffsetElement.h:
            * svg/SVGFEPointLightElement.cpp:
            (WebCore::SVGFEPointLightElement::create): Added.
            * svg/SVGFEPointLightElement.h:
            * svg/SVGFESpecularLightingElement.cpp:
            (WebCore::SVGFESpecularLightingElement::create): Added.
            * svg/SVGFESpecularLightingElement.h:
            * svg/SVGFESpotLightElement.cpp:
            (WebCore::SVGFESpotLightElement::create): Added.
            * svg/SVGFESpotLightElement.h:
            * svg/SVGFETileElement.cpp:
            (WebCore::SVGFETileElement::create): Added.
            * svg/SVGFETileElement.h:
            * svg/SVGFETurbulenceElement.cpp:
            (WebCore::SVGFETurbulenceElement::create): Added.
            * svg/SVGFETurbulenceElement.h:
            * svg/SVGFilterElement.cpp:
            (WebCore::SVGFilterElement::create): Added.
            * svg/SVGFilterElement.h:
            * svg/SVGFontElement.cpp:
            (WebCore::SVGFontElement::create): Added.
            * svg/SVGFontElement.h:
            * svg/SVGFontFaceElement.cpp:
            (WebCore::SVGFontFaceElement::create): Added.
            * svg/SVGFontFaceElement.h:
            * svg/SVGFontFaceFormatElement.cpp:
            (WebCore::SVGFontFaceFormatElement::create): Added.
            * svg/SVGFontFaceFormatElement.h:
            * svg/SVGFontFaceNameElement.cpp:
            (WebCore::SVGFontFaceNameElement::create): Added.
            * svg/SVGFontFaceNameElement.h:
            * svg/SVGFontFaceSrcElement.cpp:
            (WebCore::SVGFontFaceSrcElement::create): Added.
            * svg/SVGFontFaceSrcElement.h:
            * svg/SVGFontFaceUriElement.cpp:
            (WebCore::SVGFontFaceUriElement::create): Added.
            * svg/SVGFontFaceUriElement.h:
            * svg/SVGForeignObjectElement.cpp:
            (WebCore::SVGForeignObjectElement::create): Added.
            * svg/SVGForeignObjectElement.h:
            * svg/SVGGElement.cpp:
            (WebCore::SVGGElement::create): Added.
            * svg/SVGGElement.h:
            * svg/SVGGlyphElement.cpp:
            (WebCore::SVGGlyphElement::create): Added.
            * svg/SVGGlyphElement.h:
            * svg/SVGHKernElement.cpp:
            (WebCore::SVGHKernElement::create): Added.
            * svg/SVGHKernElement.h:
            * svg/SVGImageElement.cpp:
            (WebCore::SVGImageElement::create): Added.
            * svg/SVGImageElement.h:
            * svg/SVGLineElement.cpp:
            (WebCore::SVGLineElement::create): Added.
            * svg/SVGLineElement.h:
            * svg/SVGLinearGradientElement.cpp:
            (WebCore::SVGLinearGradientElement::create): Added.
            * svg/SVGLinearGradientElement.h:
            * svg/SVGMPathElement.cpp:
            (WebCore::SVGMPathElement::create): Added.
            * svg/SVGMPathElement.h:
            * svg/SVGMarkerElement.cpp:
            (WebCore::SVGMarkerElement::create): Added.
            * svg/SVGMarkerElement.h:
            * svg/SVGMaskElement.cpp:
            (WebCore::SVGMaskElement::create): Added.
            * svg/SVGMaskElement.h:
            * svg/SVGMetadataElement.cpp:
            (SVGMetadataElement::create): Added.
            * svg/SVGMetadataElement.h:
            * svg/SVGMissingGlyphElement.cpp:
            (WebCore::SVGMissingGlyphElement::create): Added.
            * svg/SVGMissingGlyphElement.h:
            * svg/SVGPathElement.cpp:
            (WebCore::SVGPathElement::create): Added.
            * svg/SVGPathElement.h:
            * svg/SVGPatternElement.cpp:
            (WebCore::SVGPatternElement::create): Added.
            * svg/SVGPatternElement.h:
            * svg/SVGPolygonElement.cpp:
            (WebCore::SVGPolygonElement::create): Added.
            * svg/SVGPolygonElement.h:
            * svg/SVGPolylineElement.cpp:
            (WebCore::SVGPolylineElement::create): Added.
            * svg/SVGPolylineElement.h:
            * svg/SVGRadialGradientElement.cpp:
            (WebCore::SVGRadialGradientElement::create): Added.
            * svg/SVGRadialGradientElement.h:
            * svg/SVGRectElement.cpp:
            (WebCore::SVGRectElement::create): Added.
            * svg/SVGRectElement.h:
            * svg/SVGSVGElement.cpp:
            (WebCore::SVGSVGElement::create): Added.
            * svg/SVGSVGElement.h:
            * svg/SVGScriptElement.cpp:
            (WebCore::SVGScriptElement::create): Added.
            * svg/SVGScriptElement.h:
            * svg/SVGSetElement.cpp:
            (WebCore::SVGSetElement::create): Added.
            * svg/SVGSetElement.h:
            * svg/SVGStopElement.cpp:
            (WebCore::SVGStopElement::create): Added.
            * svg/SVGStopElement.h:
            (WebCore::SVGStyleElement::create): Added.
            * svg/SVGStyleElement.h:
            * svg/SVGSwitchElement.cpp:
            (WebCore::SVGSwitchElement::create): Added.
            * svg/SVGSwitchElement.h:
            * svg/SVGSymbolElement.cpp:
            (WebCore::SVGSymbolElement::create): Added.
            * svg/SVGSymbolElement.h:
            * svg/SVGTRefElement.cpp:
            (WebCore::SVGTRefElement::create): Added.
            * svg/SVGTRefElement.h:
            * svg/SVGTSpanElement.cpp:
            (WebCore::SVGTSpanElement::create): Added.
            * svg/SVGTSpanElement.h:
            * svg/SVGTextContentElement.h:
            * svg/SVGTextElement.cpp:
            (WebCore::SVGTextElement::create): Added.
            * svg/SVGTextElement.h:
            * svg/SVGTextPathElement.cpp:
            (WebCore::SVGTextPathElement::create): Added.
            * svg/SVGTextPathElement.h:
            * svg/SVGTextPositioningElement.h:
            * svg/SVGTitleElement.cpp:
            (WebCore::SVGTitleElement::create): Added.
            * svg/SVGTitleElement.h:
            * svg/SVGUseElement.cpp:
            (WebCore::SVGUseElement::create): Added.
            * svg/SVGUseElement.h:
            * svg/SVGVKernElement.cpp:
            (WebCore::SVGVKernElement::create): Added.
            * svg/SVGVKernElement.h:
            * svg/SVGViewElement.cpp:
            (WebCore::SVGViewElement::create): Added.
            * svg/SVGViewElement.h:
            * wml/WMLAElement.cpp:
            (WebCore::WMLAElement::create): Added.
            * wml/WMLAElement.h:
            * wml/WMLAccessElement.cpp:
            (WebCore::WMLAccessElement::create): Added.
            * wml/WMLAccessElement.h:
            * wml/WMLAnchorElement.cpp:
            (WebCore::WMLAnchorElement::create): Added.
            * wml/WMLAnchorElement.h:
            * wml/WMLBRElement.cpp:
            (WebCore::WMLBRElement::create): Added.
            * wml/WMLBRElement.h:
            * wml/WMLCardElement.cpp:
            (WebCore::WMLCardElement::create): Added.
            * wml/WMLCardElement.h:
            * wml/WMLDoElement.cpp:
            (WebCore::WMLDoElement::create): Added.
            * wml/WMLDoElement.h:
            * wml/WMLFieldSetElement.cpp:
            (WebCore::WMLFieldSetElement::create): Added.
            * wml/WMLFieldSetElement.h:
            * wml/WMLFormControlElement.cpp:
            (WebCore::WMLFormControlElement::create): Added.
            * wml/WMLGoElement.cpp:
            (WebCore::WMLGoElement::create): Added.
            * wml/WMLGoElement.h:
            * wml/WMLImageElement.cpp:
            (WebCore::WMLImageElement::create): Added.
            * wml/WMLImageElement.h:
            * wml/WMLInputElement.cpp:
            (WebCore::WMLInputElement::create): Added.
            * wml/WMLInputElement.h:
            * wml/WMLInsertedLegendElement.cpp:
            (WebCore::WMLInsertedLegendElement::create): Added.
            * wml/WMLInsertedLegendElement.h:
            * wml/WMLIntrinsicEvent.cpp:
            (WebCore::WMLIntrinsicEvent::create): Added.
            * wml/WMLMetaElement.cpp:
            (WebCore::WMLMetaElement::create): Added.
            * wml/WMLMetaElement.h:
            * wml/WMLNoopElement.cpp:
            (WebCore::WMLNoopElement::create): Added.
            * wml/WMLNoopElement.h:
            * wml/WMLOnEventElement.cpp:
            (WebCore::WMLOnEventElement::create): Added.
            * wml/WMLOnEventElement.h:
            * wml/WMLOptGroupElement.cpp:
            (WebCore::WMLOptGroupElement::create): Added.
            * wml/WMLOptGroupElement.h:
            * wml/WMLOptionElement.cpp:
            (WebCore::WMLOptionElement::create): Added.
            * wml/WMLOptionElement.h:
            * wml/WMLPElement.cpp:
            (WebCore::WMLPElement::create): Added.
            * wml/WMLPElement.h:
            * wml/WMLPostfieldElement.cpp:
            (WebCore::WMLPostfieldElement::create): Added.
            * wml/WMLPostfieldElement.h:
            * wml/WMLPrevElement.cpp:
            (WebCore::WMLPrevElement::create): Added.
            * wml/WMLPrevElement.h:
            * wml/WMLRefreshElement.cpp:
            (WebCore::WMLRefreshElement::create): Added.
            * wml/WMLRefreshElement.h:
            * wml/WMLSelectElement.cpp:
            (WebCore::WMLSelectElement::create): Added.
            * wml/WMLSelectElement.h:
            * wml/WMLSetvarElement.cpp:
            (WebCore::WMLSetvarElement::create): Added.
            * wml/WMLSetvarElement.h:
            * wml/WMLTableElement.cpp:
            (WebCore::WMLTableElement::create): Added.
            * wml/WMLTableElement.h:
            * wml/WMLTaskElement.cpp:
            (WebCore::WMLTaskElement::create): Added.
            * wml/WMLTaskElement.h:
            * wml/WMLTemplateElement.cpp:
            (WebCore::WMLTemplateElement::create): Added.
            * wml/WMLTemplateElement.h:
            * wml/WMLTimerElement.cpp:
            (WebCore::WMLTimerElement::create): Added.
            * wml/WMLTimerElement.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@66362 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index f816237..1b4fe02 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,337 @@
+2010-08-29  Darin Adler  <darin at apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        Create SVG and WML elements with create functions instead of direct invocations of new
+        https://bugs.webkit.org/show_bug.cgi?id=44851
+
+        Added the create functions, made some existing constructors protected and private,
+        made some other member functions protected and and private, added some missing virtual
+        keywords for clarity to functions that already were overriding virtual functions,
+        fixed some inconsistent indentation, and removed some unneeded empty destructors.
+
+        In the future, it will be good to have the constructors all be private so we don't
+        use them by accident. Then we'll change the reference count rule globally and add
+        all the necessary calls to adoptRef.
+
+        The SVG changes are compiled and tested. The WML changes are speculative and untested.
+
+        * dom/make_names.pl: Removed supportfor the createWithNew keyword.
+        * svg/svgtags.in: Removed all the createWithNew keywords.
+        * wml/WMLTagNames.in: Ditto.
+
+        * svg/SVGAElement.cpp:
+        (WebCore::SVGAElement::create): Added.
+        * svg/SVGAElement.h:
+        * svg/SVGAltGlyphElement.cpp:
+        (WebCore::SVGAltGlyphElement::create): Added.
+        * svg/SVGAltGlyphElement.h:
+        * svg/SVGAnimateColorElement.cpp:
+        (WebCore::SVGAnimateColorElement::create): Added.
+        * svg/SVGAnimateColorElement.h:
+        * svg/SVGAnimateElement.cpp:
+        (WebCore::SVGAnimateElement::create): Added.
+        * svg/SVGAnimateElement.h:
+        * svg/SVGAnimateMotionElement.cpp:
+        (WebCore::SVGAnimateMotionElement::create): Added.
+        * svg/SVGAnimateMotionElement.h:
+        * svg/SVGAnimateTransformElement.cpp:
+        (WebCore::SVGAnimateTransformElement::create): Added.
+        * svg/SVGAnimateTransformElement.h:
+        * svg/SVGCircleElement.cpp:
+        (WebCore::SVGCircleElement::create): Added.
+        * svg/SVGCircleElement.h:
+        * svg/SVGClipPathElement.cpp:
+        (WebCore::SVGClipPathElement::create): Added.
+        * svg/SVGClipPathElement.h:
+        * svg/SVGCursorElement.cpp:
+        (WebCore::SVGCursorElement::create): Added.
+        * svg/SVGCursorElement.h:
+        * svg/SVGDefsElement.cpp:
+        (WebCore::SVGDefsElement::create): Added.
+        * svg/SVGDefsElement.h:
+        * svg/SVGDescElement.cpp:
+        (WebCore::SVGDescElement::create): Added.
+        * svg/SVGDescElement.h:
+        * svg/SVGEllipseElement.cpp:
+        (WebCore::SVGEllipseElement::create): Added.
+        * svg/SVGEllipseElement.h:
+        * svg/SVGFEBlendElement.cpp:
+        (WebCore::SVGFEBlendElement::create): Added.
+        * svg/SVGFEBlendElement.h:
+        * svg/SVGFEColorMatrixElement.cpp:
+        (WebCore::SVGFEColorMatrixElement::create): Added.
+        * svg/SVGFEColorMatrixElement.h:
+        * svg/SVGFEComponentTransferElement.cpp:
+        (WebCore::SVGFEComponentTransferElement::create): Added.
+        * svg/SVGFEComponentTransferElement.h:
+        * svg/SVGFECompositeElement.cpp:
+        (WebCore::SVGFECompositeElement::create): Added.
+        * svg/SVGFECompositeElement.h:
+        * svg/SVGFEConvolveMatrixElement.cpp:
+        (WebCore::SVGFEConvolveMatrixElement::create): Added.
+        * svg/SVGFEConvolveMatrixElement.h:
+        * svg/SVGFEDiffuseLightingElement.cpp:
+        (WebCore::SVGFEDiffuseLightingElement::create): Added.
+        * svg/SVGFEDiffuseLightingElement.h:
+        * svg/SVGFEDisplacementMapElement.cpp:
+        (WebCore::SVGFEDisplacementMapElement::create): Added.
+        * svg/SVGFEDisplacementMapElement.h:
+        * svg/SVGFEDistantLightElement.cpp:
+        (WebCore::SVGFEDistantLightElement::create): Added.
+        * svg/SVGFEDistantLightElement.h:
+        * svg/SVGFEFloodElement.cpp:
+        (WebCore::SVGFEFloodElement::create): Added.
+        * svg/SVGFEFloodElement.h:
+        * svg/SVGFEFuncAElement.cpp:
+        (WebCore::SVGFEFuncAElement::create): Added.
+        * svg/SVGFEFuncAElement.h:
+        * svg/SVGFEFuncBElement.cpp:
+        (WebCore::SVGFEFuncBElement::create): Added.
+        * svg/SVGFEFuncBElement.h:
+        * svg/SVGFEFuncGElement.cpp:
+        (WebCore::SVGFEFuncGElement::create): Added.
+        * svg/SVGFEFuncGElement.h:
+        * svg/SVGFEFuncRElement.cpp:
+        (WebCore::SVGFEFuncRElement::create): Added.
+        * svg/SVGFEFuncRElement.h:
+        * svg/SVGFEGaussianBlurElement.cpp:
+        (WebCore::SVGFEGaussianBlurElement::create): Added.
+        * svg/SVGFEGaussianBlurElement.h:
+        * svg/SVGFEImageElement.cpp:
+        (WebCore::SVGFEImageElement::create): Added.
+        * svg/SVGFEImageElement.h:
+        * svg/SVGFEMergeElement.cpp:
+        (WebCore::SVGFEMergeElement::create): Added.
+        * svg/SVGFEMergeElement.h:
+        * svg/SVGFEMergeNodeElement.cpp:
+        (WebCore::SVGFEMergeNodeElement::create): Added.
+        * svg/SVGFEMergeNodeElement.h:
+        * svg/SVGFEMorphologyElement.cpp:
+        (WebCore::SVGFEMorphologyElement::create): Added.
+        * svg/SVGFEMorphologyElement.h:
+        * svg/SVGFEOffsetElement.cpp:
+        (WebCore::SVGFEOffsetElement::create): Added.
+        * svg/SVGFEOffsetElement.h:
+        * svg/SVGFEPointLightElement.cpp:
+        (WebCore::SVGFEPointLightElement::create): Added.
+        * svg/SVGFEPointLightElement.h:
+        * svg/SVGFESpecularLightingElement.cpp:
+        (WebCore::SVGFESpecularLightingElement::create): Added.
+        * svg/SVGFESpecularLightingElement.h:
+        * svg/SVGFESpotLightElement.cpp:
+        (WebCore::SVGFESpotLightElement::create): Added.
+        * svg/SVGFESpotLightElement.h:
+        * svg/SVGFETileElement.cpp:
+        (WebCore::SVGFETileElement::create): Added.
+        * svg/SVGFETileElement.h:
+        * svg/SVGFETurbulenceElement.cpp:
+        (WebCore::SVGFETurbulenceElement::create): Added.
+        * svg/SVGFETurbulenceElement.h:
+        * svg/SVGFilterElement.cpp:
+        (WebCore::SVGFilterElement::create): Added.
+        * svg/SVGFilterElement.h:
+        * svg/SVGFontElement.cpp:
+        (WebCore::SVGFontElement::create): Added.
+        * svg/SVGFontElement.h:
+        * svg/SVGFontFaceElement.cpp:
+        (WebCore::SVGFontFaceElement::create): Added.
+        * svg/SVGFontFaceElement.h:
+        * svg/SVGFontFaceFormatElement.cpp:
+        (WebCore::SVGFontFaceFormatElement::create): Added.
+        * svg/SVGFontFaceFormatElement.h:
+        * svg/SVGFontFaceNameElement.cpp:
+        (WebCore::SVGFontFaceNameElement::create): Added.
+        * svg/SVGFontFaceNameElement.h:
+        * svg/SVGFontFaceSrcElement.cpp:
+        (WebCore::SVGFontFaceSrcElement::create): Added.
+        * svg/SVGFontFaceSrcElement.h:
+        * svg/SVGFontFaceUriElement.cpp:
+        (WebCore::SVGFontFaceUriElement::create): Added.
+        * svg/SVGFontFaceUriElement.h:
+        * svg/SVGForeignObjectElement.cpp:
+        (WebCore::SVGForeignObjectElement::create): Added.
+        * svg/SVGForeignObjectElement.h:
+        * svg/SVGGElement.cpp:
+        (WebCore::SVGGElement::create): Added.
+        * svg/SVGGElement.h:
+        * svg/SVGGlyphElement.cpp:
+        (WebCore::SVGGlyphElement::create): Added.
+        * svg/SVGGlyphElement.h:
+        * svg/SVGHKernElement.cpp:
+        (WebCore::SVGHKernElement::create): Added.
+        * svg/SVGHKernElement.h:
+        * svg/SVGImageElement.cpp:
+        (WebCore::SVGImageElement::create): Added.
+        * svg/SVGImageElement.h:
+        * svg/SVGLineElement.cpp:
+        (WebCore::SVGLineElement::create): Added.
+        * svg/SVGLineElement.h:
+        * svg/SVGLinearGradientElement.cpp:
+        (WebCore::SVGLinearGradientElement::create): Added.
+        * svg/SVGLinearGradientElement.h:
+        * svg/SVGMPathElement.cpp:
+        (WebCore::SVGMPathElement::create): Added.
+        * svg/SVGMPathElement.h:
+        * svg/SVGMarkerElement.cpp:
+        (WebCore::SVGMarkerElement::create): Added.
+        * svg/SVGMarkerElement.h:
+        * svg/SVGMaskElement.cpp:
+        (WebCore::SVGMaskElement::create): Added.
+        * svg/SVGMaskElement.h:
+        * svg/SVGMetadataElement.cpp:
+        (SVGMetadataElement::create): Added.
+        * svg/SVGMetadataElement.h:
+        * svg/SVGMissingGlyphElement.cpp:
+        (WebCore::SVGMissingGlyphElement::create): Added.
+        * svg/SVGMissingGlyphElement.h:
+        * svg/SVGPathElement.cpp:
+        (WebCore::SVGPathElement::create): Added.
+        * svg/SVGPathElement.h:
+        * svg/SVGPatternElement.cpp:
+        (WebCore::SVGPatternElement::create): Added.
+        * svg/SVGPatternElement.h:
+        * svg/SVGPolygonElement.cpp:
+        (WebCore::SVGPolygonElement::create): Added.
+        * svg/SVGPolygonElement.h:
+        * svg/SVGPolylineElement.cpp:
+        (WebCore::SVGPolylineElement::create): Added.
+        * svg/SVGPolylineElement.h:
+        * svg/SVGRadialGradientElement.cpp:
+        (WebCore::SVGRadialGradientElement::create): Added.
+        * svg/SVGRadialGradientElement.h:
+        * svg/SVGRectElement.cpp:
+        (WebCore::SVGRectElement::create): Added.
+        * svg/SVGRectElement.h:
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::create): Added.
+        * svg/SVGSVGElement.h:
+        * svg/SVGScriptElement.cpp:
+        (WebCore::SVGScriptElement::create): Added.
+        * svg/SVGScriptElement.h:
+        * svg/SVGSetElement.cpp:
+        (WebCore::SVGSetElement::create): Added.
+        * svg/SVGSetElement.h:
+        * svg/SVGStopElement.cpp:
+        (WebCore::SVGStopElement::create): Added.
+        * svg/SVGStopElement.h:
+        (WebCore::SVGStyleElement::create): Added.
+        * svg/SVGStyleElement.h:
+        * svg/SVGSwitchElement.cpp:
+        (WebCore::SVGSwitchElement::create): Added.
+        * svg/SVGSwitchElement.h:
+        * svg/SVGSymbolElement.cpp:
+        (WebCore::SVGSymbolElement::create): Added.
+        * svg/SVGSymbolElement.h:
+        * svg/SVGTRefElement.cpp:
+        (WebCore::SVGTRefElement::create): Added.
+        * svg/SVGTRefElement.h:
+        * svg/SVGTSpanElement.cpp:
+        (WebCore::SVGTSpanElement::create): Added.
+        * svg/SVGTSpanElement.h:
+        * svg/SVGTextContentElement.h:
+        * svg/SVGTextElement.cpp:
+        (WebCore::SVGTextElement::create): Added.
+        * svg/SVGTextElement.h:
+        * svg/SVGTextPathElement.cpp:
+        (WebCore::SVGTextPathElement::create): Added.
+        * svg/SVGTextPathElement.h:
+        * svg/SVGTextPositioningElement.h:
+        * svg/SVGTitleElement.cpp:
+        (WebCore::SVGTitleElement::create): Added.
+        * svg/SVGTitleElement.h:
+        * svg/SVGUseElement.cpp:
+        (WebCore::SVGUseElement::create): Added.
+        * svg/SVGUseElement.h:
+        * svg/SVGVKernElement.cpp:
+        (WebCore::SVGVKernElement::create): Added.
+        * svg/SVGVKernElement.h:
+        * svg/SVGViewElement.cpp:
+        (WebCore::SVGViewElement::create): Added.
+        * svg/SVGViewElement.h:
+        * wml/WMLAElement.cpp:
+        (WebCore::WMLAElement::create): Added.
+        * wml/WMLAElement.h:
+        * wml/WMLAccessElement.cpp:
+        (WebCore::WMLAccessElement::create): Added.
+        * wml/WMLAccessElement.h:
+        * wml/WMLAnchorElement.cpp:
+        (WebCore::WMLAnchorElement::create): Added.
+        * wml/WMLAnchorElement.h:
+        * wml/WMLBRElement.cpp:
+        (WebCore::WMLBRElement::create): Added.
+        * wml/WMLBRElement.h:
+        * wml/WMLCardElement.cpp:
+        (WebCore::WMLCardElement::create): Added.
+        * wml/WMLCardElement.h:
+        * wml/WMLDoElement.cpp:
+        (WebCore::WMLDoElement::create): Added.
+        * wml/WMLDoElement.h:
+        * wml/WMLFieldSetElement.cpp:
+        (WebCore::WMLFieldSetElement::create): Added.
+        * wml/WMLFieldSetElement.h:
+        * wml/WMLFormControlElement.cpp:
+        (WebCore::WMLFormControlElement::create): Added.
+        * wml/WMLGoElement.cpp:
+        (WebCore::WMLGoElement::create): Added.
+        * wml/WMLGoElement.h:
+        * wml/WMLImageElement.cpp:
+        (WebCore::WMLImageElement::create): Added.
+        * wml/WMLImageElement.h:
+        * wml/WMLInputElement.cpp:
+        (WebCore::WMLInputElement::create): Added.
+        * wml/WMLInputElement.h:
+        * wml/WMLInsertedLegendElement.cpp:
+        (WebCore::WMLInsertedLegendElement::create): Added.
+        * wml/WMLInsertedLegendElement.h:
+        * wml/WMLIntrinsicEvent.cpp:
+        (WebCore::WMLIntrinsicEvent::create): Added.
+        * wml/WMLMetaElement.cpp:
+        (WebCore::WMLMetaElement::create): Added.
+        * wml/WMLMetaElement.h:
+        * wml/WMLNoopElement.cpp:
+        (WebCore::WMLNoopElement::create): Added.
+        * wml/WMLNoopElement.h:
+        * wml/WMLOnEventElement.cpp:
+        (WebCore::WMLOnEventElement::create): Added.
+        * wml/WMLOnEventElement.h:
+        * wml/WMLOptGroupElement.cpp:
+        (WebCore::WMLOptGroupElement::create): Added.
+        * wml/WMLOptGroupElement.h:
+        * wml/WMLOptionElement.cpp:
+        (WebCore::WMLOptionElement::create): Added.
+        * wml/WMLOptionElement.h:
+        * wml/WMLPElement.cpp:
+        (WebCore::WMLPElement::create): Added.
+        * wml/WMLPElement.h:
+        * wml/WMLPostfieldElement.cpp:
+        (WebCore::WMLPostfieldElement::create): Added.
+        * wml/WMLPostfieldElement.h:
+        * wml/WMLPrevElement.cpp:
+        (WebCore::WMLPrevElement::create): Added.
+        * wml/WMLPrevElement.h:
+        * wml/WMLRefreshElement.cpp:
+        (WebCore::WMLRefreshElement::create): Added.
+        * wml/WMLRefreshElement.h:
+        * wml/WMLSelectElement.cpp:
+        (WebCore::WMLSelectElement::create): Added.
+        * wml/WMLSelectElement.h:
+        * wml/WMLSetvarElement.cpp:
+        (WebCore::WMLSetvarElement::create): Added.
+        * wml/WMLSetvarElement.h:
+        * wml/WMLTableElement.cpp:
+        (WebCore::WMLTableElement::create): Added.
+        * wml/WMLTableElement.h:
+        * wml/WMLTaskElement.cpp:
+        (WebCore::WMLTaskElement::create): Added.
+        * wml/WMLTaskElement.h:
+        * wml/WMLTemplateElement.cpp:
+        (WebCore::WMLTemplateElement::create): Added.
+        * wml/WMLTemplateElement.h:
+        * wml/WMLTimerElement.cpp:
+        (WebCore::WMLTimerElement::create): Added.
+        * wml/WMLTimerElement.h:
+
 2010-08-29  Marc-Antoine Ruel  <maruel at chromium.org>
 
         Reviewed by Kent Tamura.
diff --git a/WebCore/dom/make_names.pl b/WebCore/dom/make_names.pl
index e111eb7..9dec124 100755
--- a/WebCore/dom/make_names.pl
+++ b/WebCore/dom/make_names.pl
@@ -128,7 +128,6 @@ sub defaultTagPropertyHash
     return (
         'constructorNeedsCreatedByParser' => 0,
         'constructorNeedsFormElement' => 0,
-        'createWithNew' => 0,
         'interfaceName' => defaultInterfaceName($_[0]),
         # By default, the JSInterfaceName is the same as the interfaceName.
         'JSInterfaceName' => defaultInterfaceName($_[0]),
@@ -317,16 +316,8 @@ END
 ;
     }
 
-    my $newPrefix = "";
-    my $createSuffix = "::create";
-
-    if ($enabledTags{$tagName}{createWithNew}) {
-        $newPrefix = "new ";
-        $createSuffix = "";
-    }
-
     # Call the constructor with the right parameters.
-    print F "    return $newPrefix$interfaceName${createSuffix}($constructorTagName, document";
+    print F "    return ${interfaceName}::create($constructorTagName, document";
     print F ", formElement" if $enabledTags{$tagName}{constructorNeedsFormElement};
     print F ", createdByParser" if $enabledTags{$tagName}{constructorNeedsCreatedByParser};
     print F ");\n}\n\n";
diff --git a/WebCore/svg/SVGAElement.cpp b/WebCore/svg/SVGAElement.cpp
index a2a4e73..39c1fde 100644
--- a/WebCore/svg/SVGAElement.cpp
+++ b/WebCore/svg/SVGAElement.cpp
@@ -54,6 +54,11 @@ SVGAElement::SVGAElement(const QualifiedName& tagName, Document *doc)
 {
 }
 
+PassRefPtr<SVGAElement> SVGAElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGAElement(tagName, document);
+}
+
 SVGAElement::~SVGAElement()
 {
 }
diff --git a/WebCore/svg/SVGAElement.h b/WebCore/svg/SVGAElement.h
index 3debf8a..6c30bc7 100644
--- a/WebCore/svg/SVGAElement.h
+++ b/WebCore/svg/SVGAElement.h
@@ -23,6 +23,7 @@
 #define SVGAElement_h
 
 #if ENABLE(SVG)
+
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
@@ -37,9 +38,13 @@ namespace WebCore {
                         public SVGLangSpace,
                         public SVGExternalResourcesRequired {
     public:
-        SVGAElement(const QualifiedName&, Document*);
+        static PassRefPtr<SVGAElement> create(const QualifiedName&, Document*);
+
         virtual ~SVGAElement();
 
+    private:
+        SVGAElement(const QualifiedName&, Document*);
+
         virtual bool isValid() const { return SVGTests::isValid(); }
         
         virtual String title() const;
@@ -59,7 +64,6 @@ namespace WebCore {
 
         virtual bool childShouldCreateRenderer(Node*) const;
 
-    private:
         DECLARE_ANIMATED_PROPERTY(SVGAElement, SVGNames::targetAttr, String, Target, target)
 
         // SVGURIReference
@@ -72,4 +76,5 @@ namespace WebCore {
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
+
 #endif // SVGAElement_h
diff --git a/WebCore/svg/SVGAltGlyphElement.cpp b/WebCore/svg/SVGAltGlyphElement.cpp
index 16808b9..1acef2b 100644
--- a/WebCore/svg/SVGAltGlyphElement.cpp
+++ b/WebCore/svg/SVGAltGlyphElement.cpp
@@ -38,6 +38,11 @@ SVGAltGlyphElement::SVGAltGlyphElement(const QualifiedName& tagName, Document* d
 {
 }
 
+PassRefPtr<SVGAltGlyphElement> SVGAltGlyphElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGAltGlyphElement(tagName, document);
+}
+
 SVGAltGlyphElement::~SVGAltGlyphElement()
 {
 }
diff --git a/WebCore/svg/SVGAltGlyphElement.h b/WebCore/svg/SVGAltGlyphElement.h
index cc5364b..ada6bf6 100644
--- a/WebCore/svg/SVGAltGlyphElement.h
+++ b/WebCore/svg/SVGAltGlyphElement.h
@@ -34,13 +34,9 @@ namespace WebCore {
     class SVGAltGlyphElement : public SVGTextPositioningElement,
                                public SVGURIReference {
     public:
-        SVGAltGlyphElement(const QualifiedName&, Document*);
-        virtual ~SVGAltGlyphElement();
-
-        virtual void synchronizeProperty(const QualifiedName&);
+        static PassRefPtr<SVGAltGlyphElement> create(const QualifiedName&, Document*);
 
-        virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
-        bool childShouldCreateRenderer(Node*) const;
+        virtual ~SVGAltGlyphElement();
 
         const AtomicString& glyphRef() const;
         void setGlyphRef(const AtomicString&, ExceptionCode&);
@@ -49,7 +45,14 @@ namespace WebCore {
     
         SVGGlyphElement* glyphElement() const;
 
-    private:    
+    private:
+        SVGAltGlyphElement(const QualifiedName&, Document*);
+
+        virtual void synchronizeProperty(const QualifiedName&);
+
+        virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
+        virtual bool childShouldCreateRenderer(Node*) const;
+
         // SVGURIReference
         DECLARE_ANIMATED_PROPERTY(SVGAltGlyphElement, XLinkNames::hrefAttr, String, Href, href)
     };
diff --git a/WebCore/svg/SVGAnimateColorElement.cpp b/WebCore/svg/SVGAnimateColorElement.cpp
index d5166cf..88ada83 100644
--- a/WebCore/svg/SVGAnimateColorElement.cpp
+++ b/WebCore/svg/SVGAnimateColorElement.cpp
@@ -30,6 +30,11 @@ SVGAnimateColorElement::SVGAnimateColorElement(const QualifiedName& tagName, Doc
 {
 }
 
+PassRefPtr<SVGAnimateColorElement> SVGAnimateColorElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGAnimateColorElement(tagName, document);
+}
+
 }
 
 // vim:ts=4:noet
diff --git a/WebCore/svg/SVGAnimateColorElement.h b/WebCore/svg/SVGAnimateColorElement.h
index ad9a774..b6fe95d 100644
--- a/WebCore/svg/SVGAnimateColorElement.h
+++ b/WebCore/svg/SVGAnimateColorElement.h
@@ -30,6 +30,8 @@ namespace WebCore {
     // SVGAnimateElement implements superset of the functionality.
     class SVGAnimateColorElement : public SVGAnimateElement {
     public:
+        static PassRefPtr<SVGAnimateColorElement> create(const QualifiedName&, Document*);
+
         SVGAnimateColorElement(const QualifiedName&, Document*);
     };
 
diff --git a/WebCore/svg/SVGAnimateElement.cpp b/WebCore/svg/SVGAnimateElement.cpp
index df0c3bc..1a349c9 100644
--- a/WebCore/svg/SVGAnimateElement.cpp
+++ b/WebCore/svg/SVGAnimateElement.cpp
@@ -46,6 +46,11 @@ SVGAnimateElement::SVGAnimateElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGAnimateElement> SVGAnimateElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGAnimateElement(tagName, document);
+}
+
 SVGAnimateElement::~SVGAnimateElement()
 {
 }
diff --git a/WebCore/svg/SVGAnimateElement.h b/WebCore/svg/SVGAnimateElement.h
index 43522a7..c84a960 100644
--- a/WebCore/svg/SVGAnimateElement.h
+++ b/WebCore/svg/SVGAnimateElement.h
@@ -35,6 +35,8 @@ namespace WebCore {
 
     class SVGAnimateElement : public SVGAnimationElement {
     public:
+        static PassRefPtr<SVGAnimateElement> create(const QualifiedName&, Document*);
+
         SVGAnimateElement(const QualifiedName&, Document*);
         virtual ~SVGAnimateElement();
     
diff --git a/WebCore/svg/SVGAnimateMotionElement.cpp b/WebCore/svg/SVGAnimateMotionElement.cpp
index 4ddda73..be4882d 100644
--- a/WebCore/svg/SVGAnimateMotionElement.cpp
+++ b/WebCore/svg/SVGAnimateMotionElement.cpp
@@ -47,6 +47,11 @@ SVGAnimateMotionElement::SVGAnimateMotionElement(const QualifiedName& tagName, D
 {
 }
 
+PassRefPtr<SVGAnimateMotionElement> SVGAnimateMotionElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGAnimateMotionElement(tagName, document);
+}
+
 SVGAnimateMotionElement::~SVGAnimateMotionElement()
 {
 }
diff --git a/WebCore/svg/SVGAnimateMotionElement.h b/WebCore/svg/SVGAnimateMotionElement.h
index ec189f9..b8d873f 100644
--- a/WebCore/svg/SVGAnimateMotionElement.h
+++ b/WebCore/svg/SVGAnimateMotionElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
             
     class SVGAnimateMotionElement : public SVGAnimationElement {
     public:
+        static PassRefPtr<SVGAnimateMotionElement> create(const QualifiedName&, Document*);
+
         SVGAnimateMotionElement(const QualifiedName&, Document*);
         virtual ~SVGAnimateMotionElement();
 
diff --git a/WebCore/svg/SVGAnimateTransformElement.cpp b/WebCore/svg/SVGAnimateTransformElement.cpp
index 0c27f0a..79b0cea 100644
--- a/WebCore/svg/SVGAnimateTransformElement.cpp
+++ b/WebCore/svg/SVGAnimateTransformElement.cpp
@@ -53,6 +53,11 @@ SVGAnimateTransformElement::SVGAnimateTransformElement(const QualifiedName& tagN
 {
 }
 
+PassRefPtr<SVGAnimateTransformElement> SVGAnimateTransformElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGAnimateTransformElement(tagName, document);
+}
+
 SVGAnimateTransformElement::~SVGAnimateTransformElement()
 {
 }
diff --git a/WebCore/svg/SVGAnimateTransformElement.h b/WebCore/svg/SVGAnimateTransformElement.h
index bf3de36..2978142 100644
--- a/WebCore/svg/SVGAnimateTransformElement.h
+++ b/WebCore/svg/SVGAnimateTransformElement.h
@@ -34,6 +34,8 @@ class AffineTransform;
 
 class SVGAnimateTransformElement : public SVGAnimationElement {
 public:
+    static PassRefPtr<SVGAnimateTransformElement> create(const QualifiedName&, Document*);
+
     SVGAnimateTransformElement(const QualifiedName&, Document*);
     virtual ~SVGAnimateTransformElement();
     
diff --git a/WebCore/svg/SVGCircleElement.cpp b/WebCore/svg/SVGCircleElement.cpp
index ffbaa7b..bfd253d 100644
--- a/WebCore/svg/SVGCircleElement.cpp
+++ b/WebCore/svg/SVGCircleElement.cpp
@@ -43,6 +43,11 @@ SVGCircleElement::SVGCircleElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGCircleElement> SVGCircleElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGCircleElement(tagName, document);
+}
+
 SVGCircleElement::~SVGCircleElement()
 {
 }
diff --git a/WebCore/svg/SVGCircleElement.h b/WebCore/svg/SVGCircleElement.h
index f436b3c..a64b23b 100644
--- a/WebCore/svg/SVGCircleElement.h
+++ b/WebCore/svg/SVGCircleElement.h
@@ -34,6 +34,8 @@ namespace WebCore {
                              public SVGLangSpace,
                              public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGCircleElement> create(const QualifiedName&, Document*);
+
         SVGCircleElement(const QualifiedName&, Document*);
         virtual ~SVGCircleElement();
 
diff --git a/WebCore/svg/SVGClipPathElement.cpp b/WebCore/svg/SVGClipPathElement.cpp
index baaae96..3e717dc 100644
--- a/WebCore/svg/SVGClipPathElement.cpp
+++ b/WebCore/svg/SVGClipPathElement.cpp
@@ -43,6 +43,11 @@ SVGClipPathElement::SVGClipPathElement(const QualifiedName& tagName, Document* d
 {
 }
 
+PassRefPtr<SVGClipPathElement> SVGClipPathElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGClipPathElement(tagName, document);
+}
+
 SVGClipPathElement::~SVGClipPathElement()
 {
 }
diff --git a/WebCore/svg/SVGClipPathElement.h b/WebCore/svg/SVGClipPathElement.h
index 85dd05e..107bfef 100644
--- a/WebCore/svg/SVGClipPathElement.h
+++ b/WebCore/svg/SVGClipPathElement.h
@@ -35,6 +35,8 @@ class SVGClipPathElement : public SVGStyledTransformableElement,
                            public SVGLangSpace,
                            public SVGExternalResourcesRequired {
 public:
+    static PassRefPtr<SVGClipPathElement> create(const QualifiedName&, Document*);
+
     SVGClipPathElement(const QualifiedName&, Document*);
     virtual ~SVGClipPathElement();
 
diff --git a/WebCore/svg/SVGCursorElement.cpp b/WebCore/svg/SVGCursorElement.cpp
index cc3dfd1..098d7c1 100644
--- a/WebCore/svg/SVGCursorElement.cpp
+++ b/WebCore/svg/SVGCursorElement.cpp
@@ -40,6 +40,11 @@ SVGCursorElement::SVGCursorElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGCursorElement> SVGCursorElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGCursorElement(tagName, document);
+}
+
 SVGCursorElement::~SVGCursorElement()
 {
     HashSet<SVGElement*>::iterator end = m_clients.end();
diff --git a/WebCore/svg/SVGCursorElement.h b/WebCore/svg/SVGCursorElement.h
index fe2d647..6b1ce56 100644
--- a/WebCore/svg/SVGCursorElement.h
+++ b/WebCore/svg/SVGCursorElement.h
@@ -35,6 +35,8 @@ namespace WebCore {
                              public SVGExternalResourcesRequired,
                              public SVGURIReference {
     public:
+        static PassRefPtr<SVGCursorElement> create(const QualifiedName&, Document*);
+
         SVGCursorElement(const QualifiedName&, Document*);
         virtual ~SVGCursorElement();
 
diff --git a/WebCore/svg/SVGDefsElement.cpp b/WebCore/svg/SVGDefsElement.cpp
index 660e0d1..e9329c1 100644
--- a/WebCore/svg/SVGDefsElement.cpp
+++ b/WebCore/svg/SVGDefsElement.cpp
@@ -35,6 +35,11 @@ SVGDefsElement::SVGDefsElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGDefsElement> SVGDefsElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGDefsElement(tagName, document);
+}
+
 SVGDefsElement::~SVGDefsElement()
 {
 }
diff --git a/WebCore/svg/SVGDefsElement.h b/WebCore/svg/SVGDefsElement.h
index 1d84dd5..da7cfc9 100644
--- a/WebCore/svg/SVGDefsElement.h
+++ b/WebCore/svg/SVGDefsElement.h
@@ -34,6 +34,8 @@ namespace WebCore {
                            public SVGLangSpace,
                            public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGDefsElement> create(const QualifiedName&, Document*);
+
         SVGDefsElement(const QualifiedName&, Document*);
         virtual ~SVGDefsElement();
 
diff --git a/WebCore/svg/SVGDescElement.cpp b/WebCore/svg/SVGDescElement.cpp
index 58a7e01..8cdeb0d 100644
--- a/WebCore/svg/SVGDescElement.cpp
+++ b/WebCore/svg/SVGDescElement.cpp
@@ -30,6 +30,11 @@ SVGDescElement::SVGDescElement(const QualifiedName& tagName, Document *doc)
 {
 }
 
+PassRefPtr<SVGDescElement> SVGDescElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGDescElement(tagName, document);
+}
+
 SVGDescElement::~SVGDescElement()
 {
 }
diff --git a/WebCore/svg/SVGDescElement.h b/WebCore/svg/SVGDescElement.h
index 23374ef..aed8a32 100644
--- a/WebCore/svg/SVGDescElement.h
+++ b/WebCore/svg/SVGDescElement.h
@@ -30,6 +30,8 @@ namespace WebCore {
     class SVGDescElement : public SVGStyledElement,
                            public SVGLangSpace {
     public:
+        static PassRefPtr<SVGDescElement> create(const QualifiedName&, Document*);
+
         SVGDescElement(const QualifiedName&, Document*);
         virtual ~SVGDescElement();
 
diff --git a/WebCore/svg/SVGEllipseElement.cpp b/WebCore/svg/SVGEllipseElement.cpp
index 128b5e0..d045a13 100644
--- a/WebCore/svg/SVGEllipseElement.cpp
+++ b/WebCore/svg/SVGEllipseElement.cpp
@@ -44,6 +44,11 @@ SVGEllipseElement::SVGEllipseElement(const QualifiedName& tagName, Document* doc
 {
 }    
 
+PassRefPtr<SVGEllipseElement> SVGEllipseElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGEllipseElement(tagName, document);
+}
+
 SVGEllipseElement::~SVGEllipseElement()
 {
 }
diff --git a/WebCore/svg/SVGEllipseElement.h b/WebCore/svg/SVGEllipseElement.h
index 85ec4c8..a9ec29b 100644
--- a/WebCore/svg/SVGEllipseElement.h
+++ b/WebCore/svg/SVGEllipseElement.h
@@ -34,6 +34,8 @@ namespace WebCore {
                               public SVGLangSpace,
                               public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGEllipseElement> create(const QualifiedName&, Document*);
+
         SVGEllipseElement(const QualifiedName&, Document*);
         virtual ~SVGEllipseElement();
         
diff --git a/WebCore/svg/SVGFEBlendElement.cpp b/WebCore/svg/SVGFEBlendElement.cpp
index e944d61..79e8287 100644
--- a/WebCore/svg/SVGFEBlendElement.cpp
+++ b/WebCore/svg/SVGFEBlendElement.cpp
@@ -33,6 +33,11 @@ SVGFEBlendElement::SVGFEBlendElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGFEBlendElement> SVGFEBlendElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEBlendElement(tagName, document);
+}
+
 SVGFEBlendElement::~SVGFEBlendElement()
 {
 }
diff --git a/WebCore/svg/SVGFEBlendElement.h b/WebCore/svg/SVGFEBlendElement.h
index 2ffa93e..cf30533 100644
--- a/WebCore/svg/SVGFEBlendElement.h
+++ b/WebCore/svg/SVGFEBlendElement.h
@@ -28,6 +28,8 @@
 namespace WebCore {
 class SVGFEBlendElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEBlendElement> create(const QualifiedName&, Document*);
+
     SVGFEBlendElement(const QualifiedName&, Document*);
     virtual ~SVGFEBlendElement();
 
diff --git a/WebCore/svg/SVGFEColorMatrixElement.cpp b/WebCore/svg/SVGFEColorMatrixElement.cpp
index d7c10d1..fa2c67b 100644
--- a/WebCore/svg/SVGFEColorMatrixElement.cpp
+++ b/WebCore/svg/SVGFEColorMatrixElement.cpp
@@ -36,6 +36,11 @@ SVGFEColorMatrixElement::SVGFEColorMatrixElement(const QualifiedName& tagName, D
 {
 }
 
+PassRefPtr<SVGFEColorMatrixElement> SVGFEColorMatrixElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEColorMatrixElement(tagName, document);
+}
+
 SVGFEColorMatrixElement::~SVGFEColorMatrixElement()
 {
 }
diff --git a/WebCore/svg/SVGFEColorMatrixElement.h b/WebCore/svg/SVGFEColorMatrixElement.h
index 6701eea..8dc3997 100644
--- a/WebCore/svg/SVGFEColorMatrixElement.h
+++ b/WebCore/svg/SVGFEColorMatrixElement.h
@@ -30,6 +30,8 @@ namespace WebCore {
 
 class SVGFEColorMatrixElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEColorMatrixElement> create(const QualifiedName&, Document*);
+
     SVGFEColorMatrixElement(const QualifiedName&, Document*);
     virtual ~SVGFEColorMatrixElement();
 
diff --git a/WebCore/svg/SVGFEComponentTransferElement.cpp b/WebCore/svg/SVGFEComponentTransferElement.cpp
index 9f85a0b..24c2ae9 100644
--- a/WebCore/svg/SVGFEComponentTransferElement.cpp
+++ b/WebCore/svg/SVGFEComponentTransferElement.cpp
@@ -38,6 +38,11 @@ SVGFEComponentTransferElement::SVGFEComponentTransferElement(const QualifiedName
 {
 }
 
+PassRefPtr<SVGFEComponentTransferElement> SVGFEComponentTransferElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEComponentTransferElement(tagName, document);
+}
+
 SVGFEComponentTransferElement::~SVGFEComponentTransferElement()
 {
 }
diff --git a/WebCore/svg/SVGFEComponentTransferElement.h b/WebCore/svg/SVGFEComponentTransferElement.h
index 785dc68..5eba12f 100644
--- a/WebCore/svg/SVGFEComponentTransferElement.h
+++ b/WebCore/svg/SVGFEComponentTransferElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class SVGFEComponentTransferElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEComponentTransferElement> create(const QualifiedName&, Document*);
+
     SVGFEComponentTransferElement(const QualifiedName&, Document*);
     virtual ~SVGFEComponentTransferElement();
 
diff --git a/WebCore/svg/SVGFECompositeElement.cpp b/WebCore/svg/SVGFECompositeElement.cpp
index dfa335d..824e1fc 100644
--- a/WebCore/svg/SVGFECompositeElement.cpp
+++ b/WebCore/svg/SVGFECompositeElement.cpp
@@ -34,6 +34,11 @@ SVGFECompositeElement::SVGFECompositeElement(const QualifiedName& tagName, Docum
 {
 }
 
+PassRefPtr<SVGFECompositeElement> SVGFECompositeElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFECompositeElement(tagName, document);
+}
+
 SVGFECompositeElement::~SVGFECompositeElement()
 {
 }
diff --git a/WebCore/svg/SVGFECompositeElement.h b/WebCore/svg/SVGFECompositeElement.h
index b229cc5..36c2815 100644
--- a/WebCore/svg/SVGFECompositeElement.h
+++ b/WebCore/svg/SVGFECompositeElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class SVGFECompositeElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFECompositeElement> create(const QualifiedName&, Document*);
+
     SVGFECompositeElement(const QualifiedName&, Document*);
     virtual ~SVGFECompositeElement();
 
diff --git a/WebCore/svg/SVGFEConvolveMatrixElement.cpp b/WebCore/svg/SVGFEConvolveMatrixElement.cpp
index ed6910e..abb318b 100644
--- a/WebCore/svg/SVGFEConvolveMatrixElement.cpp
+++ b/WebCore/svg/SVGFEConvolveMatrixElement.cpp
@@ -45,6 +45,11 @@ SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement(const QualifiedName& tagN
 {
 }
 
+PassRefPtr<SVGFEConvolveMatrixElement> SVGFEConvolveMatrixElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEConvolveMatrixElement(tagName, document);
+}
+
 SVGFEConvolveMatrixElement::~SVGFEConvolveMatrixElement()
 {
 }
diff --git a/WebCore/svg/SVGFEConvolveMatrixElement.h b/WebCore/svg/SVGFEConvolveMatrixElement.h
index 5f505d7..09347c2 100644
--- a/WebCore/svg/SVGFEConvolveMatrixElement.h
+++ b/WebCore/svg/SVGFEConvolveMatrixElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class SVGFEConvolveMatrixElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEConvolveMatrixElement> create(const QualifiedName&, Document*);
+
     SVGFEConvolveMatrixElement(const QualifiedName&, Document*);
     virtual ~SVGFEConvolveMatrixElement();
 
diff --git a/WebCore/svg/SVGFEDiffuseLightingElement.cpp b/WebCore/svg/SVGFEDiffuseLightingElement.cpp
index 81144c6..587f6f3 100644
--- a/WebCore/svg/SVGFEDiffuseLightingElement.cpp
+++ b/WebCore/svg/SVGFEDiffuseLightingElement.cpp
@@ -42,6 +42,11 @@ SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement(const QualifiedName& ta
 {
 }
 
+PassRefPtr<SVGFEDiffuseLightingElement> SVGFEDiffuseLightingElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEDiffuseLightingElement(tagName, document);
+}
+
 SVGFEDiffuseLightingElement::~SVGFEDiffuseLightingElement()
 {
 }
diff --git a/WebCore/svg/SVGFEDiffuseLightingElement.h b/WebCore/svg/SVGFEDiffuseLightingElement.h
index c5bedf1..4150f31 100644
--- a/WebCore/svg/SVGFEDiffuseLightingElement.h
+++ b/WebCore/svg/SVGFEDiffuseLightingElement.h
@@ -36,6 +36,8 @@ class SVGColor;
 
 class SVGFEDiffuseLightingElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEDiffuseLightingElement> create(const QualifiedName&, Document*);
+
     SVGFEDiffuseLightingElement(const QualifiedName&, Document*);
     virtual ~SVGFEDiffuseLightingElement();
 
diff --git a/WebCore/svg/SVGFEDisplacementMapElement.cpp b/WebCore/svg/SVGFEDisplacementMapElement.cpp
index 2706c78..0dce92e 100644
--- a/WebCore/svg/SVGFEDisplacementMapElement.cpp
+++ b/WebCore/svg/SVGFEDisplacementMapElement.cpp
@@ -33,6 +33,11 @@ SVGFEDisplacementMapElement::SVGFEDisplacementMapElement(const QualifiedName& ta
 {
 }
 
+PassRefPtr<SVGFEDisplacementMapElement> SVGFEDisplacementMapElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEDisplacementMapElement(tagName, document);
+}
+
 SVGFEDisplacementMapElement::~SVGFEDisplacementMapElement()
 {
 }
diff --git a/WebCore/svg/SVGFEDisplacementMapElement.h b/WebCore/svg/SVGFEDisplacementMapElement.h
index 445c631..b90f1b7 100644
--- a/WebCore/svg/SVGFEDisplacementMapElement.h
+++ b/WebCore/svg/SVGFEDisplacementMapElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
     
 class SVGFEDisplacementMapElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEDisplacementMapElement> create(const QualifiedName&, Document*);
+
     SVGFEDisplacementMapElement(const QualifiedName& tagName, Document*);
     virtual ~SVGFEDisplacementMapElement();
     
diff --git a/WebCore/svg/SVGFEDistantLightElement.cpp b/WebCore/svg/SVGFEDistantLightElement.cpp
index 3a056af..b31a4cd 100644
--- a/WebCore/svg/SVGFEDistantLightElement.cpp
+++ b/WebCore/svg/SVGFEDistantLightElement.cpp
@@ -30,6 +30,11 @@ SVGFEDistantLightElement::SVGFEDistantLightElement(const QualifiedName& tagName,
 {
 }
 
+PassRefPtr<SVGFEDistantLightElement> SVGFEDistantLightElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEDistantLightElement(tagName, document);
+}
+
 SVGFEDistantLightElement::~SVGFEDistantLightElement()
 {
 }
diff --git a/WebCore/svg/SVGFEDistantLightElement.h b/WebCore/svg/SVGFEDistantLightElement.h
index a625c04..16889e3 100644
--- a/WebCore/svg/SVGFEDistantLightElement.h
+++ b/WebCore/svg/SVGFEDistantLightElement.h
@@ -24,8 +24,11 @@
 #include "SVGFELightElement.h"
 
 namespace WebCore {
+
     class SVGFEDistantLightElement : public SVGFELightElement {
     public:
+        static PassRefPtr<SVGFEDistantLightElement> create(const QualifiedName&, Document*);
+
         SVGFEDistantLightElement(const QualifiedName&, Document*);
         virtual ~SVGFEDistantLightElement();
 
diff --git a/WebCore/svg/SVGFEFloodElement.cpp b/WebCore/svg/SVGFEFloodElement.cpp
index 050f2d4..d9460e9 100644
--- a/WebCore/svg/SVGFEFloodElement.cpp
+++ b/WebCore/svg/SVGFEFloodElement.cpp
@@ -34,6 +34,11 @@ SVGFEFloodElement::SVGFEFloodElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGFEFloodElement> SVGFEFloodElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEFloodElement(tagName, document);
+}
+
 SVGFEFloodElement::~SVGFEFloodElement()
 {
 }
diff --git a/WebCore/svg/SVGFEFloodElement.h b/WebCore/svg/SVGFEFloodElement.h
index 73aa0ee..4e21c37 100644
--- a/WebCore/svg/SVGFEFloodElement.h
+++ b/WebCore/svg/SVGFEFloodElement.h
@@ -26,8 +26,11 @@
 #include "SVGFilterPrimitiveStandardAttributes.h"
 
 namespace WebCore {
+
 class SVGFEFloodElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEFloodElement> create(const QualifiedName&, Document*);
+
     SVGFEFloodElement(const QualifiedName&, Document*);
     virtual ~SVGFEFloodElement();
 
diff --git a/WebCore/svg/SVGFEFuncAElement.cpp b/WebCore/svg/SVGFEFuncAElement.cpp
index 3722826..506eb7f 100644
--- a/WebCore/svg/SVGFEFuncAElement.cpp
+++ b/WebCore/svg/SVGFEFuncAElement.cpp
@@ -30,6 +30,11 @@ SVGFEFuncAElement::SVGFEFuncAElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGFEFuncAElement> SVGFEFuncAElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEFuncAElement(tagName, document);
+}
+
 SVGFEFuncAElement::~SVGFEFuncAElement()
 {
 }
diff --git a/WebCore/svg/SVGFEFuncAElement.h b/WebCore/svg/SVGFEFuncAElement.h
index 500d630..e6aca0c 100644
--- a/WebCore/svg/SVGFEFuncAElement.h
+++ b/WebCore/svg/SVGFEFuncAElement.h
@@ -25,8 +25,11 @@
 #include "SVGComponentTransferFunctionElement.h"
 
 namespace WebCore {
+
     class SVGFEFuncAElement : public SVGComponentTransferFunctionElement {
     public:
+        static PassRefPtr<SVGFEFuncAElement> create(const QualifiedName&, Document*);
+
         SVGFEFuncAElement(const QualifiedName&, Document*);
         virtual ~SVGFEFuncAElement();
     };
diff --git a/WebCore/svg/SVGFEFuncBElement.cpp b/WebCore/svg/SVGFEFuncBElement.cpp
index 3ea448f..b2eed4b 100644
--- a/WebCore/svg/SVGFEFuncBElement.cpp
+++ b/WebCore/svg/SVGFEFuncBElement.cpp
@@ -30,6 +30,11 @@ SVGFEFuncBElement::SVGFEFuncBElement(const QualifiedName& tagName, Document *doc
 {
 }
 
+PassRefPtr<SVGFEFuncBElement> SVGFEFuncBElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEFuncBElement(tagName, document);
+}
+
 SVGFEFuncBElement::~SVGFEFuncBElement()
 {
 }
diff --git a/WebCore/svg/SVGFEFuncBElement.h b/WebCore/svg/SVGFEFuncBElement.h
index 85f9500..0180f56 100644
--- a/WebCore/svg/SVGFEFuncBElement.h
+++ b/WebCore/svg/SVGFEFuncBElement.h
@@ -25,8 +25,11 @@
 #include "SVGComponentTransferFunctionElement.h"
 
 namespace WebCore {
+
     class SVGFEFuncBElement : public SVGComponentTransferFunctionElement {
     public:
+        static PassRefPtr<SVGFEFuncBElement> create(const QualifiedName&, Document*);
+
         SVGFEFuncBElement(const QualifiedName&, Document*);
         virtual ~SVGFEFuncBElement();
     };
diff --git a/WebCore/svg/SVGFEFuncGElement.cpp b/WebCore/svg/SVGFEFuncGElement.cpp
index c74a9ce..5fa7ca0 100644
--- a/WebCore/svg/SVGFEFuncGElement.cpp
+++ b/WebCore/svg/SVGFEFuncGElement.cpp
@@ -30,6 +30,11 @@ SVGFEFuncGElement::SVGFEFuncGElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGFEFuncGElement> SVGFEFuncGElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEFuncGElement(tagName, document);
+}
+
 SVGFEFuncGElement::~SVGFEFuncGElement()
 {
 }
diff --git a/WebCore/svg/SVGFEFuncGElement.h b/WebCore/svg/SVGFEFuncGElement.h
index 9950a53..d24c467 100644
--- a/WebCore/svg/SVGFEFuncGElement.h
+++ b/WebCore/svg/SVGFEFuncGElement.h
@@ -25,8 +25,11 @@
 #include "SVGComponentTransferFunctionElement.h"
 
 namespace WebCore {
+
     class SVGFEFuncGElement : public SVGComponentTransferFunctionElement {
     public:
+        static PassRefPtr<SVGFEFuncGElement> create(const QualifiedName&, Document*);
+
         SVGFEFuncGElement(const QualifiedName&, Document*);
         virtual ~SVGFEFuncGElement();
     };
diff --git a/WebCore/svg/SVGFEFuncRElement.cpp b/WebCore/svg/SVGFEFuncRElement.cpp
index ce3355d..29cd570 100644
--- a/WebCore/svg/SVGFEFuncRElement.cpp
+++ b/WebCore/svg/SVGFEFuncRElement.cpp
@@ -30,6 +30,11 @@ SVGFEFuncRElement::SVGFEFuncRElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGFEFuncRElement> SVGFEFuncRElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEFuncRElement(tagName, document);
+}
+
 SVGFEFuncRElement::~SVGFEFuncRElement()
 {
 }
diff --git a/WebCore/svg/SVGFEFuncRElement.h b/WebCore/svg/SVGFEFuncRElement.h
index 8e78091..e367bd8 100644
--- a/WebCore/svg/SVGFEFuncRElement.h
+++ b/WebCore/svg/SVGFEFuncRElement.h
@@ -25,8 +25,11 @@
 #include "SVGComponentTransferFunctionElement.h"
 
 namespace WebCore {
+
     class SVGFEFuncRElement : public SVGComponentTransferFunctionElement {
     public:
+        static PassRefPtr<SVGFEFuncRElement> create(const QualifiedName&, Document*);
+
         SVGFEFuncRElement(const QualifiedName&, Document*);
         virtual ~SVGFEFuncRElement();
     };
diff --git a/WebCore/svg/SVGFEGaussianBlurElement.cpp b/WebCore/svg/SVGFEGaussianBlurElement.cpp
index 2e5578a..31bc516 100644
--- a/WebCore/svg/SVGFEGaussianBlurElement.cpp
+++ b/WebCore/svg/SVGFEGaussianBlurElement.cpp
@@ -37,6 +37,11 @@ SVGFEGaussianBlurElement::SVGFEGaussianBlurElement(const QualifiedName& tagName,
 {
 }
 
+PassRefPtr<SVGFEGaussianBlurElement> SVGFEGaussianBlurElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEGaussianBlurElement(tagName, document);
+}
+
 SVGFEGaussianBlurElement::~SVGFEGaussianBlurElement()
 {
 }
diff --git a/WebCore/svg/SVGFEGaussianBlurElement.h b/WebCore/svg/SVGFEGaussianBlurElement.h
index 10c0f5a..3465f82 100644
--- a/WebCore/svg/SVGFEGaussianBlurElement.h
+++ b/WebCore/svg/SVGFEGaussianBlurElement.h
@@ -32,6 +32,8 @@ extern char SVGStdDeviationYAttrIdentifier[];
 
 class SVGFEGaussianBlurElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEGaussianBlurElement> create(const QualifiedName&, Document*);
+
     SVGFEGaussianBlurElement(const QualifiedName&, Document*);
     virtual ~SVGFEGaussianBlurElement();
 
diff --git a/WebCore/svg/SVGFEImageElement.cpp b/WebCore/svg/SVGFEImageElement.cpp
index eb024f6..e6354d5 100644
--- a/WebCore/svg/SVGFEImageElement.cpp
+++ b/WebCore/svg/SVGFEImageElement.cpp
@@ -45,6 +45,11 @@ SVGFEImageElement::SVGFEImageElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGFEImageElement> SVGFEImageElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEImageElement(tagName, document);
+}
+
 SVGFEImageElement::~SVGFEImageElement()
 {
     if (m_cachedImage)
diff --git a/WebCore/svg/SVGFEImageElement.h b/WebCore/svg/SVGFEImageElement.h
index 2128c6d..e17b554 100644
--- a/WebCore/svg/SVGFEImageElement.h
+++ b/WebCore/svg/SVGFEImageElement.h
@@ -40,6 +40,8 @@ class SVGFEImageElement : public SVGFilterPrimitiveStandardAttributes,
                           public SVGExternalResourcesRequired,
                           public CachedResourceClient {
 public:
+    static PassRefPtr<SVGFEImageElement> create(const QualifiedName&, Document*);
+
     SVGFEImageElement(const QualifiedName&, Document*);
     virtual ~SVGFEImageElement();
 
diff --git a/WebCore/svg/SVGFEMergeElement.cpp b/WebCore/svg/SVGFEMergeElement.cpp
index bbdfd52..f74afd4 100644
--- a/WebCore/svg/SVGFEMergeElement.cpp
+++ b/WebCore/svg/SVGFEMergeElement.cpp
@@ -32,6 +32,11 @@ SVGFEMergeElement::SVGFEMergeElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGFEMergeElement> SVGFEMergeElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEMergeElement(tagName, document);
+}
+
 SVGFEMergeElement::~SVGFEMergeElement()
 {
 }
diff --git a/WebCore/svg/SVGFEMergeElement.h b/WebCore/svg/SVGFEMergeElement.h
index 1ae6eb4..9059893 100644
--- a/WebCore/svg/SVGFEMergeElement.h
+++ b/WebCore/svg/SVGFEMergeElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class SVGFEMergeElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEMergeElement> create(const QualifiedName&, Document*);
+
     SVGFEMergeElement(const QualifiedName&, Document*);
     virtual ~SVGFEMergeElement();
 
diff --git a/WebCore/svg/SVGFEMergeNodeElement.cpp b/WebCore/svg/SVGFEMergeNodeElement.cpp
index 65f7a1d..55c3cd0 100644
--- a/WebCore/svg/SVGFEMergeNodeElement.cpp
+++ b/WebCore/svg/SVGFEMergeNodeElement.cpp
@@ -32,6 +32,11 @@ SVGFEMergeNodeElement::SVGFEMergeNodeElement(const QualifiedName& tagName, Docum
 {
 }
 
+PassRefPtr<SVGFEMergeNodeElement> SVGFEMergeNodeElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEMergeNodeElement(tagName, document);
+}
+
 SVGFEMergeNodeElement::~SVGFEMergeNodeElement()
 {
 }
diff --git a/WebCore/svg/SVGFEMergeNodeElement.h b/WebCore/svg/SVGFEMergeNodeElement.h
index 944081f..64ecc51 100644
--- a/WebCore/svg/SVGFEMergeNodeElement.h
+++ b/WebCore/svg/SVGFEMergeNodeElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
     class SVGFEMergeNodeElement : public SVGElement {
     public:
+        static PassRefPtr<SVGFEMergeNodeElement> create(const QualifiedName&, Document*);
+
         SVGFEMergeNodeElement(const QualifiedName&, Document*);
         virtual ~SVGFEMergeNodeElement();
 
diff --git a/WebCore/svg/SVGFEMorphologyElement.cpp b/WebCore/svg/SVGFEMorphologyElement.cpp
index 739517f..82867b5 100644
--- a/WebCore/svg/SVGFEMorphologyElement.cpp
+++ b/WebCore/svg/SVGFEMorphologyElement.cpp
@@ -37,6 +37,11 @@ SVGFEMorphologyElement::SVGFEMorphologyElement(const QualifiedName& tagName, Doc
 {
 }
 
+PassRefPtr<SVGFEMorphologyElement> SVGFEMorphologyElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEMorphologyElement(tagName, document);
+}
+
 SVGFEMorphologyElement::~SVGFEMorphologyElement()
 {
 }
diff --git a/WebCore/svg/SVGFEMorphologyElement.h b/WebCore/svg/SVGFEMorphologyElement.h
index d976b92..d756bf8 100644
--- a/WebCore/svg/SVGFEMorphologyElement.h
+++ b/WebCore/svg/SVGFEMorphologyElement.h
@@ -31,6 +31,8 @@ extern char SVGRadiusYAttrIdentifier[];
 
 class SVGFEMorphologyElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEMorphologyElement> create(const QualifiedName&, Document*);
+
     SVGFEMorphologyElement(const QualifiedName&, Document*);
     virtual ~SVGFEMorphologyElement();
 
diff --git a/WebCore/svg/SVGFEOffsetElement.cpp b/WebCore/svg/SVGFEOffsetElement.cpp
index 006bb3b..a99d725 100644
--- a/WebCore/svg/SVGFEOffsetElement.cpp
+++ b/WebCore/svg/SVGFEOffsetElement.cpp
@@ -32,6 +32,11 @@ SVGFEOffsetElement::SVGFEOffsetElement(const QualifiedName& tagName, Document* d
 {
 }
 
+PassRefPtr<SVGFEOffsetElement> SVGFEOffsetElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEOffsetElement(tagName, document);
+}
+
 SVGFEOffsetElement::~SVGFEOffsetElement()
 {
 }
diff --git a/WebCore/svg/SVGFEOffsetElement.h b/WebCore/svg/SVGFEOffsetElement.h
index 8f93526..abd9003 100644
--- a/WebCore/svg/SVGFEOffsetElement.h
+++ b/WebCore/svg/SVGFEOffsetElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class SVGFEOffsetElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFEOffsetElement> create(const QualifiedName&, Document*);
+
     SVGFEOffsetElement(const QualifiedName&, Document*);
     virtual ~SVGFEOffsetElement();
 
diff --git a/WebCore/svg/SVGFEPointLightElement.cpp b/WebCore/svg/SVGFEPointLightElement.cpp
index 46568ff..7c0901c 100644
--- a/WebCore/svg/SVGFEPointLightElement.cpp
+++ b/WebCore/svg/SVGFEPointLightElement.cpp
@@ -30,6 +30,11 @@ SVGFEPointLightElement::SVGFEPointLightElement(const QualifiedName& tagName, Doc
 {
 }
 
+PassRefPtr<SVGFEPointLightElement> SVGFEPointLightElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFEPointLightElement(tagName, document);
+}
+
 SVGFEPointLightElement::~SVGFEPointLightElement()
 {
 }
diff --git a/WebCore/svg/SVGFEPointLightElement.h b/WebCore/svg/SVGFEPointLightElement.h
index d734f9e..90a9b95 100644
--- a/WebCore/svg/SVGFEPointLightElement.h
+++ b/WebCore/svg/SVGFEPointLightElement.h
@@ -24,8 +24,11 @@
 #include "SVGFELightElement.h"
 
 namespace WebCore {
+
     class SVGFEPointLightElement : public SVGFELightElement {
-        public:
+    public:
+        static PassRefPtr<SVGFEPointLightElement> create(const QualifiedName&, Document*);
+
         SVGFEPointLightElement(const QualifiedName&, Document*);
         virtual ~SVGFEPointLightElement();
 
diff --git a/WebCore/svg/SVGFESpecularLightingElement.cpp b/WebCore/svg/SVGFESpecularLightingElement.cpp
index afbdefe..2e4365c 100644
--- a/WebCore/svg/SVGFESpecularLightingElement.cpp
+++ b/WebCore/svg/SVGFESpecularLightingElement.cpp
@@ -40,6 +40,11 @@ SVGFESpecularLightingElement::SVGFESpecularLightingElement(const QualifiedName&
 {
 }
 
+PassRefPtr<SVGFESpecularLightingElement> SVGFESpecularLightingElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFESpecularLightingElement(tagName, document);
+}
+
 SVGFESpecularLightingElement::~SVGFESpecularLightingElement()
 {
 }
diff --git a/WebCore/svg/SVGFESpecularLightingElement.h b/WebCore/svg/SVGFESpecularLightingElement.h
index a506cf7..4f0fbb0 100644
--- a/WebCore/svg/SVGFESpecularLightingElement.h
+++ b/WebCore/svg/SVGFESpecularLightingElement.h
@@ -33,6 +33,8 @@ extern char SVGKernelUnitLengthYIdentifier[];
 
 class SVGFESpecularLightingElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFESpecularLightingElement> create(const QualifiedName&, Document*);
+
     SVGFESpecularLightingElement(const QualifiedName&, Document*);
     virtual ~SVGFESpecularLightingElement();
     
diff --git a/WebCore/svg/SVGFESpotLightElement.cpp b/WebCore/svg/SVGFESpotLightElement.cpp
index 26d0e16..610151d 100644
--- a/WebCore/svg/SVGFESpotLightElement.cpp
+++ b/WebCore/svg/SVGFESpotLightElement.cpp
@@ -30,6 +30,11 @@ SVGFESpotLightElement::SVGFESpotLightElement(const QualifiedName& tagName, Docum
 {
 }
 
+PassRefPtr<SVGFESpotLightElement> SVGFESpotLightElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFESpotLightElement(tagName, document);
+}
+
 SVGFESpotLightElement::~SVGFESpotLightElement()
 {
 }
diff --git a/WebCore/svg/SVGFESpotLightElement.h b/WebCore/svg/SVGFESpotLightElement.h
index 6903c0b..8707303 100644
--- a/WebCore/svg/SVGFESpotLightElement.h
+++ b/WebCore/svg/SVGFESpotLightElement.h
@@ -24,8 +24,11 @@
 #include "SVGFELightElement.h"
 
 namespace WebCore {
+
     class SVGFESpotLightElement : public SVGFELightElement {
     public:
+        static PassRefPtr<SVGFESpotLightElement> create(const QualifiedName&, Document*);
+
         SVGFESpotLightElement(const QualifiedName&, Document*);
         virtual ~SVGFESpotLightElement();
 
diff --git a/WebCore/svg/SVGFETileElement.cpp b/WebCore/svg/SVGFETileElement.cpp
index f3f5eaf..108e682 100644
--- a/WebCore/svg/SVGFETileElement.cpp
+++ b/WebCore/svg/SVGFETileElement.cpp
@@ -33,6 +33,11 @@ SVGFETileElement::SVGFETileElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGFETileElement> SVGFETileElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFETileElement(tagName, document);
+}
+
 SVGFETileElement::~SVGFETileElement()
 {
 }
diff --git a/WebCore/svg/SVGFETileElement.h b/WebCore/svg/SVGFETileElement.h
index 41355e2..5dc656d 100644
--- a/WebCore/svg/SVGFETileElement.h
+++ b/WebCore/svg/SVGFETileElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class SVGFETileElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFETileElement> create(const QualifiedName&, Document*);
+
     SVGFETileElement(const QualifiedName&, Document*);
     virtual ~SVGFETileElement();
 
diff --git a/WebCore/svg/SVGFETurbulenceElement.cpp b/WebCore/svg/SVGFETurbulenceElement.cpp
index 0415e89..6f9797f 100644
--- a/WebCore/svg/SVGFETurbulenceElement.cpp
+++ b/WebCore/svg/SVGFETurbulenceElement.cpp
@@ -39,6 +39,11 @@ SVGFETurbulenceElement::SVGFETurbulenceElement(const QualifiedName& tagName, Doc
 {
 }
 
+PassRefPtr<SVGFETurbulenceElement> SVGFETurbulenceElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFETurbulenceElement(tagName, document);
+}
+
 SVGFETurbulenceElement::~SVGFETurbulenceElement()
 {
 }
diff --git a/WebCore/svg/SVGFETurbulenceElement.h b/WebCore/svg/SVGFETurbulenceElement.h
index c5820c8..64f46b9 100644
--- a/WebCore/svg/SVGFETurbulenceElement.h
+++ b/WebCore/svg/SVGFETurbulenceElement.h
@@ -38,6 +38,8 @@ enum SVGStitchOptions {
 
 class SVGFETurbulenceElement : public SVGFilterPrimitiveStandardAttributes {
 public:
+    static PassRefPtr<SVGFETurbulenceElement> create(const QualifiedName&, Document*);
+
     SVGFETurbulenceElement(const QualifiedName&, Document*);
     virtual ~SVGFETurbulenceElement();
 
diff --git a/WebCore/svg/SVGFilterElement.cpp b/WebCore/svg/SVGFilterElement.cpp
index eb633c0..e0e087b 100644
--- a/WebCore/svg/SVGFilterElement.cpp
+++ b/WebCore/svg/SVGFilterElement.cpp
@@ -58,6 +58,11 @@ SVGFilterElement::SVGFilterElement(const QualifiedName& tagName, Document* doc)
     // Spec: If the width/height attribute is not specified, the effect is as if a value of "120%" were specified.
 }
 
+PassRefPtr<SVGFilterElement> SVGFilterElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFilterElement(tagName, document);
+}
+
 SVGFilterElement::~SVGFilterElement()
 {
 }
diff --git a/WebCore/svg/SVGFilterElement.h b/WebCore/svg/SVGFilterElement.h
index ddcd953..8120945 100644
--- a/WebCore/svg/SVGFilterElement.h
+++ b/WebCore/svg/SVGFilterElement.h
@@ -40,6 +40,8 @@ class SVGFilterElement : public SVGStyledElement,
                          public SVGLangSpace,
                          public SVGExternalResourcesRequired {
 public:
+    static PassRefPtr<SVGFilterElement> create(const QualifiedName&, Document*);
+
     SVGFilterElement(const QualifiedName&, Document*);
     virtual ~SVGFilterElement();
 
diff --git a/WebCore/svg/SVGFontElement.cpp b/WebCore/svg/SVGFontElement.cpp
index 2d29042..ab394fe 100644
--- a/WebCore/svg/SVGFontElement.cpp
+++ b/WebCore/svg/SVGFontElement.cpp
@@ -46,6 +46,11 @@ SVGFontElement::SVGFontElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGFontElement> SVGFontElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFontElement(tagName, document);
+}
+
 SVGFontElement::~SVGFontElement()
 {
 }
diff --git a/WebCore/svg/SVGFontElement.h b/WebCore/svg/SVGFontElement.h
index 24c2fc5..0a65a9c 100644
--- a/WebCore/svg/SVGFontElement.h
+++ b/WebCore/svg/SVGFontElement.h
@@ -50,9 +50,12 @@ struct SVGKerningPair {
 typedef Vector<SVGKerningPair> KerningPairVector;
 
 class SVGMissingGlyphElement;    
+
 class SVGFontElement : public SVGStyledElement
                      , public SVGExternalResourcesRequired {
 public:
+    static PassRefPtr<SVGFontElement> create(const QualifiedName&, Document*);
+
     SVGFontElement(const QualifiedName&, Document*);
     virtual ~SVGFontElement();
 
diff --git a/WebCore/svg/SVGFontFaceElement.cpp b/WebCore/svg/SVGFontFaceElement.cpp
index bf03aac..ac66e3b 100644
--- a/WebCore/svg/SVGFontFaceElement.cpp
+++ b/WebCore/svg/SVGFontFaceElement.cpp
@@ -56,6 +56,11 @@ SVGFontFaceElement::SVGFontFaceElement(const QualifiedName& tagName, Document* d
     m_fontFaceRule->setDeclaration(m_styleDeclaration.get());
 }
 
+PassRefPtr<SVGFontFaceElement> SVGFontFaceElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFontFaceElement(tagName, document);
+}
+
 SVGFontFaceElement::~SVGFontFaceElement()
 {
 }
diff --git a/WebCore/svg/SVGFontFaceElement.h b/WebCore/svg/SVGFontFaceElement.h
index 7d1f457..f9a2c95 100644
--- a/WebCore/svg/SVGFontFaceElement.h
+++ b/WebCore/svg/SVGFontFaceElement.h
@@ -33,6 +33,8 @@ namespace WebCore {
 
     class SVGFontFaceElement : public SVGElement {
     public:
+        static PassRefPtr<SVGFontFaceElement> create(const QualifiedName&, Document*);
+
         SVGFontFaceElement(const QualifiedName&, Document*);
         virtual ~SVGFontFaceElement();
 
diff --git a/WebCore/svg/SVGFontFaceFormatElement.cpp b/WebCore/svg/SVGFontFaceFormatElement.cpp
index d6e3a3d..6504d1a 100644
--- a/WebCore/svg/SVGFontFaceFormatElement.cpp
+++ b/WebCore/svg/SVGFontFaceFormatElement.cpp
@@ -34,6 +34,11 @@ SVGFontFaceFormatElement::SVGFontFaceFormatElement(const QualifiedName& tagName,
 {
 }
 
+PassRefPtr<SVGFontFaceFormatElement> SVGFontFaceFormatElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFontFaceFormatElement(tagName, document);
+}
+
 void SVGFontFaceFormatElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
 {
     SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
diff --git a/WebCore/svg/SVGFontFaceFormatElement.h b/WebCore/svg/SVGFontFaceFormatElement.h
index eae22bf..c6daef1 100644
--- a/WebCore/svg/SVGFontFaceFormatElement.h
+++ b/WebCore/svg/SVGFontFaceFormatElement.h
@@ -27,6 +27,8 @@ namespace WebCore {
 
 class SVGFontFaceFormatElement : public SVGElement {
 public:
+    static PassRefPtr<SVGFontFaceFormatElement> create(const QualifiedName&, Document*);
+
     SVGFontFaceFormatElement(const QualifiedName&, Document*);
 
     virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
diff --git a/WebCore/svg/SVGFontFaceNameElement.cpp b/WebCore/svg/SVGFontFaceNameElement.cpp
index b9657b3..1c8d2d7 100644
--- a/WebCore/svg/SVGFontFaceNameElement.cpp
+++ b/WebCore/svg/SVGFontFaceNameElement.cpp
@@ -32,6 +32,11 @@ SVGFontFaceNameElement::SVGFontFaceNameElement(const QualifiedName& tagName, Doc
 {
 }
 
+PassRefPtr<SVGFontFaceNameElement> SVGFontFaceNameElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFontFaceNameElement(tagName, document);
+}
+
 PassRefPtr<CSSFontFaceSrcValue> SVGFontFaceNameElement::srcValue() const
 {
     return CSSFontFaceSrcValue::createLocal(getAttribute(SVGNames::nameAttr));
diff --git a/WebCore/svg/SVGFontFaceNameElement.h b/WebCore/svg/SVGFontFaceNameElement.h
index ab71b7d..c12d21d 100644
--- a/WebCore/svg/SVGFontFaceNameElement.h
+++ b/WebCore/svg/SVGFontFaceNameElement.h
@@ -24,9 +24,13 @@
 #include "SVGElement.h"
 
 namespace WebCore {
+
     class CSSFontFaceSrcValue;
+
     class SVGFontFaceNameElement : public SVGElement {
     public:
+        static PassRefPtr<SVGFontFaceNameElement> create(const QualifiedName&, Document*);
+
         SVGFontFaceNameElement(const QualifiedName&, Document*);
         
         PassRefPtr<CSSFontFaceSrcValue> srcValue() const;
diff --git a/WebCore/svg/SVGFontFaceSrcElement.cpp b/WebCore/svg/SVGFontFaceSrcElement.cpp
index 77b2e5e..f032366 100644
--- a/WebCore/svg/SVGFontFaceSrcElement.cpp
+++ b/WebCore/svg/SVGFontFaceSrcElement.cpp
@@ -38,6 +38,11 @@ SVGFontFaceSrcElement::SVGFontFaceSrcElement(const QualifiedName& tagName, Docum
 {
 }
 
+PassRefPtr<SVGFontFaceSrcElement> SVGFontFaceSrcElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFontFaceSrcElement(tagName, document);
+}
+
 PassRefPtr<CSSValueList> SVGFontFaceSrcElement::srcValue() const
 {
     RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
diff --git a/WebCore/svg/SVGFontFaceSrcElement.h b/WebCore/svg/SVGFontFaceSrcElement.h
index 0277e9a..1ca603c 100644
--- a/WebCore/svg/SVGFontFaceSrcElement.h
+++ b/WebCore/svg/SVGFontFaceSrcElement.h
@@ -27,6 +27,8 @@ namespace WebCore {
     class CSSValueList;
     class SVGFontFaceSrcElement : public SVGElement {
     public:
+        static PassRefPtr<SVGFontFaceSrcElement> create(const QualifiedName&, Document*);
+
         SVGFontFaceSrcElement(const QualifiedName&, Document*);
         
         PassRefPtr<CSSValueList> srcValue() const;
diff --git a/WebCore/svg/SVGFontFaceUriElement.cpp b/WebCore/svg/SVGFontFaceUriElement.cpp
index a7ad370..2237c1e 100644
--- a/WebCore/svg/SVGFontFaceUriElement.cpp
+++ b/WebCore/svg/SVGFontFaceUriElement.cpp
@@ -41,6 +41,11 @@ SVGFontFaceUriElement::SVGFontFaceUriElement(const QualifiedName& tagName, Docum
 {
 }
 
+PassRefPtr<SVGFontFaceUriElement> SVGFontFaceUriElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGFontFaceUriElement(tagName, document);
+}
+
 SVGFontFaceUriElement::~SVGFontFaceUriElement()
 {
     if (m_cachedFont)
diff --git a/WebCore/svg/SVGFontFaceUriElement.h b/WebCore/svg/SVGFontFaceUriElement.h
index 3e53dd3..2e75896 100644
--- a/WebCore/svg/SVGFontFaceUriElement.h
+++ b/WebCore/svg/SVGFontFaceUriElement.h
@@ -32,8 +32,10 @@ namespace WebCore {
 
     class SVGFontFaceUriElement : public SVGElement, public CachedResourceClient {
     public:
+        static PassRefPtr<SVGFontFaceUriElement> create(const QualifiedName&, Document*);
+
         SVGFontFaceUriElement(const QualifiedName&, Document*);
-        ~SVGFontFaceUriElement();
+        virtual ~SVGFontFaceUriElement();
         
         PassRefPtr<CSSFontFaceSrcValue> srcValue() const;
 
diff --git a/WebCore/svg/SVGForeignObjectElement.cpp b/WebCore/svg/SVGForeignObjectElement.cpp
index 3e9e90e..66d9b07 100644
--- a/WebCore/svg/SVGForeignObjectElement.cpp
+++ b/WebCore/svg/SVGForeignObjectElement.cpp
@@ -45,6 +45,11 @@ SVGForeignObjectElement::SVGForeignObjectElement(const QualifiedName& tagName, D
 {
 }
 
+PassRefPtr<SVGForeignObjectElement> SVGForeignObjectElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGForeignObjectElement(tagName, document);
+}
+
 SVGForeignObjectElement::~SVGForeignObjectElement()
 {
 }
diff --git a/WebCore/svg/SVGForeignObjectElement.h b/WebCore/svg/SVGForeignObjectElement.h
index 5ce16fd..3d0a990 100644
--- a/WebCore/svg/SVGForeignObjectElement.h
+++ b/WebCore/svg/SVGForeignObjectElement.h
@@ -35,6 +35,8 @@ namespace WebCore {
                                     public SVGLangSpace,
                                     public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGForeignObjectElement> create(const QualifiedName&, Document*);
+
         SVGForeignObjectElement(const QualifiedName&, Document*);
         virtual ~SVGForeignObjectElement();
 
@@ -43,7 +45,7 @@ namespace WebCore {
         virtual void svgAttributeChanged(const QualifiedName&);
         virtual void synchronizeProperty(const QualifiedName&);
 
-        bool childShouldCreateRenderer(Node*) const;
+        virtual bool childShouldCreateRenderer(Node*) const;
         virtual RenderObject* createRenderer(RenderArena* arena, RenderStyle* style);
 
     private:
diff --git a/WebCore/svg/SVGGElement.cpp b/WebCore/svg/SVGGElement.cpp
index 0c85a03..53b1e59 100644
--- a/WebCore/svg/SVGGElement.cpp
+++ b/WebCore/svg/SVGGElement.cpp
@@ -37,6 +37,11 @@ SVGGElement::SVGGElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGGElement> SVGGElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGGElement(tagName, document);
+}
+
 SVGGElement::~SVGGElement()
 {
 }
diff --git a/WebCore/svg/SVGGElement.h b/WebCore/svg/SVGGElement.h
index 107fa3c..5d142ee 100644
--- a/WebCore/svg/SVGGElement.h
+++ b/WebCore/svg/SVGGElement.h
@@ -34,6 +34,8 @@ namespace WebCore {
                         public SVGLangSpace,
                         public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGGElement> create(const QualifiedName&, Document*);
+
         SVGGElement(const QualifiedName&, Document*);
         virtual ~SVGGElement();
 
diff --git a/WebCore/svg/SVGGlyphElement.cpp b/WebCore/svg/SVGGlyphElement.cpp
index 2c84841..17642cc 100644
--- a/WebCore/svg/SVGGlyphElement.cpp
+++ b/WebCore/svg/SVGGlyphElement.cpp
@@ -42,6 +42,11 @@ SVGGlyphElement::SVGGlyphElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGGlyphElement> SVGGlyphElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGGlyphElement(tagName, document);
+}
+
 SVGGlyphElement::~SVGGlyphElement()
 {
 }
diff --git a/WebCore/svg/SVGGlyphElement.h b/WebCore/svg/SVGGlyphElement.h
index 5b5408d..cd26c96 100644
--- a/WebCore/svg/SVGGlyphElement.h
+++ b/WebCore/svg/SVGGlyphElement.h
@@ -103,6 +103,8 @@ namespace WebCore {
 
     class SVGGlyphElement : public SVGStyledElement {
     public:
+        static PassRefPtr<SVGGlyphElement> create(const QualifiedName&, Document*);
+
         SVGGlyphElement(const QualifiedName&, Document*);
         virtual ~SVGGlyphElement();
 
diff --git a/WebCore/svg/SVGHKernElement.cpp b/WebCore/svg/SVGHKernElement.cpp
index eb8a4b5..f444dd6 100644
--- a/WebCore/svg/SVGHKernElement.cpp
+++ b/WebCore/svg/SVGHKernElement.cpp
@@ -40,6 +40,11 @@ SVGHKernElement::SVGHKernElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGHKernElement> SVGHKernElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGHKernElement(tagName, document);
+}
+
 SVGHKernElement::~SVGHKernElement()
 {
 }
diff --git a/WebCore/svg/SVGHKernElement.h b/WebCore/svg/SVGHKernElement.h
index bd893d8..5985aee 100644
--- a/WebCore/svg/SVGHKernElement.h
+++ b/WebCore/svg/SVGHKernElement.h
@@ -36,6 +36,8 @@ namespace WebCore {
 
     class SVGHKernElement : public SVGElement {
     public:
+        static PassRefPtr<SVGHKernElement> create(const QualifiedName&, Document*);
+
         SVGHKernElement(const QualifiedName&, Document*);
         virtual ~SVGHKernElement();
 
diff --git a/WebCore/svg/SVGImageElement.cpp b/WebCore/svg/SVGImageElement.cpp
index 0e4fb13..70515d6 100644
--- a/WebCore/svg/SVGImageElement.cpp
+++ b/WebCore/svg/SVGImageElement.cpp
@@ -50,6 +50,11 @@ SVGImageElement::SVGImageElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGImageElement> SVGImageElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGImageElement(tagName, document);
+}
+
 SVGImageElement::~SVGImageElement()
 {
 }
diff --git a/WebCore/svg/SVGImageElement.h b/WebCore/svg/SVGImageElement.h
index cf4cf88..474073f 100644
--- a/WebCore/svg/SVGImageElement.h
+++ b/WebCore/svg/SVGImageElement.h
@@ -40,6 +40,8 @@ namespace WebCore {
                             public SVGExternalResourcesRequired,
                             public SVGURIReference {
     public:
+        static PassRefPtr<SVGImageElement> create(const QualifiedName&, Document*);
+
         SVGImageElement(const QualifiedName&, Document*);
         virtual ~SVGImageElement();
         
diff --git a/WebCore/svg/SVGLineElement.cpp b/WebCore/svg/SVGLineElement.cpp
index ebbcdf6..1911529 100644
--- a/WebCore/svg/SVGLineElement.cpp
+++ b/WebCore/svg/SVGLineElement.cpp
@@ -44,6 +44,11 @@ SVGLineElement::SVGLineElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGLineElement> SVGLineElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGLineElement(tagName, document);
+}
+
 SVGLineElement::~SVGLineElement()
 {
 }
diff --git a/WebCore/svg/SVGLineElement.h b/WebCore/svg/SVGLineElement.h
index cdfa2aa..1bfa189 100644
--- a/WebCore/svg/SVGLineElement.h
+++ b/WebCore/svg/SVGLineElement.h
@@ -36,6 +36,8 @@ namespace WebCore {
                            public SVGLangSpace,
                            public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGLineElement> create(const QualifiedName&, Document*);
+
         SVGLineElement(const QualifiedName&, Document*);
         virtual ~SVGLineElement();
         
diff --git a/WebCore/svg/SVGLinearGradientElement.cpp b/WebCore/svg/SVGLinearGradientElement.cpp
index d3c81b0..c8a8337 100644
--- a/WebCore/svg/SVGLinearGradientElement.cpp
+++ b/WebCore/svg/SVGLinearGradientElement.cpp
@@ -49,6 +49,11 @@ SVGLinearGradientElement::SVGLinearGradientElement(const QualifiedName& tagName,
     // Spec: If the x2 attribute is not specified, the effect is as if a value of "100%" were specified.
 }
 
+PassRefPtr<SVGLinearGradientElement> SVGLinearGradientElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGLinearGradientElement(tagName, document);
+}
+
 SVGLinearGradientElement::~SVGLinearGradientElement()
 {
 }
diff --git a/WebCore/svg/SVGLinearGradientElement.h b/WebCore/svg/SVGLinearGradientElement.h
index b329d8b..08a312b 100644
--- a/WebCore/svg/SVGLinearGradientElement.h
+++ b/WebCore/svg/SVGLinearGradientElement.h
@@ -31,6 +31,8 @@ namespace WebCore {
 
     class SVGLinearGradientElement : public SVGGradientElement {
     public:
+        static PassRefPtr<SVGLinearGradientElement> create(const QualifiedName&, Document*);
+
         SVGLinearGradientElement(const QualifiedName&, Document*);
         virtual ~SVGLinearGradientElement();
 
diff --git a/WebCore/svg/SVGMPathElement.cpp b/WebCore/svg/SVGMPathElement.cpp
index 7165c11..a7dd043 100644
--- a/WebCore/svg/SVGMPathElement.cpp
+++ b/WebCore/svg/SVGMPathElement.cpp
@@ -32,6 +32,11 @@ SVGMPathElement::SVGMPathElement(const QualifiedName& qname, Document* doc)
 {
 }
 
+PassRefPtr<SVGMPathElement> SVGMPathElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGMPathElement(tagName, document);
+}
+
 SVGMPathElement::~SVGMPathElement()
 {
 }
diff --git a/WebCore/svg/SVGMPathElement.h b/WebCore/svg/SVGMPathElement.h
index 7543b6e..9223bf9 100644
--- a/WebCore/svg/SVGMPathElement.h
+++ b/WebCore/svg/SVGMPathElement.h
@@ -32,6 +32,8 @@ namespace WebCore {
                             public SVGURIReference,
                             public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGMPathElement> create(const QualifiedName&, Document*);
+
         SVGMPathElement(const QualifiedName&, Document*);
         virtual ~SVGMPathElement();
         
diff --git a/WebCore/svg/SVGMarkerElement.cpp b/WebCore/svg/SVGMarkerElement.cpp
index 8e6296d..cd22f70 100644
--- a/WebCore/svg/SVGMarkerElement.cpp
+++ b/WebCore/svg/SVGMarkerElement.cpp
@@ -53,6 +53,11 @@ SVGMarkerElement::SVGMarkerElement(const QualifiedName& tagName, Document* doc)
     // Spec: If the markerWidth/markerHeight attribute is not specified, the effect is as if a value of "3" were specified.
 }
 
+PassRefPtr<SVGMarkerElement> SVGMarkerElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGMarkerElement(tagName, document);
+}
+
 SVGMarkerElement::~SVGMarkerElement()
 {
 }
diff --git a/WebCore/svg/SVGMarkerElement.h b/WebCore/svg/SVGMarkerElement.h
index 436aaa7..e3631e1 100644
--- a/WebCore/svg/SVGMarkerElement.h
+++ b/WebCore/svg/SVGMarkerElement.h
@@ -53,6 +53,8 @@ public:
         SVG_MARKER_ORIENT_ANGLE      = 2
     };
 
+    static PassRefPtr<SVGMarkerElement> create(const QualifiedName&, Document*);
+
     SVGMarkerElement(const QualifiedName&, Document*);
     virtual ~SVGMarkerElement();
 
diff --git a/WebCore/svg/SVGMaskElement.cpp b/WebCore/svg/SVGMaskElement.cpp
index 4f245ce..b9d97d0 100644
--- a/WebCore/svg/SVGMaskElement.cpp
+++ b/WebCore/svg/SVGMaskElement.cpp
@@ -54,6 +54,11 @@ SVGMaskElement::SVGMaskElement(const QualifiedName& tagName, Document* doc)
     // Spec: If the width/height attribute is not specified, the effect is as if a value of "120%" were specified.
 }
 
+PassRefPtr<SVGMaskElement> SVGMaskElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGMaskElement(tagName, document);
+}
+
 SVGMaskElement::~SVGMaskElement()
 {
 }
diff --git a/WebCore/svg/SVGMaskElement.h b/WebCore/svg/SVGMaskElement.h
index 91d9bc9..0ca6fdc 100644
--- a/WebCore/svg/SVGMaskElement.h
+++ b/WebCore/svg/SVGMaskElement.h
@@ -36,6 +36,8 @@ namespace WebCore {
                            public SVGLangSpace,
                            public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGMaskElement> create(const QualifiedName&, Document*);
+
         SVGMaskElement(const QualifiedName&, Document*);
         virtual ~SVGMaskElement();
 
diff --git a/WebCore/svg/SVGMetadataElement.cpp b/WebCore/svg/SVGMetadataElement.cpp
index 28a34d6..8e36226 100644
--- a/WebCore/svg/SVGMetadataElement.cpp
+++ b/WebCore/svg/SVGMetadataElement.cpp
@@ -29,6 +29,11 @@ SVGMetadataElement::SVGMetadataElement(const QualifiedName& tagName, Document *d
 {
 }
 
+PassRefPtr<SVGMetadataElement> SVGMetadataElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGMetadataElement(tagName, document);
+}
+
 SVGMetadataElement::~SVGMetadataElement()
 {
 }
diff --git a/WebCore/svg/SVGMetadataElement.h b/WebCore/svg/SVGMetadataElement.h
index 6323f12..db56631 100644
--- a/WebCore/svg/SVGMetadataElement.h
+++ b/WebCore/svg/SVGMetadataElement.h
@@ -25,8 +25,11 @@
 #include "SVGElement.h"
 
 namespace WebCore {
+
     class SVGMetadataElement : public SVGElement {
     public:
+        static PassRefPtr<SVGMetadataElement> create(const QualifiedName&, Document*);
+
         SVGMetadataElement(const QualifiedName&, Document*);
         virtual ~SVGMetadataElement();
     };
diff --git a/WebCore/svg/SVGMissingGlyphElement.cpp b/WebCore/svg/SVGMissingGlyphElement.cpp
index 3fe531c..86d57a4 100644
--- a/WebCore/svg/SVGMissingGlyphElement.cpp
+++ b/WebCore/svg/SVGMissingGlyphElement.cpp
@@ -29,6 +29,11 @@ SVGMissingGlyphElement::SVGMissingGlyphElement(const QualifiedName& tagName, Doc
 {
 }
 
+PassRefPtr<SVGMissingGlyphElement> SVGMissingGlyphElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGMissingGlyphElement(tagName, document);
+}
+
 }
 
 #endif // ENABLE(SVG_FONTS)
diff --git a/WebCore/svg/SVGMissingGlyphElement.h b/WebCore/svg/SVGMissingGlyphElement.h
index 9dde843..9391063 100644
--- a/WebCore/svg/SVGMissingGlyphElement.h
+++ b/WebCore/svg/SVGMissingGlyphElement.h
@@ -26,6 +26,8 @@
 namespace WebCore {
     class SVGMissingGlyphElement : public SVGStyledElement {
     public:
+        static PassRefPtr<SVGMissingGlyphElement> create(const QualifiedName&, Document*);
+
         SVGMissingGlyphElement(const QualifiedName&, Document*);
 
         virtual bool rendererIsNeeded(RenderStyle*) { return false; }
diff --git a/WebCore/svg/SVGPathElement.cpp b/WebCore/svg/SVGPathElement.cpp
index 6d801fb..be686a8 100644
--- a/WebCore/svg/SVGPathElement.cpp
+++ b/WebCore/svg/SVGPathElement.cpp
@@ -52,6 +52,11 @@ SVGPathElement::SVGPathElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGPathElement> SVGPathElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGPathElement(tagName, document);
+}
+
 SVGPathElement::~SVGPathElement()
 {
 }
diff --git a/WebCore/svg/SVGPathElement.h b/WebCore/svg/SVGPathElement.h
index 07612c6..7f058de 100644
--- a/WebCore/svg/SVGPathElement.h
+++ b/WebCore/svg/SVGPathElement.h
@@ -56,6 +56,8 @@ namespace WebCore {
                            public SVGExternalResourcesRequired,
                            public SVGAnimatedPathData {
     public:
+        static PassRefPtr<SVGPathElement> create(const QualifiedName&, Document*);
+
         SVGPathElement(const QualifiedName&, Document*);
         virtual ~SVGPathElement();
         
diff --git a/WebCore/svg/SVGPatternElement.cpp b/WebCore/svg/SVGPatternElement.cpp
index 94d3572..57e3b25 100644
--- a/WebCore/svg/SVGPatternElement.cpp
+++ b/WebCore/svg/SVGPatternElement.cpp
@@ -66,6 +66,11 @@ SVGPatternElement::SVGPatternElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGPatternElement> SVGPatternElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGPatternElement(tagName, document);
+}
+
 SVGPatternElement::~SVGPatternElement()
 {
 }
diff --git a/WebCore/svg/SVGPatternElement.h b/WebCore/svg/SVGPatternElement.h
index 32ec808..a3d0587 100644
--- a/WebCore/svg/SVGPatternElement.h
+++ b/WebCore/svg/SVGPatternElement.h
@@ -43,6 +43,8 @@ namespace WebCore {
                               public SVGExternalResourcesRequired,
                               public SVGFitToViewBox {
     public:
+        static PassRefPtr<SVGPatternElement> create(const QualifiedName&, Document*);
+
         SVGPatternElement(const QualifiedName&, Document*);
         virtual ~SVGPatternElement();
         
diff --git a/WebCore/svg/SVGPolygonElement.cpp b/WebCore/svg/SVGPolygonElement.cpp
index c7ab09b..ee1dc6d 100644
--- a/WebCore/svg/SVGPolygonElement.cpp
+++ b/WebCore/svg/SVGPolygonElement.cpp
@@ -32,6 +32,11 @@ SVGPolygonElement::SVGPolygonElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<SVGPolygonElement> SVGPolygonElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGPolygonElement(tagName, document);
+}
+
 SVGPolygonElement::~SVGPolygonElement()
 {
 }
diff --git a/WebCore/svg/SVGPolygonElement.h b/WebCore/svg/SVGPolygonElement.h
index 76b11a2..e629df5 100644
--- a/WebCore/svg/SVGPolygonElement.h
+++ b/WebCore/svg/SVGPolygonElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
     class SVGPolygonElement : public SVGPolyElement {
     public:
+        static PassRefPtr<SVGPolygonElement> create(const QualifiedName&, Document*);
+
         SVGPolygonElement(const QualifiedName&, Document*);
         virtual ~SVGPolygonElement();
 
diff --git a/WebCore/svg/SVGPolylineElement.cpp b/WebCore/svg/SVGPolylineElement.cpp
index a1dfcd6..e69d6d6 100644
--- a/WebCore/svg/SVGPolylineElement.cpp
+++ b/WebCore/svg/SVGPolylineElement.cpp
@@ -32,6 +32,11 @@ SVGPolylineElement::SVGPolylineElement(const QualifiedName& tagName, Document* d
 {
 }
 
+PassRefPtr<SVGPolylineElement> SVGPolylineElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGPolylineElement(tagName, document);
+}
+
 SVGPolylineElement::~SVGPolylineElement()
 {
 }
diff --git a/WebCore/svg/SVGPolylineElement.h b/WebCore/svg/SVGPolylineElement.h
index fbdaa81..2672deb 100644
--- a/WebCore/svg/SVGPolylineElement.h
+++ b/WebCore/svg/SVGPolylineElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
     class SVGPolylineElement : public SVGPolyElement {
     public:
+        static PassRefPtr<SVGPolylineElement> create(const QualifiedName&, Document*);
+
         SVGPolylineElement(const QualifiedName&, Document*);
         virtual ~SVGPolylineElement();
 
diff --git a/WebCore/svg/SVGRadialGradientElement.cpp b/WebCore/svg/SVGRadialGradientElement.cpp
index 4448c67..6abe05c 100644
--- a/WebCore/svg/SVGRadialGradientElement.cpp
+++ b/WebCore/svg/SVGRadialGradientElement.cpp
@@ -51,6 +51,11 @@ SVGRadialGradientElement::SVGRadialGradientElement(const QualifiedName& tagName,
     // Spec: If the cx/cy/r attribute is not specified, the effect is as if a value of "50%" were specified.
 }
 
+PassRefPtr<SVGRadialGradientElement> SVGRadialGradientElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGRadialGradientElement(tagName, document);
+}
+
 SVGRadialGradientElement::~SVGRadialGradientElement()
 {
 }
diff --git a/WebCore/svg/SVGRadialGradientElement.h b/WebCore/svg/SVGRadialGradientElement.h
index 2c3db56..7472bcb 100644
--- a/WebCore/svg/SVGRadialGradientElement.h
+++ b/WebCore/svg/SVGRadialGradientElement.h
@@ -31,6 +31,8 @@ namespace WebCore {
 
     class SVGRadialGradientElement : public SVGGradientElement {
     public:
+        static PassRefPtr<SVGRadialGradientElement> create(const QualifiedName&, Document*);
+
         SVGRadialGradientElement(const QualifiedName&, Document*);
         virtual ~SVGRadialGradientElement();
 
diff --git a/WebCore/svg/SVGRectElement.cpp b/WebCore/svg/SVGRectElement.cpp
index d5451e2..88bc4ca 100644
--- a/WebCore/svg/SVGRectElement.cpp
+++ b/WebCore/svg/SVGRectElement.cpp
@@ -45,6 +45,11 @@ SVGRectElement::SVGRectElement(const QualifiedName& tagName, Document *doc)
 {
 }
 
+PassRefPtr<SVGRectElement> SVGRectElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGRectElement(tagName, document);
+}
+
 SVGRectElement::~SVGRectElement()
 {
 }
diff --git a/WebCore/svg/SVGRectElement.h b/WebCore/svg/SVGRectElement.h
index bc90919..0a3e9b7 100644
--- a/WebCore/svg/SVGRectElement.h
+++ b/WebCore/svg/SVGRectElement.h
@@ -34,6 +34,8 @@ namespace WebCore {
                            public SVGLangSpace,
                            public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGRectElement> create(const QualifiedName&, Document*);
+
         SVGRectElement(const QualifiedName&, Document*);
         virtual ~SVGRectElement();
         
diff --git a/WebCore/svg/SVGSVGElement.cpp b/WebCore/svg/SVGSVGElement.cpp
index 6347726..e102058 100644
--- a/WebCore/svg/SVGSVGElement.cpp
+++ b/WebCore/svg/SVGSVGElement.cpp
@@ -78,6 +78,11 @@ SVGSVGElement::SVGSVGElement(const QualifiedName& tagName, Document* doc)
     doc->registerForDocumentActivationCallbacks(this);
 }
 
+PassRefPtr<SVGSVGElement> SVGSVGElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGSVGElement(tagName, document);
+}
+
 SVGSVGElement::~SVGSVGElement()
 {
     document()->unregisterForDocumentActivationCallbacks(this);
diff --git a/WebCore/svg/SVGSVGElement.h b/WebCore/svg/SVGSVGElement.h
index b7c9b16..8e721fa 100644
--- a/WebCore/svg/SVGSVGElement.h
+++ b/WebCore/svg/SVGSVGElement.h
@@ -45,6 +45,8 @@ namespace WebCore {
                           public SVGFitToViewBox,
                           public SVGZoomAndPan {
     public:
+        static PassRefPtr<SVGSVGElement> create(const QualifiedName&, Document*);
+
         SVGSVGElement(const QualifiedName&, Document*);
         virtual ~SVGSVGElement();
 
diff --git a/WebCore/svg/SVGScriptElement.cpp b/WebCore/svg/SVGScriptElement.cpp
index 4109aad..dc2314f 100644
--- a/WebCore/svg/SVGScriptElement.cpp
+++ b/WebCore/svg/SVGScriptElement.cpp
@@ -31,8 +31,8 @@
 
 namespace WebCore {
 
-SVGScriptElement::SVGScriptElement(const QualifiedName& tagName, Document* doc, bool createdByParser)
-    : SVGElement(tagName, doc)
+SVGScriptElement::SVGScriptElement(const QualifiedName& tagName, Document* document, bool createdByParser)
+    : SVGElement(tagName, document)
     , SVGURIReference()
     , SVGExternalResourcesRequired()
     , m_data(this, this)
@@ -40,6 +40,11 @@ SVGScriptElement::SVGScriptElement(const QualifiedName& tagName, Document* doc,
     m_data.setCreatedByParser(createdByParser);
 }
 
+PassRefPtr<SVGScriptElement> SVGScriptElement::create(const QualifiedName& tagName, Document* document, bool createdByParser)
+{
+    return new SVGScriptElement(tagName, document, createdByParser);
+}
+
 SVGScriptElement::~SVGScriptElement()
 {
 }
diff --git a/WebCore/svg/SVGScriptElement.h b/WebCore/svg/SVGScriptElement.h
index 8f2a393..27978e4 100644
--- a/WebCore/svg/SVGScriptElement.h
+++ b/WebCore/svg/SVGScriptElement.h
@@ -34,6 +34,8 @@ namespace WebCore {
                            , public SVGExternalResourcesRequired
                            , public ScriptElement {
     public:
+        static PassRefPtr<SVGScriptElement> create(const QualifiedName&, Document*, bool createdByParser);
+
         SVGScriptElement(const QualifiedName&, Document*, bool createdByParser);
         virtual ~SVGScriptElement();
 
diff --git a/WebCore/svg/SVGSetElement.cpp b/WebCore/svg/SVGSetElement.cpp
index eceed12..3408775 100644
--- a/WebCore/svg/SVGSetElement.cpp
+++ b/WebCore/svg/SVGSetElement.cpp
@@ -24,10 +24,16 @@
 
 namespace WebCore {
     
-SVGSetElement::SVGSetElement(const QualifiedName& tagName, Document *doc)
-    : SVGAnimateElement(tagName, doc)
+SVGSetElement::SVGSetElement(const QualifiedName& tagName, Document* document)
+    : SVGAnimateElement(tagName, document)
 {
 }
+
+PassRefPtr<SVGSetElement> SVGSetElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGSetElement(tagName, document);
+}
+
 }
 
 // vim:ts=4:noet
diff --git a/WebCore/svg/SVGSetElement.h b/WebCore/svg/SVGSetElement.h
index 975ad27..2257ac6 100644
--- a/WebCore/svg/SVGSetElement.h
+++ b/WebCore/svg/SVGSetElement.h
@@ -25,9 +25,12 @@
 #include "SVGAnimateElement.h"
 
 namespace WebCore {
+
     // SVGAnimateElement implements superset of the functionality.
     class SVGSetElement : public SVGAnimateElement {
     public:
+        static PassRefPtr<SVGSetElement> create(const QualifiedName&, Document*);
+
         SVGSetElement(const QualifiedName&, Document*);
     };
 
diff --git a/WebCore/svg/SVGStopElement.cpp b/WebCore/svg/SVGStopElement.cpp
index 317774a..8c9e1d3 100644
--- a/WebCore/svg/SVGStopElement.cpp
+++ b/WebCore/svg/SVGStopElement.cpp
@@ -38,6 +38,11 @@ SVGStopElement::SVGStopElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGStopElement> SVGStopElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGStopElement(tagName, document);
+}
+
 SVGStopElement::~SVGStopElement()
 {
 }
diff --git a/WebCore/svg/SVGStopElement.h b/WebCore/svg/SVGStopElement.h
index 1fb60b5..c0f91b2 100644
--- a/WebCore/svg/SVGStopElement.h
+++ b/WebCore/svg/SVGStopElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
     class SVGStopElement : public SVGStyledElement {
     public:
+        static PassRefPtr<SVGStopElement> create(const QualifiedName&, Document*);
+
         SVGStopElement(const QualifiedName&, Document*);
         virtual ~SVGStopElement();
 
diff --git a/WebCore/svg/SVGStyleElement.cpp b/WebCore/svg/SVGStyleElement.cpp
index bb50e67..b328b97 100644
--- a/WebCore/svg/SVGStyleElement.cpp
+++ b/WebCore/svg/SVGStyleElement.cpp
@@ -36,11 +36,15 @@ namespace WebCore {
 
 SVGStyleElement::SVGStyleElement(const QualifiedName& tagName, Document* document, bool createdByParser)
     : SVGElement(tagName, document)
-    , SVGLangSpace()
     , StyleElement(document, createdByParser)
 {
 }
 
+PassRefPtr<SVGStyleElement> SVGStyleElement::create(const QualifiedName& tagName, Document* document, bool createdByParser)
+{
+    return new SVGStyleElement(tagName, document, createdByParser);
+}
+
 const AtomicString& SVGStyleElement::type() const
 {
     DEFINE_STATIC_LOCAL(const AtomicString, defaultValue, ("text/css"));
diff --git a/WebCore/svg/SVGStyleElement.h b/WebCore/svg/SVGStyleElement.h
index 6385039..7fba412 100644
--- a/WebCore/svg/SVGStyleElement.h
+++ b/WebCore/svg/SVGStyleElement.h
@@ -32,6 +32,8 @@ class SVGStyleElement : public SVGElement
                       , public SVGLangSpace
                       , public StyleElement {
 public:
+    static PassRefPtr<SVGStyleElement> create(const QualifiedName&, Document*, bool createdByParser);
+
     SVGStyleElement(const QualifiedName&, Document*, bool createdByParser);
 
     virtual void parseMappedAttribute(Attribute*);
diff --git a/WebCore/svg/SVGSwitchElement.cpp b/WebCore/svg/SVGSwitchElement.cpp
index 5f397af..748390d 100644
--- a/WebCore/svg/SVGSwitchElement.cpp
+++ b/WebCore/svg/SVGSwitchElement.cpp
@@ -35,6 +35,11 @@ SVGSwitchElement::SVGSwitchElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGSwitchElement> SVGSwitchElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGSwitchElement(tagName, document);
+}
+
 SVGSwitchElement::~SVGSwitchElement()
 {
 }
diff --git a/WebCore/svg/SVGSwitchElement.h b/WebCore/svg/SVGSwitchElement.h
index 83b02d5..af5a694 100644
--- a/WebCore/svg/SVGSwitchElement.h
+++ b/WebCore/svg/SVGSwitchElement.h
@@ -33,6 +33,8 @@ namespace WebCore {
                              public SVGLangSpace,
                              public SVGExternalResourcesRequired {
     public:
+        static PassRefPtr<SVGSwitchElement> create(const QualifiedName&, Document*);
+
         SVGSwitchElement(const QualifiedName&, Document*);
         virtual ~SVGSwitchElement();
         
diff --git a/WebCore/svg/SVGSymbolElement.cpp b/WebCore/svg/SVGSymbolElement.cpp
index 9c110cb..c6474e4 100644
--- a/WebCore/svg/SVGSymbolElement.cpp
+++ b/WebCore/svg/SVGSymbolElement.cpp
@@ -35,6 +35,11 @@ SVGSymbolElement::SVGSymbolElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGSymbolElement> SVGSymbolElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGSymbolElement(tagName, document);
+}
+
 SVGSymbolElement::~SVGSymbolElement()
 {
 }
diff --git a/WebCore/svg/SVGSymbolElement.h b/WebCore/svg/SVGSymbolElement.h
index 7d6fdd3..da6b442 100644
--- a/WebCore/svg/SVGSymbolElement.h
+++ b/WebCore/svg/SVGSymbolElement.h
@@ -34,6 +34,8 @@ namespace WebCore {
                              public SVGExternalResourcesRequired,
                              public SVGFitToViewBox {
     public:
+        static PassRefPtr<SVGSymbolElement> create(const QualifiedName&, Document*);
+
         SVGSymbolElement(const QualifiedName&, Document*);
         virtual ~SVGSymbolElement();
 
diff --git a/WebCore/svg/SVGTRefElement.cpp b/WebCore/svg/SVGTRefElement.cpp
index c140f05..7476c27 100644
--- a/WebCore/svg/SVGTRefElement.cpp
+++ b/WebCore/svg/SVGTRefElement.cpp
@@ -38,6 +38,11 @@ SVGTRefElement::SVGTRefElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGTRefElement> SVGTRefElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGTRefElement(tagName, document);
+}
+
 SVGTRefElement::~SVGTRefElement()
 {
 }
diff --git a/WebCore/svg/SVGTRefElement.h b/WebCore/svg/SVGTRefElement.h
index f86f015..5aa9873 100644
--- a/WebCore/svg/SVGTRefElement.h
+++ b/WebCore/svg/SVGTRefElement.h
@@ -30,6 +30,8 @@ namespace WebCore {
     class SVGTRefElement : public SVGTextPositioningElement,
                            public SVGURIReference {
     public:
+        static PassRefPtr<SVGTRefElement> create(const QualifiedName&, Document*);
+
         SVGTRefElement(const QualifiedName&, Document*);
         virtual ~SVGTRefElement();
 
@@ -38,7 +40,7 @@ namespace WebCore {
         virtual void synchronizeProperty(const QualifiedName&);
 
         virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
-        bool childShouldCreateRenderer(Node*) const;
+        virtual bool childShouldCreateRenderer(Node*) const;
 
     private:
         void updateReferencedText();
diff --git a/WebCore/svg/SVGTSpanElement.cpp b/WebCore/svg/SVGTSpanElement.cpp
index ef36780..84dd613 100644
--- a/WebCore/svg/SVGTSpanElement.cpp
+++ b/WebCore/svg/SVGTSpanElement.cpp
@@ -34,8 +34,9 @@ SVGTSpanElement::SVGTSpanElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
-SVGTSpanElement::~SVGTSpanElement()
+PassRefPtr<SVGTSpanElement> SVGTSpanElement::create(const QualifiedName& tagName, Document* document)
 {
+    return new SVGTSpanElement(tagName, document);
 }
 
 bool SVGTSpanElement::childShouldCreateRenderer(Node* child) const
diff --git a/WebCore/svg/SVGTSpanElement.h b/WebCore/svg/SVGTSpanElement.h
index 3b9357b..9b276a8 100644
--- a/WebCore/svg/SVGTSpanElement.h
+++ b/WebCore/svg/SVGTSpanElement.h
@@ -28,11 +28,13 @@ namespace WebCore {
 
     class SVGTSpanElement : public SVGTextPositioningElement {
     public:
+        static PassRefPtr<SVGTSpanElement> create(const QualifiedName&, Document*);
+
+    private:
         SVGTSpanElement(const QualifiedName&, Document*);
-        virtual ~SVGTSpanElement();
                 
         virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
-        bool childShouldCreateRenderer(Node*) const;
+        virtual bool childShouldCreateRenderer(Node*) const;
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGTextContentElement.h b/WebCore/svg/SVGTextContentElement.h
index d006a89..534f21e 100644
--- a/WebCore/svg/SVGTextContentElement.h
+++ b/WebCore/svg/SVGTextContentElement.h
@@ -42,7 +42,6 @@ namespace WebCore {
             LENGTHADJUST_SPACINGANDGLYPHS   = 2
         };
 
-        SVGTextContentElement(const QualifiedName&, Document*);
         virtual ~SVGTextContentElement();
         
         virtual bool isValid() const { return SVGTests::isValid(); }
@@ -64,6 +63,8 @@ namespace WebCore {
         bool isKnownAttribute(const QualifiedName&);
 
     protected:
+        SVGTextContentElement(const QualifiedName&, Document*);
+
         virtual bool selfHasRelativeLengths() const;
 
     private:
diff --git a/WebCore/svg/SVGTextElement.cpp b/WebCore/svg/SVGTextElement.cpp
index e13e611..b3b6524 100644
--- a/WebCore/svg/SVGTextElement.cpp
+++ b/WebCore/svg/SVGTextElement.cpp
@@ -42,6 +42,11 @@ SVGTextElement::SVGTextElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGTextElement> SVGTextElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGTextElement(tagName, document);
+}
+
 SVGTextElement::~SVGTextElement()
 {
 }
diff --git a/WebCore/svg/SVGTextElement.h b/WebCore/svg/SVGTextElement.h
index 1788ea9..c6aa506 100644
--- a/WebCore/svg/SVGTextElement.h
+++ b/WebCore/svg/SVGTextElement.h
@@ -30,10 +30,9 @@ namespace WebCore {
     class SVGTextElement : public SVGTextPositioningElement,
                            public SVGTransformable {
     public:
-        SVGTextElement(const QualifiedName&, Document*);
-        virtual ~SVGTextElement();
+        static PassRefPtr<SVGTextElement> create(const QualifiedName&, Document*);
 
-        virtual void parseMappedAttribute(Attribute*);
+        virtual ~SVGTextElement();
 
         virtual SVGElement* nearestViewportElement() const;
         virtual SVGElement* farthestViewportElement() const;
@@ -42,6 +41,11 @@ namespace WebCore {
         virtual AffineTransform getCTM(StyleUpdateStrategy = AllowStyleUpdate) const;
         virtual AffineTransform getScreenCTM(StyleUpdateStrategy = AllowStyleUpdate) const;
         virtual AffineTransform animatedLocalTransform() const;
+
+    private:
+        SVGTextElement(const QualifiedName&, Document*);
+        virtual void parseMappedAttribute(Attribute*);
+
         virtual AffineTransform* supplementalTransform();
         virtual AffineTransform localCoordinateSpaceTransform(SVGLocatable::CTMScope mode) const { return SVGTransformable::localCoordinateSpaceTransform(mode); }
 
@@ -51,11 +55,10 @@ namespace WebCore {
         virtual void svgAttributeChanged(const QualifiedName&);
         virtual void synchronizeProperty(const QualifiedName&);
 
-    private:
         DECLARE_ANIMATED_PROPERTY(SVGTextElement, SVGNames::transformAttr, SVGTransformList*, Transform, transform)
        
-       // Used by <animateMotion>
-       OwnPtr<AffineTransform> m_supplementalTransform;
+        // Used by <animateMotion>
+        OwnPtr<AffineTransform> m_supplementalTransform;
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGTextPathElement.cpp b/WebCore/svg/SVGTextPathElement.cpp
index 8f21ab3..c5dc363 100644
--- a/WebCore/svg/SVGTextPathElement.cpp
+++ b/WebCore/svg/SVGTextPathElement.cpp
@@ -43,6 +43,11 @@ SVGTextPathElement::SVGTextPathElement(const QualifiedName& tagName, Document* d
 {
 }
 
+PassRefPtr<SVGTextPathElement> SVGTextPathElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGTextPathElement(tagName, document);
+}
+
 SVGTextPathElement::~SVGTextPathElement()
 {
 }
diff --git a/WebCore/svg/SVGTextPathElement.h b/WebCore/svg/SVGTextPathElement.h
index 537a107..a951ed1 100644
--- a/WebCore/svg/SVGTextPathElement.h
+++ b/WebCore/svg/SVGTextPathElement.h
@@ -51,9 +51,13 @@ namespace WebCore {
             TEXTPATH_SPACINGTYPE_EXACT = SVG_TEXTPATH_SPACINGTYPE_EXACT
         };
 
-        SVGTextPathElement(const QualifiedName&, Document*);
+        static PassRefPtr<SVGTextPathElement> create(const QualifiedName&, Document*);
+
         virtual ~SVGTextPathElement();
  
+    private:
+        SVGTextPathElement(const QualifiedName&, Document*);
+
         virtual void insertedIntoDocument();
 
         virtual void parseMappedAttribute(Attribute*);
@@ -61,9 +65,8 @@ namespace WebCore {
         virtual void synchronizeProperty(const QualifiedName&);
         virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
 
-        bool childShouldCreateRenderer(Node*) const;
+        virtual bool childShouldCreateRenderer(Node*) const;
 
-    private:
         virtual bool selfHasRelativeLengths() const;
 
         DECLARE_ANIMATED_PROPERTY(SVGTextPathElement, SVGNames::startOffsetAttr, SVGLength, StartOffset, startOffset)
diff --git a/WebCore/svg/SVGTextPositioningElement.h b/WebCore/svg/SVGTextPositioningElement.h
index 0ad3090..367847c 100644
--- a/WebCore/svg/SVGTextPositioningElement.h
+++ b/WebCore/svg/SVGTextPositioningElement.h
@@ -30,16 +30,17 @@ namespace WebCore {
 
     class SVGTextPositioningElement : public SVGTextContentElement {
     public:
-        SVGTextPositioningElement(const QualifiedName&, Document*);
         virtual ~SVGTextPositioningElement();
 
         virtual void parseMappedAttribute(Attribute*);
         virtual void svgAttributeChanged(const QualifiedName&);
         virtual void synchronizeProperty(const QualifiedName&);
 
+    protected:
+        SVGTextPositioningElement(const QualifiedName&, Document*);
+
         bool isKnownAttribute(const QualifiedName&);
 
-    private:
         virtual bool selfHasRelativeLengths() const;
 
         DECLARE_ANIMATED_PROPERTY(SVGTextPositioningElement, SVGNames::xAttr, SVGLengthList*, X, x)
diff --git a/WebCore/svg/SVGTitleElement.cpp b/WebCore/svg/SVGTitleElement.cpp
index 7fdb2e0..3330541 100644
--- a/WebCore/svg/SVGTitleElement.cpp
+++ b/WebCore/svg/SVGTitleElement.cpp
@@ -31,6 +31,11 @@ SVGTitleElement::SVGTitleElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGTitleElement> SVGTitleElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGTitleElement(tagName, document);
+}
+
 void SVGTitleElement::insertedIntoDocument()
 {
     SVGStyledElement::insertedIntoDocument();
diff --git a/WebCore/svg/SVGTitleElement.h b/WebCore/svg/SVGTitleElement.h
index f3381b1..986f73e 100644
--- a/WebCore/svg/SVGTitleElement.h
+++ b/WebCore/svg/SVGTitleElement.h
@@ -26,9 +26,13 @@
 #include "SVGStyledElement.h"
 
 namespace WebCore {
+
     class SVGTitleElement : public SVGStyledElement,
                             public SVGLangSpace {
     public:
+        static PassRefPtr<SVGTitleElement> create(const QualifiedName&, Document*);
+
+    private:
         SVGTitleElement(const QualifiedName&, Document*);
 
         virtual void insertedIntoDocument();
diff --git a/WebCore/svg/SVGUseElement.cpp b/WebCore/svg/SVGUseElement.cpp
index 68c087c..56fda67 100644
--- a/WebCore/svg/SVGUseElement.cpp
+++ b/WebCore/svg/SVGUseElement.cpp
@@ -70,6 +70,11 @@ SVGUseElement::SVGUseElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGUseElement> SVGUseElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGUseElement(tagName, document);
+}
+
 SVGUseElement::~SVGUseElement()
 {
 }
diff --git a/WebCore/svg/SVGUseElement.h b/WebCore/svg/SVGUseElement.h
index 52f3f6e..40d97a0 100644
--- a/WebCore/svg/SVGUseElement.h
+++ b/WebCore/svg/SVGUseElement.h
@@ -40,11 +40,19 @@ namespace WebCore {
                           public SVGExternalResourcesRequired,
                           public SVGURIReference {
     public:
-        SVGUseElement(const QualifiedName&, Document*);
+        static PassRefPtr<SVGUseElement> create(const QualifiedName&, Document*);
+
         virtual ~SVGUseElement();
 
         SVGElementInstance* instanceRoot() const;
         SVGElementInstance* animatedInstanceRoot() const;
+        SVGElementInstance* instanceForShadowTreeElement(Node*) const;
+        void invalidateShadowTree();
+
+        RenderObject* rendererClipChild() const;
+
+    private:
+        SVGUseElement(const QualifiedName&, Document*);
 
         virtual bool isValid() const { return SVGTests::isValid(); }
 
@@ -62,20 +70,15 @@ namespace WebCore {
         virtual void detach();
 
         virtual Path toClipPath() const;
-        RenderObject* rendererClipChild() const;
 
         static void removeDisallowedElementsFromSubtree(Node* element);
-        SVGElementInstance* instanceForShadowTreeElement(Node* element) const;
-        void invalidateShadowTree();
 
         void setUpdatesBlocked(bool blocked) { m_updatesBlocked = blocked; }
 
-    private:
         friend class RenderSVGShadowTreeRootContainer;
         bool isPendingResource() const { return m_isPendingResource; }
         void buildShadowAndInstanceTree(SVGShadowTreeRootElement*);
 
-    private:
         virtual bool selfHasRelativeLengths() const;
 
         DECLARE_ANIMATED_PROPERTY(SVGUseElement, SVGNames::xAttr, SVGLength, X, x)
@@ -89,7 +92,6 @@ namespace WebCore {
         // SVGExternalResourcesRequired
         DECLARE_ANIMATED_PROPERTY(SVGUseElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
 
-    private:
         // Instance tree handling
         void buildInstanceTree(SVGElement* target, SVGElementInstance* targetInstance, bool& foundCycle);
         void handleDeepUseReferencing(SVGUseElement* use, SVGElementInstance* targetInstance, bool& foundCycle);
diff --git a/WebCore/svg/SVGVKernElement.cpp b/WebCore/svg/SVGVKernElement.cpp
index 662f714..87cd95a 100644
--- a/WebCore/svg/SVGVKernElement.cpp
+++ b/WebCore/svg/SVGVKernElement.cpp
@@ -33,13 +33,14 @@ namespace WebCore {
 
 using namespace SVGNames;
 
-SVGVKernElement::SVGVKernElement(const QualifiedName& tagName, Document* doc)
-    : SVGElement(tagName, doc)
+inline SVGVKernElement::SVGVKernElement(const QualifiedName& tagName, Document* document)
+    : SVGElement(tagName, document)
 {
 }
 
-SVGVKernElement::~SVGVKernElement()
+PassRefPtr<SVGVKernElement> SVGVKernElement::create(const QualifiedName& tagName, Document* document)
 {
+    return new SVGVKernElement(tagName, document);
 }
 
 void SVGVKernElement::insertedIntoDocument()
diff --git a/WebCore/svg/SVGVKernElement.h b/WebCore/svg/SVGVKernElement.h
index c4bc90f..c8bb1d4 100644
--- a/WebCore/svg/SVGVKernElement.h
+++ b/WebCore/svg/SVGVKernElement.h
@@ -34,15 +34,17 @@ class SVGFontData;
 
 class SVGVKernElement : public SVGElement {
 public:
+    static PassRefPtr<SVGVKernElement> create(const QualifiedName&, Document*);
+
+    void buildVerticalKerningPair(KerningPairVector&);
+
+private:
     SVGVKernElement(const QualifiedName&, Document*);
-    virtual ~SVGVKernElement();
 
     virtual void insertedIntoDocument();
     virtual void removedFromDocument();
 
     virtual bool rendererIsNeeded(RenderStyle*) { return false; }
-
-    void buildVerticalKerningPair(KerningPairVector&);
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGViewElement.cpp b/WebCore/svg/SVGViewElement.cpp
index 2b9b6cc..0eb9931 100644
--- a/WebCore/svg/SVGViewElement.cpp
+++ b/WebCore/svg/SVGViewElement.cpp
@@ -40,6 +40,11 @@ SVGViewElement::SVGViewElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<SVGViewElement> SVGViewElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new SVGViewElement(tagName, document);
+}
+
 SVGViewElement::~SVGViewElement()
 {
 }
diff --git a/WebCore/svg/SVGViewElement.h b/WebCore/svg/SVGViewElement.h
index 14ea19e..3b42a8e 100644
--- a/WebCore/svg/SVGViewElement.h
+++ b/WebCore/svg/SVGViewElement.h
@@ -35,17 +35,20 @@ namespace WebCore {
                            public SVGFitToViewBox,
                            public SVGZoomAndPan {
     public:
-        SVGViewElement(const QualifiedName&, Document*);
+        static PassRefPtr<SVGViewElement> create(const QualifiedName&, Document*);
+
         virtual ~SVGViewElement();
 
+        SVGStringList* viewTarget() const;
+
+    private:
+        SVGViewElement(const QualifiedName&, Document*);
+
         virtual void parseMappedAttribute(Attribute*);
         virtual void synchronizeProperty(const QualifiedName&);
 
-        SVGStringList* viewTarget() const;
-
         virtual bool rendererIsNeeded(RenderStyle*) { return false; }
 
-    private:
         // SVGExternalResourcesRequired
         DECLARE_ANIMATED_PROPERTY(SVGViewElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
  
diff --git a/WebCore/svg/svgtags.in b/WebCore/svg/svgtags.in
index adf0b24..ee6765c 100644
--- a/WebCore/svg/svgtags.in
+++ b/WebCore/svg/svgtags.in
@@ -2,105 +2,105 @@ namespace="SVG"
 namespaceURI="http://www.w3.org/2000/svg"
 guardFactoryWith="ENABLE(SVG)"
 
-a createWithNew
+a
 #if ENABLE_SVG_FONTS
-altGlyph createWithNew
+altGlyph
 #endif
 #if 0
-altGlyphDef createWithNew
-altGlyphItem createWithNew
+altGlyphDef
+altGlyphItem
 #endif
 #if ENABLE_SVG_ANIMATION
-animate createWithNew
-animateColor createWithNew
-animateMotion JSInterfaceName=SVGElement, createWithNew
-animateTransform createWithNew
-set createWithNew
+animate
+animateColor
+animateMotion JSInterfaceName=SVGElement
+animateTransform
+set
 #endif
-circle createWithNew
-clipPath createWithNew
+circle
+clipPath
 #if 0
-color_profile createWithNew
+color_profile
 #endif
-cursor createWithNew
-defs createWithNew
-desc createWithNew
-ellipse createWithNew
+cursor
+defs
+desc
+ellipse
 #if ENABLE_FILTERS
-feBlend createWithNew
-feColorMatrix createWithNew
-feComponentTransfer createWithNew
-feComposite createWithNew
-feConvolveMatrix createWithNew
-feDiffuseLighting createWithNew
-feDisplacementMap createWithNew
-feDistantLight createWithNew
-feFlood createWithNew
-feFuncA createWithNew
-feFuncB createWithNew
-feFuncG createWithNew
-feFuncR createWithNew
-feGaussianBlur createWithNew
-feImage createWithNew
-feMerge createWithNew
-feMergeNode createWithNew
-feMorphology createWithNew
-feOffset createWithNew
-fePointLight createWithNew
-feSpecularLighting createWithNew
-feSpotLight createWithNew
-feTile createWithNew
-feTurbulence createWithNew
-filter createWithNew
+feBlend
+feColorMatrix
+feComponentTransfer
+feComposite
+feConvolveMatrix
+feDiffuseLighting
+feDisplacementMap
+feDistantLight
+feFlood
+feFuncA
+feFuncB
+feFuncG
+feFuncR
+feGaussianBlur
+feImage
+feMerge
+feMergeNode
+feMorphology
+feOffset
+fePointLight
+feSpecularLighting
+feSpotLight
+feTile
+feTurbulence
+filter
 #endif
 #if ENABLE_SVG_FONTS
-font createWithNew
-font_face createWithNew
-font_face_format createWithNew
-font_face_name createWithNew
-font_face_src createWithNew
-font_face_uri createWithNew
+font
+font_face
+font_face_format
+font_face_name
+font_face_src
+font_face_uri
 #endif
 #if ENABLE_SVG_FOREIGN_OBJECT
-foreignObject createWithNew
+foreignObject
 #endif
-g createWithNew
+g
 #if ENABLE_SVG_FONTS
-glyph createWithNew
+glyph
 #endif
 #if 0
-glyphRef createWithNew
+glyphRef
 #endif
 #if ENABLE_SVG_FONTS
-hkern interfaceName=SVGHKernElement, JSInterfaceName=SVGElement, createWithNew
+hkern interfaceName=SVGHKernElement, JSInterfaceName=SVGElement
 #endif
-image createWithNew
-line createWithNew
-linearGradient createWithNew
-marker createWithNew
-mask createWithNew
-metadata createWithNew
+image
+line
+linearGradient
+marker
+mask
+metadata
 #if ENABLE_SVG_FONTS
-missing_glyph createWithNew
+missing_glyph
 #endif
-mpath interfaceName=SVGMPathElement, JSInterfaceName=SVGElement, createWithNew
-path createWithNew
-pattern createWithNew
-polygon createWithNew
-polyline createWithNew
-radialGradient createWithNew
-rect createWithNew
-script constructorNeedsCreatedByParser, createWithNew
-stop createWithNew
-style constructorNeedsCreatedByParser, createWithNew
-svg interfaceName=SVGSVGElement, createWithNew
-switch createWithNew
-symbol createWithNew
-text createWithNew
-textPath createWithNew
-title createWithNew
-tref interfaceName=SVGTRefElement, createWithNew
-tspan interfaceName=SVGTSpanElement, createWithNew
-use createWithNew
-view createWithNew
-vkern interfaceName=SVGVKernElement, createWithNew
+mpath interfaceName=SVGMPathElement, JSInterfaceName=SVGElement
+path
+pattern
+polygon
+polyline
+radialGradient
+rect
+script constructorNeedsCreatedByParser
+stop
+style constructorNeedsCreatedByParser
+svg interfaceName=SVGSVGElement
+switch
+symbol
+text
+textPath
+title
+tref interfaceName=SVGTRefElement
+tspan interfaceName=SVGTSpanElement
+use
+view
+vkern interfaceName=SVGVKernElement
diff --git a/WebCore/wml/WMLAElement.cpp b/WebCore/wml/WMLAElement.cpp
index 99e30e9..dd19a96 100644
--- a/WebCore/wml/WMLAElement.cpp
+++ b/WebCore/wml/WMLAElement.cpp
@@ -51,6 +51,11 @@ WMLAElement::WMLAElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLAElement> WMLAElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLAElement(tagName, document);
+}
+
 void WMLAElement::parseMappedAttribute(Attribute* attr)
 {
     if (attr->name() == HTMLNames::hrefAttr) {
diff --git a/WebCore/wml/WMLAElement.h b/WebCore/wml/WMLAElement.h
index b21ebb6..9dcda6b 100644
--- a/WebCore/wml/WMLAElement.h
+++ b/WebCore/wml/WMLAElement.h
@@ -33,6 +33,8 @@ namespace WebCore {
 
 class WMLAElement : public WMLElement {
 public:
+    static PassRefPtr<WMLAElement> create(const QualifiedName& tagName, Document*);
+
     WMLAElement(const QualifiedName& tagName, Document*);
 
     virtual bool supportsFocus() const;
diff --git a/WebCore/wml/WMLAccessElement.cpp b/WebCore/wml/WMLAccessElement.cpp
index d6e6768..4ea64f0 100644
--- a/WebCore/wml/WMLAccessElement.cpp
+++ b/WebCore/wml/WMLAccessElement.cpp
@@ -37,6 +37,11 @@ WMLAccessElement::WMLAccessElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLAccessElement> WMLAccessElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLAccessElement(tagName, document);
+}
+
 void WMLAccessElement::parseMappedAttribute(Attribute* attr)
 {
     if (attr->name() == domainAttr) {
diff --git a/WebCore/wml/WMLAccessElement.h b/WebCore/wml/WMLAccessElement.h
index 83290e4..eb7436c 100644
--- a/WebCore/wml/WMLAccessElement.h
+++ b/WebCore/wml/WMLAccessElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
 class WMLAccessElement : public WMLElement {
 public:
+    static PassRefPtr<WMLAccessElement> create(const QualifiedName& tagName, Document*);
+
     WMLAccessElement(const QualifiedName& tagName, Document*);
 
     virtual void parseMappedAttribute(Attribute*);
diff --git a/WebCore/wml/WMLAnchorElement.cpp b/WebCore/wml/WMLAnchorElement.cpp
index ac9c8f2..c986c4d 100644
--- a/WebCore/wml/WMLAnchorElement.cpp
+++ b/WebCore/wml/WMLAnchorElement.cpp
@@ -40,6 +40,11 @@ WMLAnchorElement::WMLAnchorElement(const QualifiedName& tagName, Document* doc)
     setIsLink();
 }
 
+PassRefPtr<WMLAnchorElement> WMLAnchorElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLAnchorElement(tagName, document);
+}
+
 WMLAnchorElement::~WMLAnchorElement()
 {
 }
diff --git a/WebCore/wml/WMLAnchorElement.h b/WebCore/wml/WMLAnchorElement.h
index abc01c9..6cb36c8 100644
--- a/WebCore/wml/WMLAnchorElement.h
+++ b/WebCore/wml/WMLAnchorElement.h
@@ -30,6 +30,8 @@ class WMLTaskElement;
 
 class WMLAnchorElement : public WMLAElement {
 public:
+    static PassRefPtr<WMLAnchorElement> create(const QualifiedName& tagName, Document*);
+
     WMLAnchorElement(const QualifiedName& tagName, Document*);
     virtual ~WMLAnchorElement();
 
diff --git a/WebCore/wml/WMLBRElement.cpp b/WebCore/wml/WMLBRElement.cpp
index d24d2a2..d03913c 100644
--- a/WebCore/wml/WMLBRElement.cpp
+++ b/WebCore/wml/WMLBRElement.cpp
@@ -40,6 +40,11 @@ WMLBRElement::WMLBRElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLBRElement> WMLBRElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLBRElement(tagName, document);
+}
+
 bool WMLBRElement::mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const
 {
     if (attrName == HTMLNames::clearAttr) {
diff --git a/WebCore/wml/WMLBRElement.h b/WebCore/wml/WMLBRElement.h
index 41c8776..fb12688 100644
--- a/WebCore/wml/WMLBRElement.h
+++ b/WebCore/wml/WMLBRElement.h
@@ -32,6 +32,8 @@ namespace WebCore {
 
 class WMLBRElement : public WMLElement {
 public:
+    static PassRefPtr<WMLBRElement> create(const QualifiedName& tagName, Document*);
+
     WMLBRElement(const QualifiedName& tagName, Document*);
 
     virtual bool mapToEntry(const QualifiedName&, MappedAttributeEntry&) const;
diff --git a/WebCore/wml/WMLCardElement.cpp b/WebCore/wml/WMLCardElement.cpp
index 645d0fc..23ba50d 100644
--- a/WebCore/wml/WMLCardElement.cpp
+++ b/WebCore/wml/WMLCardElement.cpp
@@ -55,6 +55,11 @@ WMLCardElement::WMLCardElement(const QualifiedName& tagName, Document* doc)
     ASSERT(hasTagName(cardTag));
 }
 
+PassRefPtr<WMLCardElement> WMLCardElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLCardElement(tagName, document);
+}
+
 WMLCardElement::~WMLCardElement()
 {
 }
diff --git a/WebCore/wml/WMLCardElement.h b/WebCore/wml/WMLCardElement.h
index 40eec36..f82374d 100644
--- a/WebCore/wml/WMLCardElement.h
+++ b/WebCore/wml/WMLCardElement.h
@@ -33,6 +33,8 @@ class WMLTimerElement;
 
 class WMLCardElement : public WMLElement, public WMLEventHandlingElement {
 public:
+    static PassRefPtr<WMLCardElement> create(const QualifiedName& tagName, Document*);
+
     WMLCardElement(const QualifiedName&, Document*);
     virtual ~WMLCardElement();
 
diff --git a/WebCore/wml/WMLDoElement.cpp b/WebCore/wml/WMLDoElement.cpp
index 6a40fc9..583d623 100644
--- a/WebCore/wml/WMLDoElement.cpp
+++ b/WebCore/wml/WMLDoElement.cpp
@@ -51,6 +51,11 @@ WMLDoElement::WMLDoElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLDoElement> WMLDoElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLDoElement(tagName, document);
+}
+
 void WMLDoElement::defaultEventHandler(Event* event)
 {
     if (m_isOptional)
diff --git a/WebCore/wml/WMLDoElement.h b/WebCore/wml/WMLDoElement.h
index 024ef80..2ba6d9e 100644
--- a/WebCore/wml/WMLDoElement.h
+++ b/WebCore/wml/WMLDoElement.h
@@ -30,6 +30,8 @@ class WMLTaskElement;
 
 class WMLDoElement : public WMLElement {
 public:
+    static PassRefPtr<WMLDoElement> create(const QualifiedName& tagName, Document*);
+
     WMLDoElement(const QualifiedName& tagName, Document*);
 
     virtual void defaultEventHandler(Event*);
diff --git a/WebCore/wml/WMLFieldSetElement.cpp b/WebCore/wml/WMLFieldSetElement.cpp
index c89e669..1188e80 100644
--- a/WebCore/wml/WMLFieldSetElement.cpp
+++ b/WebCore/wml/WMLFieldSetElement.cpp
@@ -39,6 +39,11 @@ WMLFieldSetElement::WMLFieldSetElement(const QualifiedName& tagName, Document* d
 {
 }
 
+PassRefPtr<WMLFieldSetElement> WMLFieldSetElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLFieldSetElement(tagName, document);
+}
+
 WMLFieldSetElement::~WMLFieldSetElement()
 {
 }
diff --git a/WebCore/wml/WMLFieldSetElement.h b/WebCore/wml/WMLFieldSetElement.h
index 1087fa1..11ef2c1 100644
--- a/WebCore/wml/WMLFieldSetElement.h
+++ b/WebCore/wml/WMLFieldSetElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
 class WMLFieldSetElement : public WMLElement {
 public:
+    static PassRefPtr<WMLFieldSetElement> create(const QualifiedName&, Document*);
+
     WMLFieldSetElement(const QualifiedName& tagName, Document*);
     virtual ~WMLFieldSetElement();
 
diff --git a/WebCore/wml/WMLFormControlElement.cpp b/WebCore/wml/WMLFormControlElement.cpp
index 93ffbda..07c3c5c 100644
--- a/WebCore/wml/WMLFormControlElement.cpp
+++ b/WebCore/wml/WMLFormControlElement.cpp
@@ -35,6 +35,11 @@ WMLFormControlElement::WMLFormControlElement(const QualifiedName& tagName, Docum
 {
 }
 
+PassRefPtr<WMLFormControlElement> WMLFormControlElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLFormControlElement(tagName, document);
+}
+
 WMLFormControlElement::~WMLFormControlElement()
 {
 }
diff --git a/WebCore/wml/WMLGoElement.cpp b/WebCore/wml/WMLGoElement.cpp
index d3a6216..f117f6c 100644
--- a/WebCore/wml/WMLGoElement.cpp
+++ b/WebCore/wml/WMLGoElement.cpp
@@ -50,6 +50,11 @@ WMLGoElement::WMLGoElement(const QualifiedName& tagName, Document* doc)
 {
 }
  
+PassRefPtr<WMLGoElement> WMLGoElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLGoElement(tagName, document);
+}
+
 void WMLGoElement::registerPostfieldElement(WMLPostfieldElement* postfield)
 {
     ASSERT(m_postfieldElements.find(postfield) == WTF::notFound);
diff --git a/WebCore/wml/WMLGoElement.h b/WebCore/wml/WMLGoElement.h
index d7f8991..d29e124 100644
--- a/WebCore/wml/WMLGoElement.h
+++ b/WebCore/wml/WMLGoElement.h
@@ -33,6 +33,8 @@ class WMLPostfieldElement;
 
 class WMLGoElement : public WMLTaskElement {
 public:
+    static PassRefPtr<WMLGoElement> create(const QualifiedName&, Document*);
+
     WMLGoElement(const QualifiedName& tagName, Document*);
 
     void registerPostfieldElement(WMLPostfieldElement*);
diff --git a/WebCore/wml/WMLImageElement.cpp b/WebCore/wml/WMLImageElement.cpp
index f3ae433..4aa3c68 100644
--- a/WebCore/wml/WMLImageElement.cpp
+++ b/WebCore/wml/WMLImageElement.cpp
@@ -43,6 +43,11 @@ WMLImageElement::WMLImageElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLImageElement> WMLImageElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLImageElement(tagName, document);
+}
+
 WMLImageElement::~WMLImageElement()
 {
 }
diff --git a/WebCore/wml/WMLImageElement.h b/WebCore/wml/WMLImageElement.h
index 2ec5031..6421f6e 100644
--- a/WebCore/wml/WMLImageElement.h
+++ b/WebCore/wml/WMLImageElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class WMLImageElement : public WMLElement {
 public:
+    static PassRefPtr<WMLImageElement> create(const QualifiedName&, Document*);
+
     WMLImageElement(const QualifiedName& tagName, Document*);
     virtual ~WMLImageElement();
 
diff --git a/WebCore/wml/WMLInputElement.cpp b/WebCore/wml/WMLInputElement.cpp
index bf407c1..aac4133 100644
--- a/WebCore/wml/WMLInputElement.cpp
+++ b/WebCore/wml/WMLInputElement.cpp
@@ -45,6 +45,11 @@ WMLInputElement::WMLInputElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLInputElement> WMLInputElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLInputElement(tagName, document);
+}
+
 WMLInputElement::~WMLInputElement()
 {
     if (m_isPasswordField)
diff --git a/WebCore/wml/WMLInputElement.h b/WebCore/wml/WMLInputElement.h
index 329d869..70d85e9 100644
--- a/WebCore/wml/WMLInputElement.h
+++ b/WebCore/wml/WMLInputElement.h
@@ -31,6 +31,8 @@ class FormDataList;
 
 class WMLInputElement : public WMLFormControlElement, public InputElement {
 public:
+    static PassRefPtr<WMLInputElement> create(const QualifiedName&, Document*);
+
     WMLInputElement(const QualifiedName& tagName, Document*);
     virtual ~WMLInputElement();
 
diff --git a/WebCore/wml/WMLInsertedLegendElement.cpp b/WebCore/wml/WMLInsertedLegendElement.cpp
index 1464e71..e3ad673 100644
--- a/WebCore/wml/WMLInsertedLegendElement.cpp
+++ b/WebCore/wml/WMLInsertedLegendElement.cpp
@@ -30,6 +30,11 @@ WMLInsertedLegendElement::WMLInsertedLegendElement(const QualifiedName& tagName,
 {
 }
 
+PassRefPtr<WMLInsertedLegendElement> WMLInsertedLegendElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLInsertedLegendElement(tagName, document);
+}
+
 WMLInsertedLegendElement::~WMLInsertedLegendElement()
 {
 }
diff --git a/WebCore/wml/WMLInsertedLegendElement.h b/WebCore/wml/WMLInsertedLegendElement.h
index 73392ad..e79550e 100644
--- a/WebCore/wml/WMLInsertedLegendElement.h
+++ b/WebCore/wml/WMLInsertedLegendElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
 class WMLInsertedLegendElement : public WMLElement {
 public:
+    static PassRefPtr<WMLInsertedLegendElement> create(const QualifiedName&, Document*);
+
     WMLInsertedLegendElement(const QualifiedName& tagName, Document*);
     virtual ~WMLInsertedLegendElement();
 };
diff --git a/WebCore/wml/WMLIntrinsicEvent.cpp b/WebCore/wml/WMLIntrinsicEvent.cpp
index bb631b9..8c344d1 100644
--- a/WebCore/wml/WMLIntrinsicEvent.cpp
+++ b/WebCore/wml/WMLIntrinsicEvent.cpp
@@ -43,6 +43,11 @@ WMLIntrinsicEvent::WMLIntrinsicEvent(Document* document, const String& targetURL
     m_taskElement->setAttribute(HTMLNames::hrefAttr, targetURL);
 }
 
+PassRefPtr<WMLIntrinsicEvent> WMLIntrinsicEvent::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLIntrinsicEvent(tagName, document);
+}
+
 WMLIntrinsicEvent::WMLIntrinsicEvent(WMLTaskElement* taskElement)
     : m_taskElement(taskElement)
 {
diff --git a/WebCore/wml/WMLMetaElement.cpp b/WebCore/wml/WMLMetaElement.cpp
index e28afaf..eb7d988 100644
--- a/WebCore/wml/WMLMetaElement.cpp
+++ b/WebCore/wml/WMLMetaElement.cpp
@@ -34,6 +34,11 @@ WMLMetaElement::WMLMetaElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLMetaElement> WMLMetaElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLMetaElement(tagName, document);
+}
+
 WMLMetaElement::~WMLMetaElement()
 {
 }
diff --git a/WebCore/wml/WMLMetaElement.h b/WebCore/wml/WMLMetaElement.h
index 765490d..16e2268 100644
--- a/WebCore/wml/WMLMetaElement.h
+++ b/WebCore/wml/WMLMetaElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
 class WMLMetaElement : public WMLElement {
 public:
+    static PassRefPtr<WMLMetaElement> create(const QualifiedName&, Document*);
+
     WMLMetaElement(const QualifiedName& tagName, Document*);
     virtual ~WMLMetaElement();
 
diff --git a/WebCore/wml/WMLNoopElement.cpp b/WebCore/wml/WMLNoopElement.cpp
index b2ce506..b3e75f3 100644
--- a/WebCore/wml/WMLNoopElement.cpp
+++ b/WebCore/wml/WMLNoopElement.cpp
@@ -36,6 +36,11 @@ WMLNoopElement::WMLNoopElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLNoopElement> WMLNoopElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLNoopElement(tagName, document);
+}
+
 WMLNoopElement::~WMLNoopElement()
 {
 }
diff --git a/WebCore/wml/WMLNoopElement.h b/WebCore/wml/WMLNoopElement.h
index 63b316e..be0413c 100644
--- a/WebCore/wml/WMLNoopElement.h
+++ b/WebCore/wml/WMLNoopElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
 class WMLNoopElement : public WMLElement {
 public:
+    static PassRefPtr<WMLNoopElement> create(const QualifiedName&, Document*);
+
     WMLNoopElement(const QualifiedName& tagName, Document*);
     virtual ~WMLNoopElement();
 
diff --git a/WebCore/wml/WMLOnEventElement.cpp b/WebCore/wml/WMLOnEventElement.cpp
index 34518c3..462d05e 100644
--- a/WebCore/wml/WMLOnEventElement.cpp
+++ b/WebCore/wml/WMLOnEventElement.cpp
@@ -41,6 +41,11 @@ WMLOnEventElement::WMLOnEventElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<WMLOnEventElement> WMLOnEventElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLOnEventElement(tagName, document);
+}
+
 void WMLOnEventElement::parseMappedAttribute(Attribute* attr)
 {
     if (attr->name() == HTMLNames::typeAttr) {
diff --git a/WebCore/wml/WMLOnEventElement.h b/WebCore/wml/WMLOnEventElement.h
index 4bc4bca..8bbaa1d 100644
--- a/WebCore/wml/WMLOnEventElement.h
+++ b/WebCore/wml/WMLOnEventElement.h
@@ -31,6 +31,8 @@ class WMLTaskElement;
 
 class WMLOnEventElement : public WMLElement {
 public:
+    static PassRefPtr<WMLOnEventElement> create(const QualifiedName&, Document*);
+
     WMLOnEventElement(const QualifiedName& tagName, Document*);
 
     virtual void parseMappedAttribute(Attribute*);
diff --git a/WebCore/wml/WMLOptGroupElement.cpp b/WebCore/wml/WMLOptGroupElement.cpp
index fde3474..624ab75 100644
--- a/WebCore/wml/WMLOptGroupElement.cpp
+++ b/WebCore/wml/WMLOptGroupElement.cpp
@@ -40,6 +40,11 @@ WMLOptGroupElement::WMLOptGroupElement(const QualifiedName& tagName, Document* d
 {
 }
 
+PassRefPtr<WMLOptGroupElement> WMLOptGroupElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLOptGroupElement(tagName, document);
+}
+
 WMLOptGroupElement::~WMLOptGroupElement()
 {
 }
diff --git a/WebCore/wml/WMLOptGroupElement.h b/WebCore/wml/WMLOptGroupElement.h
index 682c68c..3cfa47d 100644
--- a/WebCore/wml/WMLOptGroupElement.h
+++ b/WebCore/wml/WMLOptGroupElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class WMLOptGroupElement : public WMLFormControlElement, public OptionGroupElement {
 public:
+    static PassRefPtr<WMLOptGroupElement> create(const QualifiedName&, Document*);
+
     WMLOptGroupElement(const QualifiedName& tagName, Document*);
     virtual ~WMLOptGroupElement();
 
diff --git a/WebCore/wml/WMLOptionElement.cpp b/WebCore/wml/WMLOptionElement.cpp
index ca4ea91..d69d1d9 100644
--- a/WebCore/wml/WMLOptionElement.cpp
+++ b/WebCore/wml/WMLOptionElement.cpp
@@ -39,6 +39,11 @@ WMLOptionElement::WMLOptionElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLOptionElement> WMLOptionElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLOptionElement(tagName, document);
+}
+
 WMLOptionElement::~WMLOptionElement()
 {
 }
diff --git a/WebCore/wml/WMLOptionElement.h b/WebCore/wml/WMLOptionElement.h
index 3831f7d..41a4638 100644
--- a/WebCore/wml/WMLOptionElement.h
+++ b/WebCore/wml/WMLOptionElement.h
@@ -30,6 +30,8 @@ namespace WebCore {
 
 class WMLOptionElement : public WMLFormControlElement, public WMLEventHandlingElement, public OptionElement {
 public:
+    static PassRefPtr<WMLOptionElement> create(const QualifiedName&, Document*);
+
     WMLOptionElement(const QualifiedName& tagName, Document*);
     virtual ~WMLOptionElement();
 
diff --git a/WebCore/wml/WMLPElement.cpp b/WebCore/wml/WMLPElement.cpp
index ca76022..d32b0d3 100644
--- a/WebCore/wml/WMLPElement.cpp
+++ b/WebCore/wml/WMLPElement.cpp
@@ -43,6 +43,11 @@ WMLPElement::WMLPElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLPElement> WMLPElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLPElement(tagName, document);
+}
+
 bool WMLPElement::mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const
 {
     if (attrName == HTMLNames::alignAttr) {
diff --git a/WebCore/wml/WMLPElement.h b/WebCore/wml/WMLPElement.h
index 48f98f8..32a35b1 100644
--- a/WebCore/wml/WMLPElement.h
+++ b/WebCore/wml/WMLPElement.h
@@ -31,6 +31,8 @@ namespace WebCore {
 
 class WMLPElement : public WMLElement {
 public:
+    static PassRefPtr<WMLPElement> create(const QualifiedName&, Document*);
+
     WMLPElement(const QualifiedName& tagName, Document*);
 
     virtual bool mapToEntry(const QualifiedName&, MappedAttributeEntry&) const;
diff --git a/WebCore/wml/WMLPostfieldElement.cpp b/WebCore/wml/WMLPostfieldElement.cpp
index 5cf26c7..c1770af 100644
--- a/WebCore/wml/WMLPostfieldElement.cpp
+++ b/WebCore/wml/WMLPostfieldElement.cpp
@@ -39,6 +39,11 @@ WMLPostfieldElement::WMLPostfieldElement(const QualifiedName& tagName, Document*
 {
 }
 
+PassRefPtr<WMLPostfieldElement> WMLPostfieldElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLPostfieldElement(tagName, document);
+}
+
 void WMLPostfieldElement::insertedIntoDocument()
 {
     WMLElement::insertedIntoDocument();
diff --git a/WebCore/wml/WMLPostfieldElement.h b/WebCore/wml/WMLPostfieldElement.h
index dd10b47..8d91073 100644
--- a/WebCore/wml/WMLPostfieldElement.h
+++ b/WebCore/wml/WMLPostfieldElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
 class WMLPostfieldElement : public WMLElement {
 public:
+    static PassRefPtr<WMLPostfieldElement> create(const QualifiedName&, Document*);
+
     WMLPostfieldElement(const QualifiedName& tagName, Document*);
 
     virtual void insertedIntoDocument();
diff --git a/WebCore/wml/WMLPrevElement.cpp b/WebCore/wml/WMLPrevElement.cpp
index 3d487ea..56bb87f 100644
--- a/WebCore/wml/WMLPrevElement.cpp
+++ b/WebCore/wml/WMLPrevElement.cpp
@@ -36,6 +36,11 @@ WMLPrevElement::WMLPrevElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLPrevElement> WMLPrevElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLPrevElement(tagName, document);
+}
+
 WMLPrevElement::~WMLPrevElement()
 {
 }
diff --git a/WebCore/wml/WMLPrevElement.h b/WebCore/wml/WMLPrevElement.h
index ce8596e..2db8166 100644
--- a/WebCore/wml/WMLPrevElement.h
+++ b/WebCore/wml/WMLPrevElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
 class WMLPrevElement : public WMLTaskElement {
 public:
+    static PassRefPtr<WMLPrevElement> create(const QualifiedName&, Document*);
+
     WMLPrevElement(const QualifiedName& tagName, Document*);
     virtual ~WMLPrevElement();
 
diff --git a/WebCore/wml/WMLRefreshElement.cpp b/WebCore/wml/WMLRefreshElement.cpp
index bcf87ac..668f1e3 100644
--- a/WebCore/wml/WMLRefreshElement.cpp
+++ b/WebCore/wml/WMLRefreshElement.cpp
@@ -37,6 +37,11 @@ WMLRefreshElement::WMLRefreshElement(const QualifiedName& tagName, Document* doc
 {
 }
 
+PassRefPtr<WMLRefreshElement> WMLRefreshElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLRefreshElement(tagName, document);
+}
+
 WMLRefreshElement::~WMLRefreshElement()
 {
 }
diff --git a/WebCore/wml/WMLRefreshElement.h b/WebCore/wml/WMLRefreshElement.h
index 43b71b5..1459a05 100644
--- a/WebCore/wml/WMLRefreshElement.h
+++ b/WebCore/wml/WMLRefreshElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
 class WMLRefreshElement : public WMLTaskElement {
 public:
+    static PassRefPtr<WMLRefreshElement> create(const QualifiedName&, Document*);
+
     WMLRefreshElement(const QualifiedName& tagName, Document*);
     virtual ~WMLRefreshElement();
 
diff --git a/WebCore/wml/WMLSelectElement.cpp b/WebCore/wml/WMLSelectElement.cpp
index 3991b52..831991a 100644
--- a/WebCore/wml/WMLSelectElement.cpp
+++ b/WebCore/wml/WMLSelectElement.cpp
@@ -44,6 +44,11 @@ WMLSelectElement::WMLSelectElement(const QualifiedName& tagName, Document* docum
 {
 }
 
+PassRefPtr<WMLSelectElement> WMLSelectElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLSelectElement(tagName, document);
+}
+
 WMLSelectElement::~WMLSelectElement()
 {
 }
diff --git a/WebCore/wml/WMLSelectElement.h b/WebCore/wml/WMLSelectElement.h
index 09a96f9..00b4649 100644
--- a/WebCore/wml/WMLSelectElement.h
+++ b/WebCore/wml/WMLSelectElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class WMLSelectElement : public WMLFormControlElement, public SelectElement {
 public:
+    static PassRefPtr<WMLSelectElement> create(const QualifiedName&, Document*);
+
     WMLSelectElement(const QualifiedName&, Document*);
     virtual ~WMLSelectElement();
 
diff --git a/WebCore/wml/WMLSetvarElement.cpp b/WebCore/wml/WMLSetvarElement.cpp
index 1407b3f..4f8a8dd 100644
--- a/WebCore/wml/WMLSetvarElement.cpp
+++ b/WebCore/wml/WMLSetvarElement.cpp
@@ -36,6 +36,11 @@ WMLSetvarElement::WMLSetvarElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLSetvarElement> WMLSetvarElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLSetvarElement(tagName, document);
+}
+
 WMLSetvarElement::~WMLSetvarElement()
 {
 }
diff --git a/WebCore/wml/WMLSetvarElement.h b/WebCore/wml/WMLSetvarElement.h
index 410db70..0951360 100644
--- a/WebCore/wml/WMLSetvarElement.h
+++ b/WebCore/wml/WMLSetvarElement.h
@@ -28,6 +28,8 @@ namespace WebCore {
 
 class WMLSetvarElement : public WMLElement {
 public:
+    static PassRefPtr<WMLSetvarElement> create(const QualifiedName&, Document*);
+
     WMLSetvarElement(const QualifiedName& tagName, Document*);
     virtual ~WMLSetvarElement();
 
diff --git a/WebCore/wml/WMLTableElement.cpp b/WebCore/wml/WMLTableElement.cpp
index 4d5e785..2561fbd 100644
--- a/WebCore/wml/WMLTableElement.cpp
+++ b/WebCore/wml/WMLTableElement.cpp
@@ -45,6 +45,11 @@ WMLTableElement::WMLTableElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLTableElement> WMLTableElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLTableElement(tagName, document);
+}
+
 WMLTableElement::~WMLTableElement()
 {
 }
diff --git a/WebCore/wml/WMLTableElement.h b/WebCore/wml/WMLTableElement.h
index 22a9676..9f0a592 100644
--- a/WebCore/wml/WMLTableElement.h
+++ b/WebCore/wml/WMLTableElement.h
@@ -30,6 +30,8 @@ class HTMLCollection;
 
 class WMLTableElement : public WMLElement {
 public:
+    static PassRefPtr<WMLTableElement> create(const QualifiedName&, Document*);
+
     WMLTableElement(const QualifiedName& tagName, Document*);
     virtual ~WMLTableElement();
 
diff --git a/WebCore/wml/WMLTagNames.in b/WebCore/wml/WMLTagNames.in
index 1c24f42..fd7c762 100644
--- a/WebCore/wml/WMLTagNames.in
+++ b/WebCore/wml/WMLTagNames.in
@@ -2,34 +2,34 @@ namespace="WML"
 namespaceURI="http://www.wapforum.org/DTD/wml_1.1.xml"
 guardFactoryWith="ENABLE(WML)"
 
-a createWithNew
-access createWithNew
-anchor createWithNew
-br interfaceName=WMLBRElement, createWithNew
-card createWithNew
-do createWithNew
-fieldset interfaceName=WMLFieldSetElement, createWithNew
-go createWithNew
+a
+access
+anchor
+br interfaceName=WMLBRElement
+card
+do
+fieldset interfaceName=WMLFieldSetElement
+go
 head interfaceName=WMLElement
-img interfaceName=WMLImageElement, createWithNew
-input createWithNew
+img interfaceName=WMLImageElement
+input
 #if 0
 # Note: 'insertedLegend' is not an official WML element - internal purpose only!
 #endif
-insertedLegend interfaceName=WMLInsertedLegendElement, createWithNew
-meta createWithNew
-noop createWithNew
-onevent interfaceName=WMLOnEventElement, createWithNew
-optgroup interfaceName=WMLOptGroupElement, createWithNew
-option createWithNew
-p createWithNew
-postfield createWithNew
-prev createWithNew
-refresh createWithNew
-select createWithNew
-setvar createWithNew
-table createWithNew
+insertedLegend interfaceName=WMLInsertedLegendElement
+meta
+noop
+onevent interfaceName=WMLOnEventElement
+optgroup interfaceName=WMLOptGroupElement
+option
+p
+postfield
+prev
+refresh
+select
+setvar
+table
 td interfaceName=WMLElement
-template createWithNew
-timer createWithNew
+template
+timer
 tr interfaceName=WMLElement
diff --git a/WebCore/wml/WMLTaskElement.cpp b/WebCore/wml/WMLTaskElement.cpp
index d49a03e..dc2b19c 100644
--- a/WebCore/wml/WMLTaskElement.cpp
+++ b/WebCore/wml/WMLTaskElement.cpp
@@ -39,6 +39,11 @@ WMLTaskElement::WMLTaskElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLTaskElement> WMLTaskElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLTaskElement(tagName, document);
+}
+
 WMLTaskElement::~WMLTaskElement()
 {
 }
diff --git a/WebCore/wml/WMLTaskElement.h b/WebCore/wml/WMLTaskElement.h
index b813285..b7c5376 100644
--- a/WebCore/wml/WMLTaskElement.h
+++ b/WebCore/wml/WMLTaskElement.h
@@ -33,6 +33,8 @@ class WMLSetvarElement;
 
 class WMLTaskElement : public WMLElement {
 public:
+    static PassRefPtr<WMLTaskElement> create(const QualifiedName& tagName, Document*);
+
     WMLTaskElement(const QualifiedName& tagName, Document*);
     virtual ~WMLTaskElement();
 
diff --git a/WebCore/wml/WMLTemplateElement.cpp b/WebCore/wml/WMLTemplateElement.cpp
index 27c828c..d71e9df 100644
--- a/WebCore/wml/WMLTemplateElement.cpp
+++ b/WebCore/wml/WMLTemplateElement.cpp
@@ -43,6 +43,11 @@ WMLTemplateElement::~WMLTemplateElement()
 {
 }
 
+PassRefPtr<WMLTemplateElement> WMLTemplateElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLTemplateElement(tagName, document);
+}
+
 void WMLTemplateElement::parseMappedAttribute(Attribute* attr)
 {
     WMLIntrinsicEventType eventType = WMLIntrinsicEventUnknown;
diff --git a/WebCore/wml/WMLTemplateElement.h b/WebCore/wml/WMLTemplateElement.h
index e11d089..c168753 100644
--- a/WebCore/wml/WMLTemplateElement.h
+++ b/WebCore/wml/WMLTemplateElement.h
@@ -29,6 +29,8 @@ namespace WebCore {
 
 class WMLTemplateElement : public WMLElement, public WMLEventHandlingElement {
 public:
+    static PassRefPtr<WMLTemplateElement> create(const QualifiedName&, Document*);
+
     WMLTemplateElement(const QualifiedName&, Document*);
     virtual ~WMLTemplateElement();
 
diff --git a/WebCore/wml/WMLTimerElement.cpp b/WebCore/wml/WMLTimerElement.cpp
index 48eed34..502a8d0 100644
--- a/WebCore/wml/WMLTimerElement.cpp
+++ b/WebCore/wml/WMLTimerElement.cpp
@@ -42,6 +42,11 @@ WMLTimerElement::WMLTimerElement(const QualifiedName& tagName, Document* doc)
 {
 }
 
+PassRefPtr<WMLTimerElement> WMLTimerElement::create(const QualifiedName& tagName, Document* document)
+{
+    return new WMLTimerElement(tagName, document);
+}
+
 void WMLTimerElement::parseMappedAttribute(Attribute* attr)
 {
     if (attr->name() == HTMLNames::nameAttr)
diff --git a/WebCore/wml/WMLTimerElement.h b/WebCore/wml/WMLTimerElement.h
index 09f3fbf..894c793 100644
--- a/WebCore/wml/WMLTimerElement.h
+++ b/WebCore/wml/WMLTimerElement.h
@@ -31,6 +31,8 @@ class WMLCardElement;
 
 class WMLTimerElement : public WMLElement {
 public:
+    static PassRefPtr<WMLTimerElement> create(const QualifiedName&, Document*);
+
     WMLTimerElement(const QualifiedName& tagName, Document*);
 
     virtual void parseMappedAttribute(Attribute*);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list