Element's renderer factory should return RenderPtrs.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Dec 2013 14:05:28 +0000 (14:05 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Dec 2013 14:05:28 +0000 (14:05 +0000)
<https://webkit.org/b/126318>

Rename Element::createRenderer() to createElementRenderer() and have
it return RenderPtr<RenderElement>. Propagate signature until it
builds again.

We leakPtr() the renderer at two call sites when handing things over
to raw pointer API. This'll get tidied up in subsequent patches.

Reviewed by Sam Weinig.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@161181 268f45cc-cd09-0410-ab3c-d52691b4dbfc

132 files changed:
Source/WebCore/ChangeLog
Source/WebCore/Modules/plugins/PluginReplacement.h
Source/WebCore/Modules/plugins/QuickTimePluginReplacement.cpp
Source/WebCore/Modules/plugins/QuickTimePluginReplacement.h
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/Element.h
Source/WebCore/html/HTMLAppletElement.cpp
Source/WebCore/html/HTMLAppletElement.h
Source/WebCore/html/HTMLBRElement.cpp
Source/WebCore/html/HTMLBRElement.h
Source/WebCore/html/HTMLButtonElement.cpp
Source/WebCore/html/HTMLButtonElement.h
Source/WebCore/html/HTMLCanvasElement.cpp
Source/WebCore/html/HTMLCanvasElement.h
Source/WebCore/html/HTMLDetailsElement.cpp
Source/WebCore/html/HTMLDetailsElement.h
Source/WebCore/html/HTMLElement.cpp
Source/WebCore/html/HTMLElement.h
Source/WebCore/html/HTMLFieldSetElement.cpp
Source/WebCore/html/HTMLFieldSetElement.h
Source/WebCore/html/HTMLFrameElement.cpp
Source/WebCore/html/HTMLFrameElement.h
Source/WebCore/html/HTMLFrameSetElement.cpp
Source/WebCore/html/HTMLFrameSetElement.h
Source/WebCore/html/HTMLIFrameElement.cpp
Source/WebCore/html/HTMLIFrameElement.h
Source/WebCore/html/HTMLImageElement.cpp
Source/WebCore/html/HTMLImageElement.h
Source/WebCore/html/HTMLInputElement.cpp
Source/WebCore/html/HTMLInputElement.h
Source/WebCore/html/HTMLMediaElement.cpp
Source/WebCore/html/HTMLMediaElement.h
Source/WebCore/html/HTMLMeterElement.cpp
Source/WebCore/html/HTMLMeterElement.h
Source/WebCore/html/HTMLPlugInElement.cpp
Source/WebCore/html/HTMLPlugInElement.h
Source/WebCore/html/HTMLPlugInImageElement.cpp
Source/WebCore/html/HTMLPlugInImageElement.h
Source/WebCore/html/HTMLProgressElement.cpp
Source/WebCore/html/HTMLProgressElement.h
Source/WebCore/html/HTMLSelectElement.cpp
Source/WebCore/html/HTMLSelectElement.h
Source/WebCore/html/HTMLSummaryElement.cpp
Source/WebCore/html/HTMLSummaryElement.h
Source/WebCore/html/HTMLTextAreaElement.cpp
Source/WebCore/html/HTMLTextAreaElement.h
Source/WebCore/html/HTMLVideoElement.cpp
Source/WebCore/html/HTMLVideoElement.h
Source/WebCore/html/shadow/DetailsMarkerControl.cpp
Source/WebCore/html/shadow/DetailsMarkerControl.h
Source/WebCore/html/shadow/MediaControlElements.cpp
Source/WebCore/html/shadow/MediaControlElements.h
Source/WebCore/html/shadow/MeterShadowElement.cpp
Source/WebCore/html/shadow/MeterShadowElement.h
Source/WebCore/html/shadow/ProgressShadowElement.cpp
Source/WebCore/html/shadow/ProgressShadowElement.h
Source/WebCore/html/shadow/SliderThumbElement.cpp
Source/WebCore/html/shadow/SliderThumbElement.h
Source/WebCore/html/shadow/TextControlInnerElements.cpp
Source/WebCore/html/shadow/TextControlInnerElements.h
Source/WebCore/html/track/TextTrackCue.cpp
Source/WebCore/html/track/TextTrackCue.h
Source/WebCore/mathml/MathMLInlineContainerElement.cpp
Source/WebCore/mathml/MathMLInlineContainerElement.h
Source/WebCore/mathml/MathMLMathElement.cpp
Source/WebCore/mathml/MathMLMathElement.h
Source/WebCore/mathml/MathMLSelectElement.cpp
Source/WebCore/mathml/MathMLSelectElement.h
Source/WebCore/mathml/MathMLTextElement.cpp
Source/WebCore/mathml/MathMLTextElement.h
Source/WebCore/rendering/RenderBlock.cpp
Source/WebCore/rendering/RenderElement.cpp
Source/WebCore/rendering/RenderElement.h
Source/WebCore/rendering/RenderEmbeddedObject.cpp
Source/WebCore/rendering/RenderEmbeddedObject.h
Source/WebCore/style/StyleResolveTree.cpp
Source/WebCore/svg/SVGAElement.cpp
Source/WebCore/svg/SVGAElement.h
Source/WebCore/svg/SVGAltGlyphElement.cpp
Source/WebCore/svg/SVGAltGlyphElement.h
Source/WebCore/svg/SVGCircleElement.cpp
Source/WebCore/svg/SVGCircleElement.h
Source/WebCore/svg/SVGClipPathElement.cpp
Source/WebCore/svg/SVGClipPathElement.h
Source/WebCore/svg/SVGDefsElement.cpp
Source/WebCore/svg/SVGDefsElement.h
Source/WebCore/svg/SVGEllipseElement.cpp
Source/WebCore/svg/SVGEllipseElement.h
Source/WebCore/svg/SVGFilterElement.cpp
Source/WebCore/svg/SVGFilterElement.h
Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
Source/WebCore/svg/SVGForeignObjectElement.cpp
Source/WebCore/svg/SVGForeignObjectElement.h
Source/WebCore/svg/SVGGElement.cpp
Source/WebCore/svg/SVGGElement.h
Source/WebCore/svg/SVGGraphicsElement.cpp
Source/WebCore/svg/SVGGraphicsElement.h
Source/WebCore/svg/SVGImageElement.cpp
Source/WebCore/svg/SVGImageElement.h
Source/WebCore/svg/SVGLinearGradientElement.cpp
Source/WebCore/svg/SVGLinearGradientElement.h
Source/WebCore/svg/SVGMarkerElement.cpp
Source/WebCore/svg/SVGMarkerElement.h
Source/WebCore/svg/SVGMaskElement.cpp
Source/WebCore/svg/SVGMaskElement.h
Source/WebCore/svg/SVGPathElement.cpp
Source/WebCore/svg/SVGPathElement.h
Source/WebCore/svg/SVGPatternElement.cpp
Source/WebCore/svg/SVGPatternElement.h
Source/WebCore/svg/SVGRadialGradientElement.cpp
Source/WebCore/svg/SVGRadialGradientElement.h
Source/WebCore/svg/SVGRectElement.cpp
Source/WebCore/svg/SVGRectElement.h
Source/WebCore/svg/SVGSVGElement.cpp
Source/WebCore/svg/SVGSVGElement.h
Source/WebCore/svg/SVGStopElement.cpp
Source/WebCore/svg/SVGStopElement.h
Source/WebCore/svg/SVGSwitchElement.cpp
Source/WebCore/svg/SVGSwitchElement.h
Source/WebCore/svg/SVGSymbolElement.cpp
Source/WebCore/svg/SVGSymbolElement.h
Source/WebCore/svg/SVGTRefElement.cpp
Source/WebCore/svg/SVGTRefElement.h
Source/WebCore/svg/SVGTSpanElement.cpp
Source/WebCore/svg/SVGTSpanElement.h
Source/WebCore/svg/SVGTextElement.cpp
Source/WebCore/svg/SVGTextElement.h
Source/WebCore/svg/SVGTextPathElement.cpp
Source/WebCore/svg/SVGTextPathElement.h
Source/WebCore/svg/SVGUseElement.cpp
Source/WebCore/svg/SVGUseElement.h

index 8b7e497..e787e7e 100644 (file)
@@ -1,3 +1,17 @@
+2013-12-31  Andreas Kling  <akling@apple.com>
+
+        Element's renderer factory should return RenderPtrs.
+        <https://webkit.org/b/126318>
+
+        Rename Element::createRenderer() to createElementRenderer() and have
+        it return RenderPtr<RenderElement>. Propagate signature until it
+        builds again.
+
+        We leakPtr() the renderer at two call sites when handing things over
+        to raw pointer API. This'll get tidied up in subsequent patches.
+
+        Reviewed by Sam Weinig.
+
 2013-12-31  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         [SOUP] Return early in ResourceHandle::receivedCancellation if the load has already cancelled
index 897b1a6..b08f4e4 100644 (file)
@@ -26,6 +26,7 @@
 #ifndef PluginReplacement_h
 #define PluginReplacement_h
 
+#include "RenderPtr.h"
 #include <wtf/RefCounted.h>
 #include <wtf/text/WTFString.h>
 
@@ -48,7 +49,7 @@ public:
     virtual JSC::JSObject* scriptObject() { return 0; }
 
     virtual bool willCreateRenderer() { return false; }
