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 8b7e497d4c55ee01bbb3eb12d03a26b39c93d6c1..e787e7ed13c9364898da06cf339f34d256cc034b 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 897b1a670e87b737c9f3462316a488c789abd720..b08f4e476afbdc81bd92a5fcb9a5a0ae4a637d5a 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 0c293670142d4df92cc8ba87acc07b4e88ef5442..2eddcdbb9f006ca7626650b420278626b9261417 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 5a1907c30dc6a654796ba34eae63ac4ac373f8be..ca98f3d899ccb91e97082800e5b98fbdfcaae892 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 e543f3ac99fee1fe5baaeea4128e97f5a421d571..d9dd6bf58c6dae19dec74fbebf77b195fef711d4 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 a3da1649063e579ac6d1f243d45368cbb8f034e2..11edea3576a0ec2963dbd702f07b35005c32aa12 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 bf21352225ac49233fd5493638ba839ced00b40d..6531d3d70b586410dfea7faf65fc7f65e27799f8 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 23dbd7910446c94ec98a5c3bf423be866eb7a778..d45038ceb0a1b141848385b7930b89752bcc40be 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 005beed1a6f5e2e5beb56a089a679f4f438a6716..5eea85ae9b5099b5e0f5c4e918495abb910ecf03 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 65ac588a125c24c1fe1a5f4d76471bc2ea903e95..e2fc7f52ce353c99221400e9e2d8d5d804a58ea6 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 72a9048bf492d99c5cca5e74ebd038546f76bea4..bceeef5e9e5a6b2036166dd6f541f149fd334cba 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 b46319c009dab55340ca3fab256ba7cb6e89566a..a4e5e8e76f91b1a4658593859530c4288fd0d1ba 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 2dd845a53102312e282d08c0c6319d63a0ab4b25..58dbdda0b94fcb0e9c9120c87f572c17221c7abf 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 f3772cc4eea612ded2343aa6d1ba9f046ce29d8d..81aa508728015e6c372909e9d47c1be67bc7269b 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 8a27237a8f0c944645ee9e5f41a7b9a8968add5d..cae112d75e0a6b4b739a461ecacd92e16b3390d1 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 c1428e6a79d64c321c493b1ad7ca53bfcbb168ff..879823d6d3dfd3a79cdde114ac2e0086c61f2258 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 6d2a6dbd419fc3a5b4f22f23990385ee986fc512..3ce325d29d641618f107b85aa1aacc33d097ecd4 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 5caf475a7a5aaf4fb0e8b3953796c1724276c487..5dff4dc92a4a4ff66740972d026a91b031f93850 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 9279e4a82ccaab7477370f78997d7239dc36f2d6..d6edf9a8aa86b3675af7bd3c242c190f0c109a4d 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 f443a89c1411534bb5cf41d841d067d6763ee452..d331b3c985d337c764f6c52f854dd8088d17a851 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 4971cc71d0c70a4284d04c42b52f38a9bde66a67..c961d2fa5f6551f14bf66c65cf1ec7078e76d832 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 7eea4194689be349950b44f0e132b95208e4a5ef..c1c428d128879034680e325c048ce00ceeb4e4e2 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 9321c7a9c3c984e37f688ea3748110b3da1b369c..6b793d15e1d82df96eedc57135a15014164a9a55 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 147c95774e717c3986794af4df810b8f144f68e3..5e116eac8f558bcea80379ae6abc0da5d4dab9e3 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 a8ecabe1ef4f1b205af67f7c2bdce1992781b208..a2f9d10cdea2403c1ee4739fc48f4bda6113817b 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 470dd61e34a059ca296d3b695fc00c1b75978041..f71b3d85dd495302d2c32fc9aeea40d2857ca091 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 b55960d80ac7d54c70ec407052e819919f785c17..a3730be8cd0811397c797a773195ed0177d9bb28 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 13b4e918892c1815003b519c4fe867ab2407b57e..ae9863b6ab35a3e87d72ffd7e8f4687dd8403ea4 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 30e25f5841e328c810a145e601ba3ee5341df9bb..8261be879e880da670e53328495d6b7530defe6d 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 af452528e63c3637642976dd5a0b683bf260c4ba..73a23ae5546a835cfb206bad226f022a3a363a24 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 3aa295ab87a26e5c78be1c9d77840be818247f25..25ca28988b059e0b798b1e4c7789f6fa272b9c24 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 095c4b70eb6f7a5d71a5f173c8941852a580429e..1f629c63ebdb5b5cd761c513fd912e1006910f68 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 da01f3ca20f469a7423a047a7e32e886ac4d96ad..5e9b0e0a3ae99fd39ca13d2258abfd54de10be3a 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 22d919b9b3fe8147632ff059e0cb41ccf7f50304..1a34fccb60f6df9674c6146f9ad0f148ae152ca5 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 a6bfca43deb286b007aac9d089b4ea88b547baed..e0516972a7760b4f16fb6f3aecd89a5f98afa9f3 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 833e9eea5d4b0e9d5063fd1d8e32edb458b4e932..10d637ad64e576f445bd229c0dd6036825c19123 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 54114bedf6381be07a03343d50b97ad77b67d52f..acae2fe210419f6d57cb419cb015324cb284ff7f 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 7a5adb6c7cb611cd2bd76a1f8139c32bd85577e8..54047ec49e105ce914416bf61943c036890ea35f 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 45f62b1d48f3eff3ac933f95e0fcb17909550dc3..892eed7ddfecd4ae5717b578cf484557e287361f 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 5c306bf84947354177a3d495554164b7facc1269..8f1c05c59063575957f1e99d26619ce073b01b9a 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 01c2c408e4a3441c9d5d892b59a901508fa8ac5a..88066eab53c03083d0f1e735a67d27e066722c4c 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 c4e4af55085e6175b04a8d9ea6a6f104376d679b..f55de79a2d40ab29d4b602e7bc3b30d269eb3bf7 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 137a5d1cd43a3cbd00d44925c88fd3817d1af628..7c41386e65a26edde344a80ee1f5516f1d1e1c05 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 2ccd9fadd3403495f25b9491d70dba604fe1d4ce..f398056ce1c2d7860de8ded105c96532a64da8ac 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 f70de7117db2e20610c2632b2b103960cf5bb812..d40d4e8109b757cb55b3d856a34f3f667d3e3597 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 7c1657003fbb595a09f4aa9f776239c663abb84b..f8e92eccfd202ae78f0445c946dfd279d3a0d930 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 14098a52744f0cbb985418cb9643226923a93bc0..2d2615986d14dfd762f156a48df03fffc7ed7391 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 9d9377ae499e77d110efe53e34e53d6230e9cbf5..858a07265b18a5a7a0abdebbc66cdac2a83c9c2e 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 527a4d66f4cd93fa60c64effdaccdf068ffe224c..a48e29f498c1a303391f8f18e5484793090f46ea 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 8efd4da2dce09375b7aa3bd84394679427d53eeb..c7ddc9cfb85e1c30112992b1803525c444b6d110 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 297b1108cf28a8c22af43e5c8ecfcd8f86e82ffe..420fcf480e17e53aecb789057e299a1bcb1fbefe 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 d91e5b19fc91e4e90789080ef8e751cc1ef24348..de855da4971122a636fbe088207fd788e6da4406 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 0d0f40d58def975577f8ed07e40b1661dde3c977..f34a9c496cbe2b72b527639d81c7045e13e31df2 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 f5ae0d80968c8a2e17df7ab4139364e83ff6b73e..3ec8870b3b1c9e6ab4f437285e348c51348a449c 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 ccfd4fd147cff98422b5583c5cb0d86705dc562c..112e7781452c29570290530e5f66c380b1e51b5e 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 f2a7473e9b42b48667614f9288e6fe22133cedec..385a63d47523ef3b237004326827e2816a48397c 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 c960cfa3f7ebf1cd2a4ea3d53a48c9d7e84333fa..913dea204279c9f95b354afab1cddc0d9b9f676e 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 56ceb469b1273004812b8536fabadc2beffce9b0..b88544b65054aadd3de7012584c2270bd5730e01 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 a67f8909c925b3c8e397148ea3976a9d60230fb6..ac35831f3f6a4e72fa88d89482749dfff0906408 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 20aaad988213e5e44ba2d1c0c59970b8e251c17f..65fbeacc165b9ac0d63d740ada62e86d88bde829 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 7fc1caef31f424dad83c5298924dcf48b8868098..67ff91a98d7c4ce376a67202a27949b0210e0396 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 04c16a2b922b355245f409c9ff03fa4059c55b2e..603c9a08b42f8754baad6ff0dd101d5ffd4d15da 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 34e729cbb124ee5124b81694e672109616ca4693..1d942acd2c7e03e30cdd384e170d38c88fb2baf2 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 0a82a24cfd6d0e346e97cfddea1908bbb9be25c8..1245efa37332c134afa5c0f5c7ce28dbf170b9b4 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 81ca94bc75287470f21f19e6f379e677bdff1f2d..6f2f389ba10fbb98a46ebfd586adaa73400b07b5 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 d5d7b8c7674cae949beb6326ea3ee12f90d6a637..ebdd380fd40d0e2863755c82763b54fa6b616aae 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 faabdfcb72bf38a478289a754cd9b8e6651b4d54..f911dfceabebea25d185277478dda97a0d8b3508 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 88cb755c97fd415f41889bb7dd74781534f2ca10..435968bd29c9ad84d791d0c3573005dd04d1a221 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 2e43d68c0fa604ab012e9dd7affdb4ced373a8d6..4f17b6c10c75d705dbc6c063e4385ae2863ece0a 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 3e3075e8236e76683ebf53742f363847e2f3caaa..6a9e0ba6069d659c5e8729610741fc9b9684de51 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 08c7b16b92ea5da2a3012f2ffabaa26e2fdd5621..d4e36e537b3a0e80e54862729192a7f301c3d91d 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 bc17da6e0f5bd57ee65f6d378aa04591309bcdc0..85a05c5cd7965be40b78b072d3469eff72a059af 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 90988b3b491fa78aa43790f926b700751638d70f..fe28513cbce26185bd83943a8f54c6c6a8d5502d 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 2a9dbe588d91bf3c6221b75c09bca99eac3e0559..f7246f882fe0cdb00dde82200022626ed8ae9167 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 2fdbce39097b562ce597dda1977683438bc87b1c..9fa19a0229c24a27a346062314a956d251c5c701 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 eab570cefff07f3a5ef648ee54009df2f6883c28..4574313bad567036840a334f09c17c6ed6a31c17 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 c0d2e24c74a5a66d6a102f2703d2ba256512ee19..f6fbbc6698c1878adc6f1985810573d25cb6b1e4 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 52c172c51891199251f247ba3b0d0341193b896d..e46608eb10ee3cbc9e3ca051c29cec60c12af844 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 e1b1950042de61a25a70d3ce085a7871dbd72078..6df3bebb1ea422bd39379865b5d44899ff11ad1b 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 b6154e2ae88a6f1a821b47cbfdc7ce94c0c5f0cf..90ef36eb89ce7f3fa619333edb0887d140a207eb 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 9c2d81fead4c89e6ba9d5a8a37785dd77d487de3..0dccf19db981d3c246f40f923c377abcf483ed32 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 aa9c83daf097bc3b8860912247bebfe08887f819..2d35212309ecd7b708a24999dc54dcf465d55ca1 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 7a23ae98015a28d632d19d577739af99432a3c48..446dabeac66ffdeeafe6e98a2d85623be40a937d 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 99b504c20eb37cdc1b88f9571c31f5a71c791a83..4e9affc5fba8ea23abe7eda5b038a5843662ac8d 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 fbf2c286a7b98e81bfc6c1541217855885fd9cde..6ff2f6abb3a12d4aad7efed8f460384b0b62ee23 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 2f24704fb4a65a77bbb68ed3f01f2399c67f2d0f..a465c458cfebd3b5494e1b5d86349df05236a127 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 a8e7bee7af1792f22bcee8eed2db048fea5c3b79..e8e70f52c4af3653f6ef1e8120a01391d0ac67e8 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 c9213fd1482f266378fc9dcc02300047c9034a28..7350a7102609ceb310c314be54e88b7bc91fcebd 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 353e479a591d92b4fdc5d34d05958a117f5db5f0..5da956455391fa63142ac1dc28b2cde3264987e2 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 152f299459c65139b6c989a09f77971ecbdb8b64..322b800968f0380e78079ed946412bb350df61ce 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 19f82274618a8ceee7189ca293bfe64935ea8b57..09aabf068b67adf31f1fde5b3ca813709f5882d5 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 6c46362b19aa2c7f00d38703dd2832096c700d93..a4d0315f7503bcc9543b10f6522ffb26b239c52e 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 3e1069971153dc720cfc8107b7d7d9ea6383767f..37cc8cd394f580907761dfea2e610093ba7c6939 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 7f3efd42831afcf2a5d59b27d1de981c24bb1bcd..94a5fe8ce4865d0350352e92cc6c30f6ac9ebdc5 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 e5fa7fff0a8d8c092ee1343725cf13cdfee6d34c..2d6490475fe8a6ea156877ae400769db741df620 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 90f3791f43546117f7ca1dee5ab6ac96eb36742f..5b2e2e1f4a09c5c2a00fd24917d4e9aeefe6f6d0 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 349ca5df29cb00adb9714e27f4370bfb534b5ab4..53ba8db0b7b7bc670ca07bff43cd8a8fdadb3f97 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 04f547b8d58eb765dbb41bd5749cde5061b4095b..65ec1dad3d3a65cdc56b5b8e6b155ca73c246b43 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 059a23dfb44299d78ed495fb9d95ddf8fa0aee69..22a8f8ec69f66cd89c7cab55bad41ef26c0334ef 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 43074c7e7110e47f22d71cc6ea659b1c1a7d019d..5f10e015bf9395bbc0270a6ddbf1402f78a979fa 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 feae2a1b56e21c1045f73bd24269cc307ea2f8d1..624c007b2caf4cadb319ba607ce1301944a2b0d5 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 216df91085e772e79739a5034caabade601232ce..b78d3a9d191ec382e4aa869edb5b7529c129a9ce 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 5c71cff7391b54fc3b6772996bff34c17adfd86a..40b1288b0d6672298594bd7f61efb3320c1bb1ed 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 0a3a23aa8a82ec5554a7c756a85ac5f7baa829a5..f52e314e852dd02958f241cfb7909c032dafc085 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 91f5b62809c0471e1d77e1007305e55cf395606e..42ed45ff58ee41199533f8a514452abe8017d604 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 853e53f1878556801f437933531c910543295137..ac196375ed84a717ffdb80d8a71126523e0b341d 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 bc27b88db3dbed0526b960f490d5df3cc8455112..3f3a08f18c56c1312b2fc1141d016f75c3c9bff0 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 47eccfb70309782f449ce1823d1f97422e62daa7..2aa080151912d25bf51840d482a483a87c474ef8 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 8c5e38cf105d6ea8a8f00a48378382f83ba4e034..e8a8d3a0405354b332772519e62d6d3279246c9c 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 3d484259496a8c43b2ddc1fad832053d594264cd..23427279464038fcdf279de28ec0bda6e55055f5 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 0c864d5f9895567db5731c64308539df24096d22..5199cf730546f49ed975c6887f359f2be1ab8a1f 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 7151ff13c9a13558b8e79af4b502b9b6bd6e32d2..aa3344da3b29d81d73567c9d7479746c45645952 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 06fda464f9ca2b17bad51746055035c45d9b107d..ecee2d73c2ec6bd85f7881c43eee4da5cddbb4a0 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 b0f98d84e660be64be21d94e5316e17389db3a74..fd8a220ed20db1b10f9164175661e9b64bbc955b 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 38dc9e24b708dcc6ba68c988099f3a53f958437e..d2ea1b5572a077a8a9c3a6802a3228c9a80db835 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 b1564fc3ac6a8eb1c4eb5172e9e2b8e9601c5288..d9d5c8dd6f1376c6c4006fa4972788d8bbc39291 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 73f687fce6f983eb6298689105629585fb47950a..54f91936de269ce770305517079f68495f0adbf7 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 01884b42a90c446f854cc907f5002c5130cad6ee..5cd638618b4f270ea8951bc797df9f6d1634840c 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 1127e4cf02aab6c1d07583d8418e09e739ced773..9d76b9fccf972d164f3ac2ce738308d7462918fa 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 70d7519717ebeb0c0fa394c239d813e3c116993a..9ba1d2d9103739ea4e747b517f90b6dd0227f07e 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 a3910df6e01b0f3e20a2be1cf4b8eb9802f998e2..ca9d770ce77d739a714961546ea09e64e43ea5c9 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 e07493f52c3c40c4fcba857cf35405edcb3511a9..b02f312c8f71f152af1bf079979a538050cc323f 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 b672016db9b641ec51a02bbf353ea0e363c1a503..439cea435c9d084d46d133c73e78fadd09bf2f2c 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 70d8acdaf8f4da93b20c49dcd7a088ca89584820..f5e9a4a3845fbc66bfd6faf341197e45946acfc2 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 85ffa6d32e6e36480866efaaea30a507ba5fbbdb..f93455cea160b8c34fe97b0b3c74fd8c4e04b32b 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 d680917c4bd1c36a55961d983a784eb85b62ccd6..dff7c3f49b3e48386e810268daf7865f4849187c 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 ddf7e4aabf84b8d3cbd6045748fe887a0c547338..bdd931f4b6e331356025f1916eaa950a0a9911d2 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 0a28b04a30475415b6d5ed65e73ac74854cee6e0..f213525046a8a89a4b291c46cbf8155b24a19e84 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 e9ee005119f2817f49f6bc61d577e9548720aa62..8b30c66e258bf7d48ea25ae67319b0774c43b0b9 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 aec89be5bebcfb2cb06c6a533608a1ab5001d643..9d15373cf5fcc92aa75302e7c99dcc22e94199ee 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 6b7a83108fdea214b35f886b71ad10c24fe6f870..bf25579715cd74034f6c74551446da615a53785e 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 4b1449728beaeecb565689281e1e6e0ca8079cba..1a06d8409ab3dd60ba79d135cec269533289716b 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();