-    virtual RenderElement* createRenderer(HTMLPlugInElement&, PassRef<RenderStyle>) = 0;
+    virtual RenderPtr<RenderElement> createElementRenderer(HTMLPlugInElement&, PassRef<RenderStyle>) = 0;
 
 protected:
     PluginReplacement() { }
index 0c29367..2eddcdb 100644 (file)
@@ -117,14 +117,14 @@ QuickTimePluginReplacement::~QuickTimePluginReplacement()
     m_mediaElement = nullptr;
 }
 
-RenderElement* QuickTimePluginReplacement::createRenderer(HTMLPlugInElement& plugin, PassRef<RenderStyle> style)
+RenderPtr<RenderElement> QuickTimePluginReplacement::createElementRenderer(HTMLPlugInElement& plugin, PassRef<RenderStyle> style)
 {
     ASSERT_UNUSED(plugin, m_parentElement == &plugin);
 
     if (m_mediaElement)
-        return m_mediaElement->createRenderer(std::move(style));
+        return m_mediaElement->createElementRenderer(std::move(style));
 
-    return 0;
+    return nullptr;
 }
 
 DOMWrapperWorld& QuickTimePluginReplacement::isolatedWorld()
index 5a1907c..ca98f3d 100644 (file)
@@ -53,7 +53,7 @@ public:
     virtual JSC::JSObject* scriptObject() OVERRIDE { return m_scriptObject; }
 
     virtual bool willCreateRenderer() OVERRIDE { return m_mediaElement; }
-    virtual RenderElement* createRenderer(HTMLPlugInElement&, PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(HTMLPlugInElement&, PassRef<RenderStyle>) OVERRIDE;
 
     unsigned long long movieSize() const;
     void postEvent(const String&);
index e543f3a..d9dd6bf 100644 (file)
@@ -1340,7 +1340,7 @@ bool Element::rendererIsNeeded(const RenderStyle& style)
     return style.display() != NONE;
 }
 
-RenderElement* Element::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> Element::createElementRenderer(PassRef<RenderStyle> style)
 {
     return RenderElement::createFor(*this, std::move(style));
 }
index a3da164..11edea3 100644 (file)
@@ -310,7 +310,7 @@ public:
 
     void lazyReattach();
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>);
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>);
     virtual bool rendererIsNeeded(const RenderStyle&);
     void didAffectSelector(AffectedSelectorMask);
 
index bf21352..6531d3d 100644 (file)
@@ -75,7 +75,7 @@ bool HTMLAppletElement::rendererIsNeeded(const RenderStyle& style)
     return HTMLPlugInImageElement::rendererIsNeeded(style);
 }
 
-RenderElement* HTMLAppletElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLAppletElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (!canEmbedJava())
         return RenderElement::createFor(*this, std::move(style));
index 23dbd79..d45038c 100644 (file)
@@ -37,7 +37,7 @@ private:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual RenderWidget* renderWidgetForJSBindings() const;
     virtual void updateWidget(PluginCreationOption) OVERRIDE;
index 005beed..5eea85a 100644 (file)
@@ -71,12 +71,12 @@ void HTMLBRElement::collectStyleForPresentationAttribute(const QualifiedName& na
         HTMLElement::collectStyleForPresentationAttribute(name, value, style);
 }
 
-RenderElement* HTMLBRElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLBRElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (style.get().hasContent())
         return RenderElement::createFor(*this, std::move(style));
 
-    return new RenderLineBreak(*this, std::move(style));
+    return createRenderer<RenderLineBreak>(*this, std::move(style));
 }
 
 }
index 65ac588..e2fc7f5 100644 (file)
@@ -41,7 +41,7 @@ private:
     virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
     virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStyleProperties&) OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 };
 
 } // namespace
index 72a9048..bceeef5 100644 (file)
@@ -57,9 +57,9 @@ void HTMLButtonElement::setType(const AtomicString& type)
     setAttribute(typeAttr, type);
 }
 
-RenderElement* HTMLButtonElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLButtonElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderButton(*this, std::move(style));
+    return createRenderer<RenderButton>(*this, std::move(style));
 }
 
 const AtomicString& HTMLButtonElement::formControlType() const
index b46319c..a4e5e8e 100644 (file)
@@ -45,7 +45,7 @@ private:
 
     virtual const AtomicString& formControlType() const;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     // HTMLFormControlElement always creates one, but buttons don't need it.
     virtual bool alwaysCreateUserAgentShadowRoot() const OVERRIDE { return false; }
index 2dd845a..58dbdda 100644 (file)
@@ -112,16 +112,16 @@ void HTMLCanvasElement::parseAttribute(const QualifiedName& name, const AtomicSt
     HTMLElement::parseAttribute(name, value);
 }
 
-RenderElement* HTMLCanvasElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLCanvasElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     Frame* frame = document().frame();
     if (frame && frame->script().canExecuteScripts(NotAboutToExecuteScript)) {
         m_rendererIsCanvas = true;
-        return new RenderHTMLCanvas(*this, std::move(style));
+        return createRenderer<RenderHTMLCanvas>(*this, std::move(style));
     }
 
     m_rendererIsCanvas = false;
-    return HTMLElement::createRenderer(std::move(style));
+    return HTMLElement::createElementRenderer(std::move(style));
 }
 
 void HTMLCanvasElement::willAttachRenderers()
index f3772cc..81aa508 100644 (file)
@@ -150,7 +150,7 @@ private:
     HTMLCanvasElement(const QualifiedName&, Document&);
 
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual void willAttachRenderers() OVERRIDE;
     virtual bool areAuthorShadowsAllowed() const OVERRIDE;
 
index 8a27237..cae112d 100644 (file)
@@ -110,9 +110,9 @@ HTMLDetailsElement::HTMLDetailsElement(const QualifiedName& tagName, Document& d
     ASSERT(hasTagName(detailsTag));
 }
 
-RenderElement* HTMLDetailsElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLDetailsElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderBlockFlow(*this, std::move(style));
+    return createRenderer<RenderBlockFlow>(*this, std::move(style));
 }
 
 void HTMLDetailsElement::didAddUserAgentShadowRoot(ShadowRoot* root)
index c1428e6..879823d 100644 (file)
@@ -35,7 +35,7 @@ public:
 private:
     HTMLDetailsElement(const QualifiedName&, Document&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
 
index 6d2a6db..3ce325d 100644 (file)
@@ -798,10 +798,10 @@ bool HTMLElement::rendererIsNeeded(const RenderStyle& style)
     return StyledElement::rendererIsNeeded(style);
 }
 
-RenderElement* HTMLElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (hasLocalName(wbrTag))
-        return new RenderLineBreak(*this, std::move(style));
+        return createRenderer<RenderLineBreak>(*this, std::move(style));
     return RenderElement::createFor(*this, std::move(style));
 }
 
index 5caf475..5dff4dc 100644 (file)
@@ -82,7 +82,7 @@ public:
     bool ieForbidsInsertHTML() const;
 
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     HTMLFormElement* form() const { return virtualForm(); }
 
index 9279e4a..d6edf9a 100644 (file)
@@ -81,9 +81,9 @@ const AtomicString& HTMLFieldSetElement::formControlType() const
     return fieldset;
 }
 
-RenderElement* HTMLFieldSetElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLFieldSetElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderFieldset(*this, std::move(style));
+    return createRenderer<RenderFieldset>(*this, std::move(style));
 }
 
 HTMLLegendElement* HTMLFieldSetElement::legend() const
index f443a89..d331b3c 100644 (file)
@@ -49,7 +49,7 @@ private:
 
     virtual bool isEnumeratable() const OVERRIDE { return true; }
     virtual bool supportsFocus() const OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual const AtomicString& formControlType() const OVERRIDE;
     virtual bool recalcWillValidate() const OVERRIDE { return false; }
     virtual void childrenChanged(const ChildChange&) OVERRIDE;
index 4971cc7..c961d2f 100644 (file)
@@ -54,9 +54,9 @@ bool HTMLFrameElement::rendererIsNeeded(const RenderStyle&)
     return isURLAllowed();
 }
 
-RenderElement* HTMLFrameElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLFrameElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderFrame(*this, std::move(style));
+    return createRenderer<RenderFrame>(*this, std::move(style));
 }
 
 bool HTMLFrameElement::noResize() const
index 7eea419..c1c428d 100644 (file)
@@ -42,7 +42,7 @@ private:
     virtual void didAttachRenderers() OVERRIDE;
 
     virtual bool rendererIsNeeded(const RenderStyle&);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
 
index 9321c7a..6b793d1 100644 (file)
@@ -155,12 +155,12 @@ bool HTMLFrameSetElement::rendererIsNeeded(const RenderStyle& style)
     return style.isStyleAvailable();
 }
 
-RenderElement* HTMLFrameSetElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLFrameSetElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (style.get().hasContent())
         return RenderElement::createFor(*this, std::move(style));
     
-    return new RenderFrameSet(*this, std::move(style));
+    return createRenderer<RenderFrameSet>(*this, std::move(style));
 }
 
 HTMLFrameSetElement* HTMLFrameSetElement::findContaining(Element* descendant)
index 147c957..5e116ea 100644 (file)
@@ -75,7 +75,7 @@ private:
 
     virtual void willAttachRenderers() OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     
     virtual void defaultEventHandler(Event*);
 
index a8ecabe..a2f9d10 100644 (file)
@@ -95,9 +95,9 @@ bool HTMLIFrameElement::rendererIsNeeded(const RenderStyle& style)
     return isURLAllowed() && style.display() != NONE;
 }
 
-RenderElement* HTMLIFrameElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLIFrameElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderIFrame(*this, std::move(style));
+    return createRenderer<RenderIFrame>(*this, std::move(style));
 }
 
 bool HTMLIFrameElement::shouldDisplaySeamlessly() const
index 470dd61..f71b3d8 100644 (file)
@@ -46,7 +46,7 @@ private:
     virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStyleProperties&) OVERRIDE;
 
     virtual bool rendererIsNeeded(const RenderStyle&);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual void didRecalcStyle(Style::Change) OVERRIDE;
 };
index b55960d..a3730be 100644 (file)
@@ -174,14 +174,14 @@ String HTMLImageElement::altText() const
     return alt;
 }
 
-RenderElement* HTMLImageElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLImageElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (style.get().hasContent())
         return RenderElement::createFor(*this, std::move(style));
 
-    RenderImage* image = new RenderImage(*this, std::move(style));
+    auto image = createRenderer<RenderImage>(*this, std::move(style));
     image->setImageResource(RenderImageResource::create());
-    return image;
+    return std::move(image);
 }
 
 bool HTMLImageElement::canStartSelection() const
index 13b4e91..ae9863b 100644 (file)
@@ -98,7 +98,7 @@ private:
     virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStyleProperties&) OVERRIDE;
 
     virtual void didAttachRenderers() OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool canStartSelection() const OVERRIDE;
 
index 30e25f5..8261be8 100644 (file)
@@ -780,9 +780,9 @@ bool HTMLInputElement::rendererIsNeeded(const RenderStyle& style)
     return m_inputType->rendererIsNeeded() && HTMLTextFormControlElement::rendererIsNeeded(style);
 }
 
-RenderElement* HTMLInputElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLInputElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return m_inputType->createInputRenderer(std::move(style)).leakPtr();
+    return m_inputType->createInputRenderer(std::move(style));
 }
 
 void HTMLInputElement::willAttachRenderers()
index af45252..73a23ae 100644 (file)
@@ -209,7 +209,7 @@ public:
     bool canHaveSelection() const;
 
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual void willAttachRenderers() OVERRIDE;
     virtual void didAttachRenderers() OVERRIDE;
     virtual void didDetachRenderers() OVERRIDE;
index 3aa295a..25ca289 100644 (file)
@@ -649,22 +649,22 @@ bool HTMLMediaElement::rendererIsNeeded(const RenderStyle& style)
     return controls() && HTMLElement::rendererIsNeeded(style);
 }
 
-RenderElement* HTMLMediaElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLMediaElement::createElementRenderer(PassRef<RenderStyle> style)
 {
 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
     if (shouldUseVideoPluginProxy()) {
         // Setup the renderer if we already have a proxy widget.
-        RenderEmbeddedObject* mediaRenderer = new RenderEmbeddedObject(*this, std::move(style));
+        auto mediaRenderer = createRenderer<RenderEmbeddedObject>(*this, std::move(style));
         if (m_proxyWidget) {
             mediaRenderer->setWidget(m_proxyWidget);
 
             if (Frame* frame = document().frame())
                 frame->loader().client().showMediaPlayerProxyPlugin(m_proxyWidget.get());
         }
-        return mediaRenderer;
+        return std::move(mediaRenderer);
     }
 #endif
-    return new RenderMedia(*this, std::move(style));
+    return createRenderer<RenderMedia>(*this, std::move(style));
 }
 
 bool HTMLMediaElement::childShouldCreateRenderer(const Node& child) const
index 095c4b7..1f629c6 100644 (file)
@@ -479,7 +479,7 @@ protected:
     void endIgnoringTrackDisplayUpdateRequests();
 #endif
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
 private:
     void createMediaPlayer();
index da01f3c..5e9b0e0 100644 (file)
@@ -57,12 +57,12 @@ PassRefPtr<HTMLMeterElement> HTMLMeterElement::create(const QualifiedName& tagNa
     return meter;
 }
 
-RenderElement* HTMLMeterElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLMeterElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (hasAuthorShadowRoot() || !document().page()->theme().supportsMeter(style.get().appearance()))
         return RenderElement::createFor(*this, std::move(style));
 
-    return new RenderMeter(*this, std::move(style));
+    return createRenderer<RenderMeter>(*this, std::move(style));
 }
 
 bool HTMLMeterElement::childShouldCreateRenderer(const Node& child) const
index 22d919b..1a34fcc 100644 (file)
@@ -72,7 +72,7 @@ private:
     virtual bool supportLabels() const OVERRIDE { return true; }
 
     virtual bool recalcWillValidate() const { return false; }
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
 
index a6bfca4..e051697 100644 (file)
@@ -274,12 +274,12 @@ NPObject* HTMLPlugInElement::getNPObject()
 
 #endif /* ENABLE(NETSCAPE_PLUGIN_API) */
 
-RenderElement* HTMLPlugInElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLPlugInElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (m_pluginReplacement && m_pluginReplacement->willCreateRenderer())
-        return m_pluginReplacement->createRenderer(*this, std::move(style));
+        return m_pluginReplacement->createElementRenderer(*this, std::move(style));
 
-    return new RenderEmbeddedObject(*this, std::move(style));
+    return createRenderer<RenderEmbeddedObject>(*this, std::move(style));
 }
 
 void HTMLPlugInElement::swapRendererTimerFired(Timer<HTMLPlugInElement>*)
index 833e9ee..10d637a 100644 (file)
@@ -100,7 +100,7 @@ protected:
     virtual void defaultEventHandler(Event*) OVERRIDE;
 
     virtual bool requestObject(const String& url, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual void didAddUserAgentShadowRoot(ShadowRoot*) OVERRIDE;
 
     // Subclasses should use guardedDispatchBeforeLoadEvent instead of calling dispatchBeforeLoadEvent directly.
index 54114be..acae2fe 100644 (file)
@@ -196,10 +196,10 @@ bool HTMLPlugInImageElement::wouldLoadAsNetscapePlugin(const String& url, const
     return false;
 }
 
-RenderElement* HTMLPlugInImageElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLPlugInImageElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (displayState() >= PreparingPluginReplacement)
-        return HTMLPlugInElement::createRenderer(std::move(style));
+        return HTMLPlugInElement::createElementRenderer(std::move(style));
 
     // Once a PlugIn Element creates its renderer, it needs to be told when the Document goes
     // inactive or reactivates so it can clear the renderer before going into the page cache.
@@ -209,9 +209,9 @@ RenderElement* HTMLPlugInImageElement::createRenderer(PassRef<RenderStyle> style
     }
 
     if (displayState() == DisplayingSnapshot) {
-        RenderSnapshottedPlugIn* renderSnapshottedPlugIn = new RenderSnapshottedPlugIn(*this, std::move(style));
+        auto renderSnapshottedPlugIn = createRenderer<RenderSnapshottedPlugIn>(*this, std::move(style));
         renderSnapshottedPlugIn->updateSnapshot(m_snapshotImage);
-        return renderSnapshottedPlugIn;
+        return std::move(renderSnapshottedPlugIn);
     }
 
     // Fallback content breaks the DOM->Renderer class relationship of this
@@ -221,19 +221,19 @@ RenderElement* HTMLPlugInImageElement::createRenderer(PassRef<RenderStyle> style
         return RenderElement::createFor(*this, std::move(style));
 
     if (isImageType()) {
-        RenderImage* image = new RenderImage(*this, std::move(style));
+        auto image = createRenderer<RenderImage>(*this, std::move(style));
         image->setImageResource(RenderImageResource::create());
-        return image;
+        return std::move(image);
     }
 
 #if PLATFORM(IOS)
     if (ShadowRoot* shadowRoot = this->shadowRoot()) {
         Element* shadowElement = toElement(shadowRoot->firstChild());
         if (shadowElement && shadowElement->shadowPseudoId() == "-apple-youtube-shadow-iframe")
-            return new RenderBlockFlow(*this, std::move(style));
+            return createRenderer<RenderBlockFlow>(*this, std::move(style));
     }
 #endif
-    return HTMLPlugInElement::createRenderer(std::move(style));
+    return HTMLPlugInElement::createElementRenderer(std::move(style));
 }
 
 bool HTMLPlugInImageElement::willRecalcStyle(Style::Change)
index 7a5adb6..54047ec 100644 (file)
@@ -133,7 +133,7 @@ protected:
     virtual bool requestObject(const String& url, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues) OVERRIDE;
 
 private:
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool willRecalcStyle(Style::Change) OVERRIDE;
 
     virtual void didAddUserAgentShadowRoot(ShadowRoot*) OVERRIDE;
index 45f62b1..892eed7 100644 (file)
@@ -58,12 +58,12 @@ PassRefPtr<HTMLProgressElement> HTMLProgressElement::create(const QualifiedName&
     return progress.release();
 }
 
-RenderElement* HTMLProgressElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLProgressElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (!style.get().hasAppearance() || hasAuthorShadowRoot())
         return RenderElement::createFor(*this, std::move(style));
 
-    return new RenderProgress(*this, std::move(style));
+    return createRenderer<RenderProgress>(*this, std::move(style));
 }
 
 bool HTMLProgressElement::childShouldCreateRenderer(const Node& child) const
index 5c306bf..8f1c05c 100644 (file)
@@ -54,7 +54,7 @@ private:
     virtual bool shouldAppearIndeterminate() const OVERRIDE;
     virtual bool supportLabels() const OVERRIDE { return true; }
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     RenderProgress* renderProgress() const;
 
index 01c2c40..88066ea 100644 (file)
@@ -347,14 +347,14 @@ bool HTMLSelectElement::canSelectAll() const
     return !usesMenuList();
 }
 
-RenderElement* HTMLSelectElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLSelectElement::createElementRenderer(PassRef<RenderStyle> style)
 {
 #if !PLATFORM(IOS)
     if (usesMenuList())
-        return new RenderMenuList(*this, std::move(style));
-    return new RenderListBox(*this, std::move(style));
+        return createRenderer<RenderMenuList>(*this, std::move(style));
+    return createRenderer<RenderListBox>(*this, std::move(style));
 #else
-    return new RenderMenuList(*this, std::move(style));
+    return createRenderer<RenderMenuList>(*this, std::move(style));
 #endif
 }
 
index c4e4af5..f55de79 100644 (file)
@@ -136,7 +136,7 @@ private:
     virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
 
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool appendFormData(FormDataList&, bool) OVERRIDE;
 
     virtual void reset() OVERRIDE;
index 137a5d1..7c41386 100644 (file)
@@ -64,9 +64,9 @@ HTMLSummaryElement::HTMLSummaryElement(const QualifiedName& tagName, Document& d
     ASSERT(hasTagName(summaryTag));
 }
 
-RenderElement* HTMLSummaryElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLSummaryElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderBlockFlow(*this, std::move(style));
+    return createRenderer<RenderBlockFlow>(*this, std::move(style));
 }
 
 bool HTMLSummaryElement::childShouldCreateRenderer(const Node& child) const
index 2ccd9fa..f398056 100644 (file)
@@ -36,7 +36,7 @@ public:
 private:
     HTMLSummaryElement(const QualifiedName&, Document&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual void defaultEventHandler(Event*);
 
index f70de71..d40d4e8 100644 (file)
@@ -209,9 +209,9 @@ void HTMLTextAreaElement::parseAttribute(const QualifiedName& name, const Atomic
         HTMLTextFormControlElement::parseAttribute(name, value);
 }
 
-RenderElement* HTMLTextAreaElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLTextAreaElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderTextControlMultiLine(*this, std::move(style));
+    return createRenderer<RenderTextControlMultiLine>(*this, std::move(style));
 }
 
 bool HTMLTextAreaElement::appendFormData(FormDataList& encoding, bool)
index 7c16570..f8e92ec 100644 (file)
@@ -102,7 +102,7 @@ private:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
     virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStyleProperties&) OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool appendFormData(FormDataList&, bool) OVERRIDE;
     virtual void reset() OVERRIDE;
     virtual bool hasCustomFocusLogic() const OVERRIDE;
index 14098a5..2d26159 100644 (file)
@@ -67,13 +67,13 @@ bool HTMLVideoElement::rendererIsNeeded(const RenderStyle& style)
     return HTMLElement::rendererIsNeeded(style); 
 }
 
-RenderElement* HTMLVideoElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> HTMLVideoElement::createElementRenderer(PassRef<RenderStyle> style)
 {
 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
     if (shouldUseVideoPluginProxy())
-        return HTMLMediaElement::createRenderer(std::move(style));
+        return HTMLMediaElement::createElementRenderer(std::move(style));
 #endif
-    return new RenderVideo(*this, std::move(style));
+    return createRenderer<RenderVideo>(*this, std::move(style));
 }
 
 void HTMLVideoElement::didAttachRenderers()
index 9d9377a..858a072 100644 (file)
@@ -74,7 +74,7 @@ public:
     bool shouldDisplayPosterImage() const { return displayMode() == Poster || displayMode() == PosterWaitingForVideo; }
 
     URL posterImageURL() const;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
 private:
     HTMLVideoElement(const QualifiedName&, Document&, bool);
index 527a4d6..a48e29f 100644 (file)
@@ -45,9 +45,9 @@ DetailsMarkerControl::DetailsMarkerControl(Document& document)
 {
 }
 
-RenderElement* DetailsMarkerControl::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> DetailsMarkerControl::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderDetailsMarker(*this, std::move(style));
+    return createRenderer<RenderDetailsMarker>(*this, std::move(style));
 }
 
 bool DetailsMarkerControl::rendererIsNeeded(const RenderStyle& style)
index 8efd4da..c7ddc9c 100644 (file)
@@ -45,7 +45,7 @@ public:
 private:
     DetailsMarkerControl(Document&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&);
     virtual const AtomicString& shadowPseudoId() const;
 
index 297b110..420fcf4 100644 (file)
@@ -332,9 +332,9 @@ void MediaControlTimelineContainerElement::setTimeDisplaysHidden(bool hidden)
     }
 }
 
-RenderElement* MediaControlTimelineContainerElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> MediaControlTimelineContainerElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderMediaControlTimelineContainer(*this, std::move(style));
+    return createRenderer<RenderMediaControlTimelineContainer>(*this, std::move(style));
 }
 
 // ----------------------------
@@ -351,9 +351,9 @@ PassRefPtr<MediaControlVolumeSliderContainerElement> MediaControlVolumeSliderCon
     return element.release();
 }
 
-RenderElement* MediaControlVolumeSliderContainerElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> MediaControlVolumeSliderContainerElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderMediaVolumeSliderContainer(*this, std::move(style));
+    return createRenderer<RenderMediaVolumeSliderContainer>(*this, std::move(style));
 }
 
 void MediaControlVolumeSliderContainerElement::defaultEventHandler(Event* event)
@@ -1214,9 +1214,9 @@ PassRefPtr<MediaControlTextTrackContainerElement> MediaControlTextTrackContainer
     return element.release();
 }
 
-RenderElement* MediaControlTextTrackContainerElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> MediaControlTextTrackContainerElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderTextTrackContainerElement(*this, std::move(style));
+    return createRenderer<RenderTextTrackContainerElement>(*this, std::move(style));
 }
 
 const AtomicString& MediaControlTextTrackContainerElement::textTrackContainerElementShadowPseudoId()
index d91e5b1..de855da 100644 (file)
@@ -114,7 +114,7 @@ private:
     explicit MediaControlTimelineContainerElement(Document&);
     virtual const AtomicString& shadowPseudoId() const OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 };
 
 // ----------------------------
@@ -133,7 +133,7 @@ private:
     virtual const AtomicString& shadowPseudoId() const OVERRIDE;
     virtual void defaultEventHandler(Event*) OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 };
 
 // ----------------------------
@@ -482,7 +482,7 @@ private:
     explicit MediaControlTextTrackContainerElement(Document&);
     virtual const AtomicString& shadowPseudoId() const OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual PassRefPtr<Image> createTextTrackRepresentationImage() OVERRIDE;
     virtual void textTrackRepresentationBoundsChanged(const IntRect&) OVERRIDE;
index 0d0f40d..f34a9c4 100644 (file)
@@ -76,9 +76,9 @@ bool MeterInnerElement::rendererIsNeeded(const RenderStyle& style)
     return render && !render->theme().supportsMeter(render->style().appearance()) && HTMLDivElement::rendererIsNeeded(style);
 }
 
-RenderElement* MeterInnerElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> MeterInnerElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderMeter(*this, std::move(style));
+    return createRenderer<RenderMeter>(*this, std::move(style));
 }
 
 const AtomicString& MeterValueElement::valuePseudoId() const
index f5ae0d8..3ec8870 100644 (file)
@@ -59,7 +59,7 @@ private:
     MeterInnerElement(Document&);
 
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 };
 
 inline PassRefPtr<MeterInnerElement> MeterInnerElement::create(Document& document)
index ccfd4fd..112e778 100644 (file)
@@ -61,9 +61,9 @@ ProgressInnerElement::ProgressInnerElement(Document& document)
 {
 }
 
-RenderElement* ProgressInnerElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> ProgressInnerElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderProgress(*this, std::move(style));
+    return createRenderer<RenderProgress>(*this, std::move(style));
 }
 
 bool ProgressInnerElement::rendererIsNeeded(const RenderStyle& style)
index f2a7473..385a63d 100644 (file)
@@ -58,7 +58,7 @@ public:
 private:
     ProgressInnerElement(Document&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&);
 };
 
index c960cfa..913dea2 100644 (file)
@@ -212,9 +212,9 @@ void SliderThumbElement::setPositionFromValue()
         renderer()->setNeedsLayout();
 }
 
-RenderElement* SliderThumbElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SliderThumbElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSliderThumb(*this, std::move(style));
+    return createRenderer<RenderSliderThumb>(*this, std::move(style));
 }
 
 bool SliderThumbElement::isDisabledFormControl() const
@@ -611,9 +611,9 @@ PassRefPtr<SliderContainerElement> SliderContainerElement::create(Document& docu
     return adoptRef(new SliderContainerElement(document));
 }
 
-RenderElement* SliderContainerElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SliderContainerElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSliderContainer(*this, std::move(style));
+    return createRenderer<RenderSliderContainer>(*this, std::move(style));
 }
 
 const AtomicString& SliderContainerElement::shadowPseudoId() const
index 56ceb46..b88544b 100644 (file)
@@ -61,7 +61,7 @@ public:
 private:
     SliderThumbElement(Document&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual PassRefPtr<Element> cloneElementWithoutAttributesAndChildren() OVERRIDE;
     virtual bool isDisabledFormControl() const OVERRIDE;
     virtual bool matchesReadOnlyPseudoClass() const OVERRIDE;
@@ -132,7 +132,7 @@ public:
 
 private:
     SliderContainerElement(Document&);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual const AtomicString& shadowPseudoId() const;
 };
 
index a67f890..ac35831 100644 (file)
@@ -58,9 +58,9 @@ PassRefPtr<TextControlInnerContainer> TextControlInnerContainer::create(Document
     return adoptRef(new TextControlInnerContainer(document));
 }
     
-RenderElement* TextControlInnerContainer::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> TextControlInnerContainer::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderTextControlInnerContainer(*this, std::move(style));
+    return createRenderer<RenderTextControlInnerContainer>(*this, std::move(style));
 }
 
 TextControlInnerElement::TextControlInnerElement(Document& document)
@@ -112,9 +112,9 @@ void TextControlInnerTextElement::defaultEventHandler(Event* event)
         HTMLDivElement::defaultEventHandler(event);
 }
 
-RenderElement* TextControlInnerTextElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> TextControlInnerTextElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderTextControlInnerBlock(*this, std::move(style));
+    return createRenderer<RenderTextControlInnerBlock>(*this, std::move(style));
 }
 
 RenderTextControlInnerBlock* TextControlInnerTextElement::renderer() const
index 20aaad9..65fbeac 100644 (file)
@@ -41,7 +41,7 @@ public:
     static PassRefPtr<TextControlInnerContainer> create(Document&);
 protected:
     TextControlInnerContainer(Document&);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 };
 
 class TextControlInnerElement FINAL : public HTMLDivElement {
@@ -66,7 +66,7 @@ public:
 
 private:
     TextControlInnerTextElement(Document&);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE;
     virtual bool isMouseFocusable() const OVERRIDE { return false; }
     virtual bool isTextControlInnerTextElement() const OVERRIDE { return true; }
index 7fc1cae..67ff91a 100644 (file)
@@ -176,9 +176,9 @@ const AtomicString& TextTrackCueBox::textTrackCueBoxShadowPseudoId()
     return trackDisplayBoxShadowPseudoId;
 }
 
-RenderElement* TextTrackCueBox::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> TextTrackCueBox::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderTextTrackCue(*this, std::move(style));
+    return createRenderer<RenderTextTrackCue>(*this, std::move(style));
 }
 
 // ----------------------------
index 04c16a2..603c9a0 100644 (file)
@@ -64,7 +64,7 @@ public:
 protected:
     TextTrackCueBox(Document&, TextTrackCue*);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     TextTrackCue* m_cue;
 };
index 34e729c..1d942ac 100644 (file)
@@ -54,38 +54,38 @@ PassRefPtr<MathMLInlineContainerElement> MathMLInlineContainerElement::create(co
     return adoptRef(new MathMLInlineContainerElement(tagName, document));
 }
 
-RenderElement* MathMLInlineContainerElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> MathMLInlineContainerElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (hasLocalName(annotation_xmlTag))
-        return new RenderMathMLRow(*this, std::move(style));
+        return createRenderer<RenderMathMLRow>(*this, std::move(style));
     if (hasLocalName(merrorTag) || hasLocalName(mphantomTag) || hasLocalName(mrowTag) || hasLocalName(mstyleTag))
-        return new RenderMathMLRow(*this, std::move(style));
+        return createRenderer<RenderMathMLRow>(*this, std::move(style));
     if (hasLocalName(msubTag))
-        return new RenderMathMLScripts(*this, std::move(style));
+        return createRenderer<RenderMathMLScripts>(*this, std::move(style));
     if (hasLocalName(msupTag))
-        return new RenderMathMLScripts(*this, std::move(style));
+        return createRenderer<RenderMathMLScripts>(*this, std::move(style));
     if (hasLocalName(msubsupTag))
-        return new RenderMathMLScripts(*this, std::move(style));
+        return createRenderer<RenderMathMLScripts>(*this, std::move(style));
     if (hasLocalName(mmultiscriptsTag))
-        return new RenderMathMLScripts(*this, std::move(style));
+        return createRenderer<RenderMathMLScripts>(*this, std::move(style));
     if (hasLocalName(moverTag))
-        return new RenderMathMLUnderOver(*this, std::move(style));
+        return createRenderer<RenderMathMLUnderOver>(*this, std::move(style));
     if (hasLocalName(munderTag))
-        return new RenderMathMLUnderOver(*this, std::move(style));
+        return createRenderer<RenderMathMLUnderOver>(*this, std::move(style));
     if (hasLocalName(munderoverTag))
-        return new RenderMathMLUnderOver(*this, std::move(style));
+        return createRenderer<RenderMathMLUnderOver>(*this, std::move(style));
     if (hasLocalName(mfracTag))
-        return new RenderMathMLFraction(*this, std::move(style));
+        return createRenderer<RenderMathMLFraction>(*this, std::move(style));
     if (hasLocalName(msqrtTag))
-        return new RenderMathMLSquareRoot(*this, std::move(style));
+        return createRenderer<RenderMathMLSquareRoot>(*this, std::move(style));
     if (hasLocalName(mrootTag))
-        return new RenderMathMLRoot(*this, std::move(style));
+        return createRenderer<RenderMathMLRoot>(*this, std::move(style));
     if (hasLocalName(mfencedTag))
-        return new RenderMathMLFenced(*this, std::move(style));
+        return createRenderer<RenderMathMLFenced>(*this, std::move(style));
     if (hasLocalName(mtableTag))
-        return new RenderMathMLTable(*this, std::move(style));
+        return createRenderer<RenderMathMLTable>(*this, std::move(style));
 
-    return new RenderMathMLBlock(*this, std::move(style));
+    return createRenderer<RenderMathMLBlock>(*this, std::move(style));
 }
 
 }
index 0a82a24..1245efa 100644 (file)
@@ -40,7 +40,7 @@ protected:
     MathMLInlineContainerElement(const QualifiedName& tagName, Document&);
 
 private:
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 };
     
 }
index 81ca94b..6f2f389 100644 (file)
@@ -51,9 +51,9 @@ Node::InsertionNotificationRequest MathMLMathElement::insertedInto(ContainerNode
     return MathMLInlineContainerElement::insertedInto(insertionPoint);
 }
 
-RenderElement* MathMLMathElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> MathMLMathElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderMathMLMath(*this, std::move(style));
+    return createRenderer<RenderMathMLMath>(*this, std::move(style));
 }
 
 }
index d5d7b8c..ebdd380 100644 (file)
@@ -40,7 +40,7 @@ private:
     MathMLMathElement(const QualifiedName& tagName, Document&);
 
     virtual InsertionNotificationRequest insertedInto(ContainerNode&) OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 };
     
 }
index faabdfc..f911dfc 100644 (file)
@@ -47,9 +47,9 @@ PassRefPtr<MathMLSelectElement> MathMLSelectElement::create(const QualifiedName&
     return adoptRef(new MathMLSelectElement(tagName, document));
 }
 
-RenderElement* MathMLSelectElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> MathMLSelectElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderMathMLRow(*this, std::move(style));
+    return createRenderer<RenderMathMLRow>(*this, std::move(style));
 }
 
 bool MathMLSelectElement::childShouldCreateRenderer(const Node& child) const
index 88cb755..435968b 100644 (file)
@@ -37,7 +37,7 @@ public:
 
 private:
     MathMLSelectElement(const QualifiedName& tagName, Document&);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
index 2e43d68..4f17b6c 100644 (file)
@@ -63,14 +63,14 @@ void MathMLTextElement::childrenChanged(const ChildChange& change)
         renderer()->updateFromElement();
 }
 
-RenderElement* MathMLTextElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> MathMLTextElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (hasLocalName(MathMLNames::moTag))
-        return new RenderMathMLOperator(*this, std::move(style));
+        return createRenderer<RenderMathMLOperator>(*this, std::move(style));
     if (hasLocalName(MathMLNames::mspaceTag))
-        return new RenderMathMLSpace(*this, std::move(style));
+        return createRenderer<RenderMathMLSpace>(*this, std::move(style));
 
-    return MathMLElement::createRenderer(std::move(style));
+    return MathMLElement::createElementRenderer(std::move(style));
 }
 
 bool MathMLTextElement::childShouldCreateRenderer(const Node& child) const
index 3e3075e..6a9e0ba 100644 (file)
@@ -40,7 +40,7 @@ public:
 private:
     MathMLTextElement(const QualifiedName& tagName, Document&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     virtual void childrenChanged(const ChildChange&) OVERRIDE;
index 08c7b16..d4e36e5 100644 (file)
@@ -511,8 +511,8 @@ RenderBlock* RenderBlock::clone() const
         cloneBlock = createAnonymousBlock();
         cloneBlock->setChildrenInline(childrenInline());
     } else {
-        auto cloneRenderer = element()->createRenderer(style());
-        cloneBlock = toRenderBlock(cloneRenderer);
+        auto cloneRenderer = element()->createElementRenderer(style());
+        cloneBlock = toRenderBlock(cloneRenderer.leakPtr());
         cloneBlock->initializeStyle();
 
         // This takes care of setting the right value of childrenInline in case
index bc17da6..85a05c5 100644 (file)
@@ -122,7 +122,7 @@ RenderElement::~RenderElement()
     }
 }
 
-RenderElement* RenderElement::createFor(Element& element, PassRef<RenderStyle> style)
+RenderPtr<RenderElement> RenderElement::createFor(Element& element, PassRef<RenderStyle> style)
 {
     Document& document = element.document();
 
@@ -131,64 +131,64 @@ RenderElement* RenderElement::createFor(Element& element, PassRef<RenderStyle> s
     // Otherwise acts as if we didn't support this feature.
     const ContentData* contentData = style.get().contentData();
     if (contentData && !contentData->next() && contentData->isImage() && !element.isPseudoElement()) {
-        RenderImage* image = new RenderImage(element, std::move(style));
+        auto image = createRenderer<RenderImage>(element, std::move(style));
         if (const StyleImage* styleImage = static_cast<const ImageContentData*>(contentData)->image()) {
             image->setImageResource(RenderImageResourceStyleImage::create(const_cast<StyleImage&>(*styleImage)));
             image->setIsGeneratedContent();
         } else
             image->setImageResource(RenderImageResource::create());
-        return image;
+        return std::move(image);
     }
 
     if (element.hasTagName(HTMLNames::rubyTag)) {
         if (style.get().display() == INLINE)
-            return new RenderRubyAsInline(element, std::move(style));
+            return createRenderer<RenderRubyAsInline>(element, std::move(style));
         if (style.get().display() == BLOCK)
-            return new RenderRubyAsBlock(element, std::move(style));
+            return createRenderer<RenderRubyAsBlock>(element, std::move(style));
     }
     // treat <rt> as ruby text ONLY if it still has its default treatment of block
     if (element.hasTagName(HTMLNames::rtTag) && style.get().display() == BLOCK)
-        return new RenderRubyText(element, std::move(style));
+        return createRenderer<RenderRubyText>(element, std::move(style));
     switch (style.get().display()) {
     case NONE:
         style.dropRef();
         return nullptr;
     case INLINE:
-        return new RenderInline(element, std::move(style));
+        return createRenderer<RenderInline>(element, std::move(style));
     case BLOCK:
     case INLINE_BLOCK:
     case RUN_IN:
     case COMPACT:
         if ((!style.get().hasAutoColumnCount() || !style.get().hasAutoColumnWidth()) && document.regionBasedColumnsEnabled())
-            return new RenderMultiColumnBlock(element, std::move(style));
-        return new RenderBlockFlow(element, std::move(style));
+            return createRenderer<RenderMultiColumnBlock>(element, std::move(style));
+        return createRenderer<RenderBlockFlow>(element, std::move(style));
     case LIST_ITEM:
-        return new RenderListItem(element, std::move(style));
+        return createRenderer<RenderListItem>(element, std::move(style));
     case TABLE:
     case INLINE_TABLE:
-        return new RenderTable(element, std::move(style));
+        return createRenderer<RenderTable>(element, std::move(style));
     case TABLE_ROW_GROUP:
     case TABLE_HEADER_GROUP:
     case TABLE_FOOTER_GROUP:
-        return new RenderTableSection(element, std::move(style));
+        return createRenderer<RenderTableSection>(element, std::move(style));
     case TABLE_ROW:
-        return new RenderTableRow(element, std::move(style));
+        return createRenderer<RenderTableRow>(element, std::move(style));
     case TABLE_COLUMN_GROUP:
     case TABLE_COLUMN:
-        return new RenderTableCol(element, std::move(style));
+        return createRenderer<RenderTableCol>(element, std::move(style));
     case TABLE_CELL:
-        return new RenderTableCell(element, std::move(style));
+        return createRenderer<RenderTableCell>(element, std::move(style));
     case TABLE_CAPTION:
-        return new RenderTableCaption(element, std::move(style));
+        return createRenderer<RenderTableCaption>(element, std::move(style));
     case BOX:
     case INLINE_BOX:
-        return new RenderDeprecatedFlexibleBox(element, std::move(style));
+        return createRenderer<RenderDeprecatedFlexibleBox>(element, std::move(style));
     case FLEX:
     case INLINE_FLEX:
-        return new RenderFlexibleBox(element, std::move(style));
+        return createRenderer<RenderFlexibleBox>(element, std::move(style));
     case GRID:
     case INLINE_GRID:
-        return new RenderGrid(element, std::move(style));
+        return createRenderer<RenderGrid>(element, std::move(style));
     }
     ASSERT_NOT_REACHED();
     return nullptr;
index 90988b3..fe28513 100644 (file)
@@ -31,7 +31,7 @@ class RenderElement : public RenderObject {
 public:
     virtual ~RenderElement();
 
-    static RenderElement* createFor(Element&, PassRef<RenderStyle>);
+    static RenderPtr<RenderElement> createFor(Element&, PassRef<RenderStyle>);
 
     bool hasInitializedStyle() const { return m_hasInitializedStyle; }
 
index 2a9dbe5..f7246f8 100644 (file)
@@ -116,9 +116,9 @@ RenderEmbeddedObject::~RenderEmbeddedObject()
     view().frameView().removeEmbeddedObjectToUpdate(*this);
 }
 
-RenderEmbeddedObject* RenderEmbeddedObject::createForApplet(HTMLAppletElement& applet, PassRef<RenderStyle> style)
+RenderPtr<RenderEmbeddedObject> RenderEmbeddedObject::createForApplet(HTMLAppletElement& applet, PassRef<RenderStyle> style)
 {
-    RenderEmbeddedObject* renderer = new RenderEmbeddedObject(applet, std::move(style));
+    auto renderer = createRenderer<RenderEmbeddedObject>(applet, std::move(style));
     renderer->setInline(true);
     return renderer;
 }
index 2fdbce3..9fa19a0 100644 (file)
@@ -38,7 +38,7 @@ public:
     RenderEmbeddedObject(HTMLFrameOwnerElement&, PassRef<RenderStyle>);
     virtual ~RenderEmbeddedObject();
 
-    static RenderEmbeddedObject* createForApplet(HTMLAppletElement&, PassRef<RenderStyle>);
+    static RenderPtr<RenderEmbeddedObject> createForApplet(HTMLAppletElement&, PassRef<RenderStyle>);
 
     enum PluginUnavailabilityReason {
         PluginMissing,
index eab570c..4574313 100644 (file)
@@ -237,7 +237,7 @@ static void createRendererIfNeeded(Element& element, PassRefPtr<RenderStyle> res
         nextRenderer = nextSiblingRenderer(element, renderingParentNode);
     }
 
-    RenderElement* newRenderer = element.createRenderer(style.releaseNonNull());
+    RenderElement* newRenderer = element.createElementRenderer(style.releaseNonNull()).leakPtr();
     if (!newRenderer)
         return;
     if (!parentRenderer->isChildAllowed(*newRenderer, newRenderer->style())) {
index c0d2e24..f6fbbc6 100644 (file)
@@ -139,12 +139,12 @@ void SVGAElement::svgAttributeChanged(const QualifiedName& attrName)
     }
 }
 
-RenderElement* SVGAElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGAElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (parentNode() && parentNode()->isSVGElement() && toSVGElement(parentNode())->isTextContent())
-        return new RenderSVGInline(*this, std::move(style));
+        return createRenderer<RenderSVGInline>(*this, std::move(style));
 
-    return new RenderSVGTransformableContainer(*this, std::move(style));
+    return createRenderer<RenderSVGTransformableContainer>(*this, std::move(style));
 }
 
 void SVGAElement::defaultEventHandler(Event* event)
index 52c172c..e46608e 100644 (file)
@@ -48,7 +48,7 @@ private:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual void svgAttributeChanged(const QualifiedName&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     virtual void defaultEventHandler(Event*);
index e1b1950..6df3beb 100644 (file)
@@ -82,9 +82,9 @@ bool SVGAltGlyphElement::childShouldCreateRenderer(const Node& child) const
     return false;
 }
 
-RenderElement* SVGAltGlyphElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGAltGlyphElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGTSpan(*this, std::move(style));
+    return createRenderer<RenderSVGTSpan>(*this, std::move(style));
 }
 
 bool SVGAltGlyphElement::hasValidGlyphElements(Vector<String>& glyphNames) const
index b6154e2..90ef36e 100644 (file)
@@ -46,7 +46,7 @@ public:
 private:
     SVGAltGlyphElement(const QualifiedName&, Document&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGAltGlyphElement)
index 9c2d81f..0dccf19 100644 (file)
@@ -139,9 +139,9 @@ bool SVGCircleElement::selfHasRelativeLengths() const
         || r().isRelative();
 }
 
-RenderElement* SVGCircleElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGCircleElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGEllipse(*this, std::move(style));
+    return createRenderer<RenderSVGEllipse>(*this, std::move(style));
 }
 
 }
index aa9c83d..2d35212 100644 (file)
@@ -46,7 +46,7 @@ private:
 
     virtual bool selfHasRelativeLengths() const;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGCircleElement)
         DECLARE_ANIMATED_LENGTH(Cx, cx)
index 7a23ae9..446dabe 100644 (file)
@@ -114,9 +114,9 @@ void SVGClipPathElement::childrenChanged(const ChildChange& change)
         object->setNeedsLayout();
 }
 
-RenderElement* SVGClipPathElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGClipPathElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGResourceClipper(*this, std::move(style));
+    return createRenderer<RenderSVGResourceClipper>(*this, std::move(style));
 }
 
 }
index 99b504c..4e9affc 100644 (file)
@@ -48,7 +48,7 @@ private:
     virtual void svgAttributeChanged(const QualifiedName&);
     virtual void childrenChanged(const ChildChange&) OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGClipPathElement)
         DECLARE_ANIMATED_ENUMERATION(ClipPathUnits, clipPathUnits, SVGUnitTypes::SVGUnitType)
index fbf2c28..6ff2f6a 100644 (file)
@@ -53,9 +53,9 @@ bool SVGDefsElement::isValid() const
     return SVGTests::isValid();
 }
 
-RenderElement* SVGDefsElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGDefsElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGHiddenContainer(*this, std::move(style));
+    return createRenderer<RenderSVGHiddenContainer>(*this, std::move(style));
 }
 
 }
index 2f24704..a465c45 100644 (file)
@@ -38,7 +38,7 @@ private:
 
     virtual bool isValid() const;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGDefsElement)
         DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
index a8e7bee..e8e70f5 100644 (file)
@@ -145,9 +145,9 @@ bool SVGEllipseElement::selfHasRelativeLengths() const
         || ry().isRelative();
 }
 
-RenderElement* SVGEllipseElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGEllipseElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGEllipse(*this, std::move(style));
+    return createRenderer<RenderSVGEllipse>(*this, std::move(style));
 }
 
 }
index c9213fd..7350a71 100644 (file)
@@ -46,7 +46,7 @@ private:
 
     virtual bool selfHasRelativeLengths() const;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGEllipseElement)
         DECLARE_ANIMATED_LENGTH(Cx, cx)
index 353e479..5da9564 100644 (file)
@@ -188,9 +188,9 @@ void SVGFilterElement::childrenChanged(const ChildChange& change)
         object->setNeedsLayout();
 }
 
-RenderElement* SVGFilterElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGFilterElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGResourceFilter(*this, std::move(style));
+    return createRenderer<RenderSVGResourceFilter>(*this, std::move(style));
 }
 
 bool SVGFilterElement::childShouldCreateRenderer(const Node& child) const
index 152f299..322b800 100644 (file)
@@ -54,7 +54,7 @@ private:
     virtual void svgAttributeChanged(const QualifiedName&);
     virtual void childrenChanged(const ChildChange&) OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     virtual bool selfHasRelativeLengths() const;
index 19f8227..09aabf0 100644 (file)
@@ -142,9 +142,9 @@ void SVGFilterPrimitiveStandardAttributes::setStandardAttributes(FilterEffect* f
         filterEffect->setHasHeight(true);
 }
 
-RenderElement* SVGFilterPrimitiveStandardAttributes::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGFilterPrimitiveStandardAttributes::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGResourceFilterPrimitive(*this, std::move(style));
+    return createRenderer<RenderSVGResourceFilterPrimitive>(*this, std::move(style));
 }
 
 bool SVGFilterPrimitiveStandardAttributes::rendererIsNeeded(const RenderStyle& style)
index 6c46362..a4d0315 100644 (file)
@@ -68,7 +68,7 @@ protected:
 private:
     virtual bool isFilterEffect() const OVERRIDE { return true; }
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE { return false; }
 
index 3e10699..37cc8cd 100644 (file)
@@ -126,9 +126,9 @@ void SVGForeignObjectElement::svgAttributeChanged(const QualifiedName& attrName)
         RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
 }
 
-RenderElement* SVGForeignObjectElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGForeignObjectElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGForeignObject(*this, std::move(style));
+    return createRenderer<RenderSVGForeignObject>(*this, std::move(style));
 }
 
 bool SVGForeignObjectElement::childShouldCreateRenderer(const Node& child) const
index 7f3efd4..94a5fe8 100644 (file)
@@ -45,7 +45,7 @@ private:
 
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool selfHasRelativeLengths() const;
 
index e5fa7ff..2d64904 100644 (file)
@@ -89,16 +89,16 @@ void SVGGElement::svgAttributeChanged(const QualifiedName& attrName)
         RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
 }
 
-RenderElement* SVGGElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGGElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     // SVG 1.1 testsuite explicitely uses constructs like <g display="none"><linearGradient>
     // We still have to create renderers for the <g> & <linearGradient> element, though the
     // subtree may be hidden - we only want the resource renderers to exist so they can be
     // referenced from somewhere else.
     if (style.get().display() == NONE)
-        return new RenderSVGHiddenContainer(*this, std::move(style));
+        return createRenderer<RenderSVGHiddenContainer>(*this, std::move(style));
 
-    return new RenderSVGTransformableContainer(*this, std::move(style));
+    return createRenderer<RenderSVGTransformableContainer>(*this, std::move(style));
 }
 
 bool SVGGElement::rendererIsNeeded(const RenderStyle&)
index 90f3791..5b2e2e1 100644 (file)
@@ -36,7 +36,7 @@ public:
 private:
     SVGGElement(const QualifiedName&, Document&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool isValid() const OVERRIDE { return SVGTests::isValid(); }
     virtual bool supportsFocus() const OVERRIDE { return true; }
index 349ca5d..53ba8db 100644 (file)
@@ -162,10 +162,10 @@ FloatRect SVGGraphicsElement::getBBox(StyleUpdateStrategy styleUpdateStrategy)
     return SVGTransformable::getBBox(this, styleUpdateStrategy);
 }
 
-RenderElement* SVGGraphicsElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGGraphicsElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     // By default, any subclass is expected to do path-based drawing
-    return new RenderSVGPath(*this, std::move(style));
+    return createRenderer<RenderSVGPath>(*this, std::move(style));
 }
 
 void SVGGraphicsElement::toClipPath(Path& path)
index 04f547b..65ec1da 100644 (file)
@@ -49,7 +49,7 @@ public:
 
     // "base class" methods for all the elements which render as paths
     virtual void toClipPath(Path&);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
 protected:
     SVGGraphicsElement(const QualifiedName&, Document&);
index 059a23d..22a8f8e 100644 (file)
@@ -182,9 +182,9 @@ bool SVGImageElement::selfHasRelativeLengths() const
         || height().isRelative();
 }
 
-RenderElement* SVGImageElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGImageElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGImage(*this, std::move(style));
+    return createRenderer<RenderSVGImage>(*this, std::move(style));
 }
 
 bool SVGImageElement::haveLoadedRequiredResources()
index 43074c7..5f10e01 100644 (file)
@@ -53,7 +53,7 @@ private:
     virtual void didAttachRenderers() OVERRIDE;
     virtual InsertionNotificationRequest insertedInto(ContainerNode&) OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual const AtomicString& imageSourceURL() const OVERRIDE;
     virtual void addSubresourceAttributeURLs(ListHashSet<URL>&) const;
index feae2a1..624c007 100644 (file)
@@ -118,9 +118,9 @@ void SVGLinearGradientElement::svgAttributeChanged(const QualifiedName& attrName
         object->setNeedsLayout();
 }
 
-RenderElement* SVGLinearGradientElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGLinearGradientElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGResourceLinearGradient(*this, std::move(style));
+    return createRenderer<RenderSVGResourceLinearGradient>(*this, std::move(style));
 }
 
 bool SVGLinearGradientElement::collectGradientAttributes(LinearGradientAttributes& attributes)
index 216df91..b78d3a9 100644 (file)
@@ -43,7 +43,7 @@ private:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual void svgAttributeChanged(const QualifiedName&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool selfHasRelativeLengths() const;
 
index 5c71cff..40b1288 100644 (file)
@@ -214,9 +214,9 @@ void SVGMarkerElement::setOrientToAngle(const SVGAngle& angle)
     svgAttributeChanged(orientAnglePropertyInfo()->attributeName);
 }
 
-RenderElement* SVGMarkerElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGMarkerElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGResourceMarker(*this, std::move(style));
+    return createRenderer<RenderSVGResourceMarker>(*this, std::move(style));
 }
 
 bool SVGMarkerElement::selfHasRelativeLengths() const
index 0a3a23a..f52e314 100644 (file)
@@ -130,7 +130,7 @@ private:
     virtual void svgAttributeChanged(const QualifiedName&);
     virtual void childrenChanged(const ChildChange&) OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&) { return true; }
 
     virtual bool selfHasRelativeLengths() const;
index 91f5b62..42ed45f 100644 (file)
@@ -157,9 +157,9 @@ void SVGMaskElement::childrenChanged(const ChildChange& change)
         object->setNeedsLayout();
 }
 
-RenderElement* SVGMaskElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGMaskElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGResourceMasker(*this, std::move(style));
+    return createRenderer<RenderSVGResourceMasker>(*this, std::move(style));
 }
 
 bool SVGMaskElement::selfHasRelativeLengths() const
index 853e53f..ac19637 100644 (file)
@@ -49,7 +49,7 @@ private:
     virtual void svgAttributeChanged(const QualifiedName&);
     virtual void childrenChanged(const ChildChange&) OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool selfHasRelativeLengths() const;
 
index bc27b88..3f3a08f 100644 (file)
@@ -404,10 +404,10 @@ FloatRect SVGPathElement::getBBox(StyleUpdateStrategy styleUpdateStrategy)
     return renderer->path().boundingRect();
 }
 
-RenderElement* SVGPathElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGPathElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     // By default, any subclass is expected to do path-based drawing
-    return new RenderSVGPath(*this, std::move(style));
+    return createRenderer<RenderSVGPath>(*this, std::move(style));
 }
 
 }
index 47eccfb..2aa0801 100644 (file)
@@ -118,7 +118,7 @@ private:
         DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
     END_DECLARE_ANIMATED_PROPERTIES
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual Node::InsertionNotificationRequest insertedInto(ContainerNode&) OVERRIDE;
     virtual void removedFrom(ContainerNode&) OVERRIDE;
index 8c5e38c..e8a8d3a 100644 (file)
@@ -182,9 +182,9 @@ void SVGPatternElement::childrenChanged(const ChildChange& change)
         object->setNeedsLayout();
 }
 
-RenderElement* SVGPatternElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGPatternElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGResourcePattern(*this, std::move(style));
+    return createRenderer<RenderSVGResourcePattern>(*this, std::move(style));
 }
 
 void SVGPatternElement::collectPatternAttributes(PatternAttributes& attributes) const
index 3d48425..2342727 100644 (file)
@@ -63,7 +63,7 @@ private:
     virtual void svgAttributeChanged(const QualifiedName&);
     virtual void childrenChanged(const ChildChange&) OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool selfHasRelativeLengths() const;
 
index 0c864d5..5199cf7 100644 (file)
@@ -130,9 +130,9 @@ void SVGRadialGradientElement::svgAttributeChanged(const QualifiedName& attrName
         object->setNeedsLayout();
 }
 
-RenderElement* SVGRadialGradientElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGRadialGradientElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGResourceRadialGradient(*this, std::move(style));
+    return createRenderer<RenderSVGResourceRadialGradient>(*this, std::move(style));
 }
 
 bool SVGRadialGradientElement::collectGradientAttributes(RadialGradientAttributes& attributes)
index 7151ff1..aa3344d 100644 (file)
@@ -43,7 +43,7 @@ private:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual void svgAttributeChanged(const QualifiedName&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool selfHasRelativeLengths() const;
 
index 06fda46..ecee2d7 100644 (file)
@@ -160,9 +160,9 @@ bool SVGRectElement::selfHasRelativeLengths() const
         || ry().isRelative();
 }
 
-RenderElement* SVGRectElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGRectElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGRect(*this, std::move(style));
+    return createRenderer<RenderSVGRect>(*this, std::move(style));
 }
 
 }
index b0f98d8..fd8a220 100644 (file)
@@ -47,7 +47,7 @@ private:
 
     virtual bool selfHasRelativeLengths() const;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGRectElement)
         DECLARE_ANIMATED_LENGTH(X, x)
index 38dc9e2..d2ea1b5 100644 (file)
@@ -478,12 +478,12 @@ bool SVGSVGElement::rendererIsNeeded(const RenderStyle& style)
     return StyledElement::rendererIsNeeded(style);
 }
 
-RenderElement* SVGSVGElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGSVGElement::createElementRenderer(PassRef<RenderStyle> style)
 {
     if (isOutermostSVGSVGElement())
-        return new RenderSVGRoot(*this, std::move(style));
+        return createRenderer<RenderSVGRoot>(*this, std::move(style));
 
-    return new RenderSVGViewportContainer(*this, std::move(style));
+    return createRenderer<RenderSVGViewportContainer>(*this, std::move(style));
 }
 
 Node::InsertionNotificationRequest SVGSVGElement::insertedInto(ContainerNode& rootParent)
index b1564fc..d9d5c8d 100644 (file)
@@ -142,7 +142,7 @@ private:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
 
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual InsertionNotificationRequest insertedInto(ContainerNode&) OVERRIDE;
     virtual void removedFrom(ContainerNode&) OVERRIDE;
index 73f687f..54f9193 100644 (file)
@@ -98,9 +98,9 @@ void SVGStopElement::svgAttributeChanged(const QualifiedName& attrName)
     ASSERT_NOT_REACHED();
 }
 
-RenderElement* SVGStopElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGStopElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGGradientStop(*this, std::move(style));
+    return createRenderer<RenderSVGGradientStop>(*this, std::move(style));
 }
 
 bool SVGStopElement::rendererIsNeeded(const RenderStyle&)
index 01884b4..5cd6386 100644 (file)
@@ -42,7 +42,7 @@ private:
 
     virtual bool isGradientStop() const OVERRIDE { return true; }
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGStopElement)
index 1127e4c..9d76b9f 100644 (file)
@@ -62,9 +62,9 @@ bool SVGSwitchElement::childShouldCreateRenderer(const Node& child) const
     return false;
 }
 
-RenderElement* SVGSwitchElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGSwitchElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGTransformableContainer(*this, std::move(style));
+    return createRenderer<RenderSVGTransformableContainer>(*this, std::move(style));
 }
 
 }
index 70d7519..9ba1d2d 100644 (file)
@@ -40,7 +40,7 @@ private:
     virtual bool supportsFocus() const OVERRIDE { return true; }
 
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGSwitchElement)
         DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
index a3910df..ca9d770 100644 (file)
@@ -101,9 +101,9 @@ bool SVGSymbolElement::selfHasRelativeLengths() const
     return hasAttribute(SVGNames::viewBoxAttr);
 }
 
-RenderElement* SVGSymbolElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGSymbolElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGHiddenContainer(*this, std::move(style));
+    return createRenderer<RenderSVGHiddenContainer>(*this, std::move(style));
 }
 
 }
index e07493f..b02f312 100644 (file)
@@ -45,7 +45,7 @@ private:
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual void svgAttributeChanged(const QualifiedName&);
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool selfHasRelativeLengths() const;
 
index b672016..439cea4 100644 (file)
@@ -220,9 +220,9 @@ void SVGTRefElement::svgAttributeChanged(const QualifiedName& attrName)
     ASSERT_NOT_REACHED();
 }
 
-RenderElement* SVGTRefElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGTRefElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGInline(*this, std::move(style));
+    return createRenderer<RenderSVGInline>(*this, std::move(style));
 }
 
 bool SVGTRefElement::childShouldCreateRenderer(const Node& child) const
index 70d8acd..f5e9a4a 100644 (file)
@@ -44,7 +44,7 @@ private:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual void svgAttributeChanged(const QualifiedName&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&);
 
index 85ffa6d..f93455c 100644 (file)
@@ -40,9 +40,9 @@ PassRefPtr<SVGTSpanElement> SVGTSpanElement::create(const QualifiedName& tagName
     return adoptRef(new SVGTSpanElement(tagName, document));
 }
 
-RenderElement* SVGTSpanElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGTSpanElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGTSpan(*this, std::move(style));
+    return createRenderer<RenderSVGTSpan>(*this, std::move(style));
 }
 
 bool SVGTSpanElement::childShouldCreateRenderer(const Node& child) const
index d680917..dff7c3f 100644 (file)
@@ -33,7 +33,7 @@ public:
 private:
     SVGTSpanElement(const QualifiedName&, Document&);
             
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&);
 };
index ddf7e4a..bdd931f 100644 (file)
@@ -68,9 +68,9 @@ AffineTransform SVGTextElement::animatedLocalTransform() const
     return matrix;
 }
 
-RenderElement* SVGTextElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGTextElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGText(*this, std::move(style));
+    return createRenderer<RenderSVGText>(*this, std::move(style));
 }
 
 bool SVGTextElement::childShouldCreateRenderer(const Node& child) const
index 0a28b04..f213525 100644 (file)
@@ -37,7 +37,7 @@ private:
 
     virtual bool supportsFocus() const OVERRIDE { return true; }
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 };
 
index e9ee005..8b30c66 100644 (file)
@@ -127,9 +127,9 @@ void SVGTextPathElement::svgAttributeChanged(const QualifiedName& attrName)
         RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
 }
 
-RenderElement* SVGTextPathElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGTextPathElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGTextPath(*this, std::move(style));
+    return createRenderer<RenderSVGTextPath>(*this, std::move(style));
 }
 
 bool SVGTextPathElement::childShouldCreateRenderer(const Node& child) const
index aec89be..9d15373 100644 (file)
@@ -127,7 +127,7 @@ private:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual void svgAttributeChanged(const QualifiedName&);
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&);
 
index 6b7a831..bf25579 100644 (file)
@@ -519,9 +519,9 @@ void SVGUseElement::buildShadowAndInstanceTree(SVGElement* target)
 #endif
 }
 
-RenderElement* SVGUseElement::createRenderer(PassRef<RenderStyle> style)
+RenderPtr<RenderElement> SVGUseElement::createElementRenderer(PassRef<RenderStyle> style)
 {
-    return new RenderSVGTransformableContainer(*this, std::move(style));
+    return createRenderer<RenderSVGTransformableContainer>(*this, std::move(style));
 }
 
 static bool isDirectReference(const Node* node)
index 4b14497..1a06d84 100644 (file)
@@ -69,7 +69,7 @@ private:
 
     virtual void willAttachRenderers() OVERRIDE;
 
-    virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual void toClipPath(Path&);
 
     void clearResourceReferences();