Pass Document directly to anonymous renderer constructors.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 14 Oct 2013 17:55:52 +0000 (17:55 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 14 Oct 2013 17:55:52 +0000 (17:55 +0000)
<https://webkit.org/b/122752>

Reviewed by Antti Koivisto.

Added separate constructors for creating anonymous renderers that
take a Document& instead of a null Element*/Text*.

Removed setDocumentForAnonymous() and all createAnonymous() helpers.
...and RenderObject::m_node is now a Node&, wohoo!

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

149 files changed:
Source/WebCore/ChangeLog
Source/WebCore/dom/Text.cpp
Source/WebCore/html/HTMLDetailsElement.cpp
Source/WebCore/html/HTMLImageElement.cpp
Source/WebCore/html/HTMLMeterElement.cpp
Source/WebCore/html/HTMLPlugInImageElement.cpp
Source/WebCore/html/HTMLProgressElement.cpp
Source/WebCore/html/HTMLSummaryElement.cpp
Source/WebCore/html/ImageInputType.cpp
Source/WebCore/html/shadow/MediaControlElements.cpp
Source/WebCore/html/shadow/MeterShadowElement.cpp
Source/WebCore/html/shadow/ProgressShadowElement.cpp
Source/WebCore/html/shadow/SliderThumbElement.cpp
Source/WebCore/html/shadow/SliderThumbElement.h
Source/WebCore/html/shadow/TextControlInnerElements.cpp
Source/WebCore/html/track/TextTrackCue.cpp
Source/WebCore/mathml/MathMLInlineContainerElement.cpp
Source/WebCore/mathml/MathMLMathElement.cpp
Source/WebCore/mathml/MathMLTextElement.cpp
Source/WebCore/page/FrameView.cpp
Source/WebCore/rendering/FlowThreadController.cpp
Source/WebCore/rendering/RenderBlock.cpp
Source/WebCore/rendering/RenderBlock.h
Source/WebCore/rendering/RenderBlockFlow.cpp
Source/WebCore/rendering/RenderBlockFlow.h
Source/WebCore/rendering/RenderBox.cpp
Source/WebCore/rendering/RenderBox.h
Source/WebCore/rendering/RenderBoxModelObject.cpp
Source/WebCore/rendering/RenderBoxModelObject.h
Source/WebCore/rendering/RenderButton.cpp
Source/WebCore/rendering/RenderCombineText.cpp
Source/WebCore/rendering/RenderCounter.cpp
Source/WebCore/rendering/RenderCounter.h
Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp
Source/WebCore/rendering/RenderDetailsMarker.cpp
Source/WebCore/rendering/RenderElement.cpp
Source/WebCore/rendering/RenderElement.h
Source/WebCore/rendering/RenderFieldset.cpp
Source/WebCore/rendering/RenderFileUploadControl.cpp
Source/WebCore/rendering/RenderFlexibleBox.cpp
Source/WebCore/rendering/RenderFlexibleBox.h
Source/WebCore/rendering/RenderFlowThread.cpp
Source/WebCore/rendering/RenderFlowThread.h
Source/WebCore/rendering/RenderFrameSet.cpp
Source/WebCore/rendering/RenderFullScreen.cpp
Source/WebCore/rendering/RenderFullScreen.h
Source/WebCore/rendering/RenderGrid.cpp
Source/WebCore/rendering/RenderHTMLCanvas.cpp
Source/WebCore/rendering/RenderImage.cpp
Source/WebCore/rendering/RenderImage.h
Source/WebCore/rendering/RenderInline.cpp
Source/WebCore/rendering/RenderInline.h
Source/WebCore/rendering/RenderLayer.cpp
Source/WebCore/rendering/RenderLayerModelObject.cpp
Source/WebCore/rendering/RenderLayerModelObject.h
Source/WebCore/rendering/RenderLineBreak.cpp
Source/WebCore/rendering/RenderListBox.cpp
Source/WebCore/rendering/RenderListItem.cpp
Source/WebCore/rendering/RenderListMarker.cpp
Source/WebCore/rendering/RenderListMarker.h
Source/WebCore/rendering/RenderMedia.cpp
Source/WebCore/rendering/RenderMediaControlElements.cpp
Source/WebCore/rendering/RenderMediaControlElements.h
Source/WebCore/rendering/RenderMenuList.cpp
Source/WebCore/rendering/RenderMeter.cpp
Source/WebCore/rendering/RenderMeter.h
Source/WebCore/rendering/RenderMultiColumnBlock.cpp
Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp
Source/WebCore/rendering/RenderMultiColumnFlowThread.h
Source/WebCore/rendering/RenderMultiColumnSet.cpp
Source/WebCore/rendering/RenderMultiColumnSet.h
Source/WebCore/rendering/RenderNamedFlowThread.cpp
Source/WebCore/rendering/RenderNamedFlowThread.h
Source/WebCore/rendering/RenderObject.cpp
Source/WebCore/rendering/RenderObject.h
Source/WebCore/rendering/RenderProgress.cpp
Source/WebCore/rendering/RenderProgress.h
Source/WebCore/rendering/RenderQuote.cpp
Source/WebCore/rendering/RenderQuote.h
Source/WebCore/rendering/RenderRegion.cpp
Source/WebCore/rendering/RenderRegion.h
Source/WebCore/rendering/RenderRegionSet.cpp
Source/WebCore/rendering/RenderRegionSet.h
Source/WebCore/rendering/RenderReplaced.cpp
Source/WebCore/rendering/RenderReplaced.h
Source/WebCore/rendering/RenderReplica.cpp
Source/WebCore/rendering/RenderReplica.h
Source/WebCore/rendering/RenderRuby.cpp
Source/WebCore/rendering/RenderRubyBase.cpp
Source/WebCore/rendering/RenderRubyBase.h
Source/WebCore/rendering/RenderRubyRun.cpp
Source/WebCore/rendering/RenderRubyRun.h
Source/WebCore/rendering/RenderRubyText.cpp
Source/WebCore/rendering/RenderScrollbar.cpp
Source/WebCore/rendering/RenderScrollbarPart.cpp
Source/WebCore/rendering/RenderScrollbarPart.h
Source/WebCore/rendering/RenderSlider.cpp
Source/WebCore/rendering/RenderTable.cpp
Source/WebCore/rendering/RenderTable.h
Source/WebCore/rendering/RenderTableCaption.cpp
Source/WebCore/rendering/RenderTableCell.cpp
Source/WebCore/rendering/RenderTableCell.h
Source/WebCore/rendering/RenderTableCol.cpp
Source/WebCore/rendering/RenderTableRow.cpp
Source/WebCore/rendering/RenderTableRow.h
Source/WebCore/rendering/RenderTableSection.cpp
Source/WebCore/rendering/RenderTableSection.h
Source/WebCore/rendering/RenderText.cpp
Source/WebCore/rendering/RenderText.h
Source/WebCore/rendering/RenderTextControl.cpp
Source/WebCore/rendering/RenderTextControl.h
Source/WebCore/rendering/RenderTextControlSingleLine.h
Source/WebCore/rendering/RenderTextFragment.cpp
Source/WebCore/rendering/RenderTextFragment.h
Source/WebCore/rendering/RenderTextTrackCue.cpp
Source/WebCore/rendering/RenderTextTrackCue.h
Source/WebCore/rendering/RenderView.cpp
Source/WebCore/rendering/RenderWidget.cpp
Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp
Source/WebCore/rendering/mathml/RenderMathMLBlock.h
Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp
Source/WebCore/rendering/mathml/RenderMathMLFenced.h
Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp
Source/WebCore/rendering/mathml/RenderMathMLFraction.h
Source/WebCore/rendering/mathml/RenderMathMLMath.cpp
Source/WebCore/rendering/mathml/RenderMathMLMath.h
Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp
Source/WebCore/rendering/mathml/RenderMathMLOperator.h
Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp
Source/WebCore/rendering/mathml/RenderMathMLRoot.h
Source/WebCore/rendering/mathml/RenderMathMLRow.cpp
Source/WebCore/rendering/mathml/RenderMathMLRow.h
Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp
Source/WebCore/rendering/mathml/RenderMathMLScripts.h
Source/WebCore/rendering/mathml/RenderMathMLSpace.cpp
Source/WebCore/rendering/mathml/RenderMathMLSpace.h
Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.cpp
Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h
Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp
Source/WebCore/rendering/mathml/RenderMathMLUnderOver.h
Source/WebCore/rendering/style/ContentData.cpp
Source/WebCore/rendering/svg/RenderSVGBlock.cpp
Source/WebCore/rendering/svg/RenderSVGGradientStop.cpp
Source/WebCore/rendering/svg/RenderSVGGradientStop.h
Source/WebCore/rendering/svg/RenderSVGInline.cpp
Source/WebCore/rendering/svg/RenderSVGInlineText.cpp
Source/WebCore/rendering/svg/RenderSVGModelObject.cpp
Source/WebCore/rendering/svg/RenderSVGRoot.cpp
Source/WebCore/svg/SVGStopElement.cpp

index 59057de..04be359 100644 (file)
@@ -1,3 +1,16 @@
+2013-10-14  Andreas Kling  <akling@apple.com>
+
+        Pass Document directly to anonymous renderer constructors.
+        <https://webkit.org/b/122752>
+
+        Reviewed by Antti Koivisto.
+
+        Added separate constructors for creating anonymous renderers that
+        take a Document& instead of a null Element*/Text*.
+
+        Removed setDocumentForAnonymous() and all createAnonymous() helpers.
+        ...and RenderObject::m_node is now a Node&, wohoo!
+
 2013-10-13  Sam Weinig  <sam@webkit.org>
 
         CTTE: Add more node conversion helpers
index adf4e13..6f8f870 100644 (file)
@@ -200,7 +200,7 @@ RenderText* Text::createTextRenderer(RenderArena& arena, RenderStyle& style)
     if (style.hasTextCombine())
         return new (arena) RenderCombineText(*this, dataImpl());
 
-    return new (arena) RenderText(this, dataImpl());
+    return new (arena) RenderText(*this, dataImpl());
 }
 
 bool Text::childTypeAllowed(NodeType) const
index fba26ce..967392f 100644 (file)
@@ -114,7 +114,7 @@ HTMLDetailsElement::HTMLDetailsElement(const QualifiedName& tagName, Document& d
 
 RenderElement* HTMLDetailsElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderBlockFlow(this);
+    return new (arena) RenderBlockFlow(*this);
 }
 
 void HTMLDetailsElement::didAddUserAgentShadowRoot(ShadowRoot* root)
index 7611d84..a67fab8 100644 (file)
@@ -182,7 +182,7 @@ RenderElement* HTMLImageElement::createRenderer(RenderArena& arena, RenderStyle&
     if (style.hasContent())
         return RenderElement::createFor(*this, style);
 
-    RenderImage* image = new (arena) RenderImage(this);
+    RenderImage* image = new (arena) RenderImage(*this);
     image->setImageResource(RenderImageResource::create());
     return image;
 }
index 7a47783..4ca3f64 100644 (file)
@@ -62,7 +62,7 @@ RenderElement* HTMLMeterElement::createRenderer(RenderArena& arena, RenderStyle&
     if (hasAuthorShadowRoot() || !document().page()->theme()->supportsMeter(style.appearance()))
         return RenderElement::createFor(*this, style);
 
-    return new (arena) RenderMeter(this);
+    return new (arena) RenderMeter(*this);
 }
 
 bool HTMLMeterElement::childShouldCreateRenderer(const Node* child) const
index b0bd8b5..dfbd8f0 100644 (file)
@@ -217,7 +217,7 @@ RenderElement* HTMLPlugInImageElement::createRenderer(RenderArena& arena, Render
         return RenderElement::createFor(*this, style);
 
     if (isImageType()) {
-        RenderImage* image = new (arena) RenderImage(this);
+        RenderImage* image = new (arena) RenderImage(*this);
         image->setImageResource(RenderImageResource::create());
         return image;
     }
index 93e0b38..f9dc9c3 100644 (file)
@@ -64,7 +64,7 @@ RenderElement* HTMLProgressElement::createRenderer(RenderArena& arena, RenderSty
     if (!style.hasAppearance() || hasAuthorShadowRoot())
         return RenderElement::createFor(*this, style);
 
-    return new (arena) RenderProgress(this);
+    return new (arena) RenderProgress(*this);
 }
 
 bool HTMLProgressElement::childShouldCreateRenderer(const Node* child) const
index 3a4ca92..a415f02 100644 (file)
@@ -68,7 +68,7 @@ HTMLSummaryElement::HTMLSummaryElement(const QualifiedName& tagName, Document& d
 
 RenderElement* HTMLSummaryElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderBlockFlow(this);
+    return new (arena) RenderBlockFlow(*this);
 }
 
 bool HTMLSummaryElement::childShouldCreateRenderer(const Node* child) const
index f80dcdf..8303cd5 100644 (file)
@@ -103,7 +103,7 @@ void ImageInputType::handleDOMActivateEvent(Event* event)
 
 RenderElement* ImageInputType::createRenderer(RenderArena& arena, RenderStyle&) const
 {
-    RenderImage* image = new (arena) RenderImage(&element());
+    RenderImage* image = new (arena) RenderImage(element());
     image->setImageResource(RenderImageResource::create());
     return image;
 }
index 9a8ebfd..355865f 100644 (file)
@@ -339,7 +339,7 @@ void MediaControlTimelineContainerElement::setTimeDisplaysHidden(bool hidden)
 
 RenderElement* MediaControlTimelineContainerElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderMediaControlTimelineContainer(this);
+    return new (arena) RenderMediaControlTimelineContainer(*this);
 }
 
 // ----------------------------
@@ -358,7 +358,7 @@ PassRefPtr<MediaControlVolumeSliderContainerElement> MediaControlVolumeSliderCon
 
 RenderElement* MediaControlVolumeSliderContainerElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderMediaVolumeSliderContainer(this);
+    return new (arena) RenderMediaVolumeSliderContainer(*this);
 }
 
 void MediaControlVolumeSliderContainerElement::defaultEventHandler(Event* event)
@@ -1212,7 +1212,7 @@ PassRefPtr<MediaControlTextTrackContainerElement> MediaControlTextTrackContainer
 
 RenderElement* MediaControlTextTrackContainerElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderTextTrackContainerElement(this);
+    return new (arena) RenderTextTrackContainerElement(*this);
 }
 
 const AtomicString& MediaControlTextTrackContainerElement::textTrackContainerElementShadowPseudoId()
index 63e37fa..8cd6b23 100644 (file)
@@ -78,7 +78,7 @@ bool MeterInnerElement::rendererIsNeeded(const RenderStyle& style)
 
 RenderElement* MeterInnerElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderMeter(this);
+    return new (arena) RenderMeter(*this);
 }
 
 const AtomicString& MeterValueElement::valuePseudoId() const
index f1015b2..2717e3c 100644 (file)
@@ -63,7 +63,7 @@ ProgressInnerElement::ProgressInnerElement(Document& document)
 
 RenderElement* ProgressInnerElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderProgress(this);
+    return new (arena) RenderProgress(*this);
 }
 
 bool ProgressInnerElement::rendererIsNeeded(const RenderStyle& style)
index 3a8a3d8..3738ea6 100644 (file)
@@ -74,7 +74,7 @@ inline static bool hasVerticalAppearance(HTMLInputElement* input)
 
 // --------------------------------
 
-RenderSliderThumb::RenderSliderThumb(SliderThumbElement* element)
+RenderSliderThumb::RenderSliderThumb(SliderThumbElement& element)
     : RenderBlockFlow(element)
 {
 }
@@ -106,8 +106,11 @@ bool RenderSliderThumb::isSliderThumb() const
 // http://webkit.org/b/62535
 class RenderSliderContainer : public RenderFlexibleBox {
 public:
-    RenderSliderContainer(SliderContainerElement* element)
-        : RenderFlexibleBox(element) { }
+    RenderSliderContainer(SliderContainerElement& element)
+        : RenderFlexibleBox(element)
+    {
+    }
+
 public:
     virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&) const OVERRIDE;
 
@@ -204,7 +207,7 @@ void SliderThumbElement::setPositionFromValue()
 
 RenderElement* SliderThumbElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderSliderThumb(this);
+    return new (arena) RenderSliderThumb(*this);
 }
 
 bool SliderThumbElement::isDisabledFormControl() const
@@ -443,7 +446,7 @@ PassRefPtr<SliderContainerElement> SliderContainerElement::create(Document& docu
 
 RenderElement* SliderContainerElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderSliderContainer(this);
+    return new (arena) RenderSliderContainer(*this);
 }
 
 const AtomicString& SliderContainerElement::shadowPseudoId() const
index 9a6774b..ef32b9d 100644 (file)
@@ -81,7 +81,7 @@ inline PassRefPtr<SliderThumbElement> SliderThumbElement::create(Document& docum
 
 class RenderSliderThumb FINAL : public RenderBlockFlow {
 public:
-    RenderSliderThumb(SliderThumbElement*);
+    explicit RenderSliderThumb(SliderThumbElement&);
     void updateAppearance(RenderStyle* parentStyle);
 
 private:
index 0c5b4c3..21e5a01 100644 (file)
@@ -60,7 +60,7 @@ PassRefPtr<TextControlInnerContainer> TextControlInnerContainer::create(Document
     
 RenderElement* TextControlInnerContainer::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderTextControlInnerContainer(this);
+    return new (arena) RenderTextControlInnerContainer(*this);
 }
 
 TextControlInnerElement::TextControlInnerElement(Document& document)
@@ -114,7 +114,7 @@ void TextControlInnerTextElement::defaultEventHandler(Event* event)
 
 RenderElement* TextControlInnerTextElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderTextControlInnerBlock(this);
+    return new (arena) RenderTextControlInnerBlock(*this);
 }
 
 PassRefPtr<RenderStyle> TextControlInnerTextElement::customStyleForRenderer()
index 14c4768..42ecc04 100644 (file)
@@ -178,7 +178,7 @@ const AtomicString& TextTrackCueBox::textTrackCueBoxShadowPseudoId()
 
 RenderElement* TextTrackCueBox::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderTextTrackCue(this);
+    return new (arena) RenderTextTrackCue(*this);
 }
 
 // ----------------------------
index de04b43..8449278 100644 (file)
@@ -57,33 +57,33 @@ PassRefPtr<MathMLInlineContainerElement> MathMLInlineContainerElement::create(co
 RenderElement* MathMLInlineContainerElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
     if (hasLocalName(mrowTag))
-        return new (arena) RenderMathMLRow(this);
+        return new (arena) RenderMathMLRow(*this);
     if (hasLocalName(msubTag))
-        return new (arena) RenderMathMLScripts(this);
+        return new (arena) RenderMathMLScripts(*this);
     if (hasLocalName(msupTag))
-        return new (arena) RenderMathMLScripts(this);
+        return new (arena) RenderMathMLScripts(*this);
     if (hasLocalName(msubsupTag))
-        return new (arena) RenderMathMLScripts(this);
+        return new (arena) RenderMathMLScripts(*this);
     if (hasLocalName(mmultiscriptsTag))
-        return new (arena) RenderMathMLScripts(this);
+        return new (arena) RenderMathMLScripts(*this);
     if (hasLocalName(moverTag))
-        return new (arena) RenderMathMLUnderOver(this);
+        return new (arena) RenderMathMLUnderOver(*this);
     if (hasLocalName(munderTag))
-        return new (arena) RenderMathMLUnderOver(this);
+        return new (arena) RenderMathMLUnderOver(*this);
     if (hasLocalName(munderoverTag))
-        return new (arena) RenderMathMLUnderOver(this);
+        return new (arena) RenderMathMLUnderOver(*this);
     if (hasLocalName(mfracTag))
-        return new (arena) RenderMathMLFraction(this);
+        return new (arena) RenderMathMLFraction(*this);
     if (hasLocalName(msqrtTag))
-        return new (arena) RenderMathMLSquareRoot(this);
+        return new (arena) RenderMathMLSquareRoot(*this);
     if (hasLocalName(mrootTag))
-        return new (arena) RenderMathMLRoot(this);
+        return new (arena) RenderMathMLRoot(*this);
     if (hasLocalName(mfencedTag))
-        return new (arena) RenderMathMLFenced(this);
+        return new (arena) RenderMathMLFenced(*this);
     if (hasLocalName(mtableTag))
-        return new (arena) RenderMathMLTable(this);
+        return new (arena) RenderMathMLTable(*this);
 
-    return new (arena) RenderMathMLBlock(this);
+    return new (arena) RenderMathMLBlock(*this);
 }
 
 }
index c6a63ea..661ace9 100644 (file)
@@ -53,7 +53,7 @@ Node::InsertionNotificationRequest MathMLMathElement::insertedInto(ContainerNode
 
 RenderElement* MathMLMathElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderMathMLMath(this);
+    return new (arena) RenderMathMLMath(*this);
 }
 
 }
index 6465fc4..cc973eb 100644 (file)
@@ -66,9 +66,9 @@ void MathMLTextElement::childrenChanged(const ChildChange& change)
 RenderElement* MathMLTextElement::createRenderer(RenderArena& arena, RenderStyle& style)
 {
     if (hasLocalName(MathMLNames::moTag))
-        return new (arena) RenderMathMLOperator(this);
+        return new (arena) RenderMathMLOperator(*this);
     if (hasLocalName(MathMLNames::mspaceTag))
-        return new (arena) RenderMathMLSpace(this);
+        return new (arena) RenderMathMLSpace(*this);
 
     return MathMLElement::createRenderer(arena, style);
 }
index 7109d92..10e1a94 100644 (file)
@@ -3217,7 +3217,7 @@ void FrameView::updateScrollCorner()
 
     if (cornerStyle) {
         if (!m_scrollCorner)
-            m_scrollCorner = RenderScrollbarPart::createAnonymous(renderer->document());
+            m_scrollCorner = new (renderer->renderArena()) RenderScrollbarPart(renderer->document());
         m_scrollCorner->setStyle(cornerStyle.release());
         invalidateScrollCorner(cornerRect);
     } else if (m_scrollCorner) {
index 698d150..63ee232 100644 (file)
@@ -75,7 +75,7 @@ RenderNamedFlowThread& FlowThreadController::ensureRenderFlowThreadWithName(cons
     // Sanity check for the absence of a named flow in the "CREATED" state with the same name.
     ASSERT(!namedFlows->flowByName(name));
 
-    RenderNamedFlowThread* flowRenderer = RenderNamedFlowThread::createAnonymous(m_view->document(), namedFlows->ensureFlowWithName(name));
+    RenderNamedFlowThread* flowRenderer = new (m_view->renderArena()) RenderNamedFlowThread(m_view->document(), namedFlows->ensureFlowWithName(name));
     flowRenderer->setStyle(RenderFlowThread::createFlowThreadStyle(m_view->style()));
     m_renderNamedFlowThreadList->add(flowRenderer);
 
index b2c81a2..602982b 100644 (file)
@@ -145,9 +145,7 @@ private:
     bool m_hadVerticalLayoutOverflow;
 };
 
-// -------------------------------------------------------------------------------------------------------
-
-RenderBlock::RenderBlock(Element* element, unsigned baseTypeFlags)
+RenderBlock::RenderBlock(Element& element, unsigned baseTypeFlags)
     : RenderBox(element, baseTypeFlags | RenderBlockFlag)
     , m_lineHeight(-1)
     , m_hasMarginBeforeQuirk(false)
@@ -163,6 +161,22 @@ RenderBlock::RenderBlock(Element* element, unsigned baseTypeFlags)
     setChildrenInline(true);
 }
 
+RenderBlock::RenderBlock(Document& document, unsigned baseTypeFlags)
+    : RenderBox(document, baseTypeFlags | RenderBlockFlag)
+    , m_lineHeight(-1)
+    , m_hasMarginBeforeQuirk(false)
+    , m_hasMarginAfterQuirk(false)
+    , m_beingDestroyed(false)
+    , m_hasMarkupTruncation(false)
+    , m_hasBorderOrPaddingLogicalWidthChanged(false)
+#if ENABLE(IOS_TEXT_AUTOSIZING)
+    , m_widthForTextAutosizing(-1)
+    , m_lineCountForTextAutosizing(NOT_SET)
+#endif
+{
+    setChildrenInline(true);
+}
+
 static void removeBlockFromDescendantAndContainerMaps(RenderBlock* block, TrackedDescendantsMap*& descendantMap, TrackedContainerMap*& containerMap)
 {
     if (OwnPtr<TrackedRendererListHashSet> descendantSet = descendantMap->take(block)) {
@@ -191,13 +205,6 @@ RenderBlock::~RenderBlock()
         removeBlockFromDescendantAndContainerMaps(this, gPositionedDescendantsMap, gPositionedContainerMap);
 }
 
-RenderBlock* RenderBlock::createAnonymous(Document& document)
-{
-    RenderBlock* renderer = new (*document.renderArena()) RenderBlockFlow(0);
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 void RenderBlock::willBeDestroyed()
 {
     // Mark as being destroyed to avoid trouble with merges in removeChild().
@@ -1668,9 +1675,9 @@ RenderBoxModelObject* RenderBlock::createReplacementRunIn(RenderBoxModelObject*
 
     RenderBoxModelObject* newRunIn = 0;
     if (!runIn->isRenderBlockFlow())
-        newRunIn = new (renderArena()) RenderBlockFlow(runIn->element());
+        newRunIn = new (renderArena()) RenderBlockFlow(*runIn->element());
     else
-        newRunIn = new (renderArena()) RenderInline(runIn->element());
+        newRunIn = new (renderArena()) RenderInline(*runIn->element());
 
     runIn->element()->setRenderer(newRunIn);
     newRunIn->setStyle(runIn->style());
@@ -4997,9 +5004,9 @@ void RenderBlock::updateFirstLetterStyle(RenderObject* firstLetterBlock, RenderO
         // The first-letter renderer needs to be replaced. Create a new renderer of the right type.
         RenderBoxModelObject* newFirstLetter;
         if (pseudoStyle->display() == INLINE)
-            newFirstLetter = RenderInline::createAnonymous(document());
+            newFirstLetter = new (renderArena()) RenderInline(document());
         else
-            newFirstLetter = RenderBlock::createAnonymous(document());
+            newFirstLetter = new (renderArena()) RenderBlockFlow(document());
         newFirstLetter->setStyle(pseudoStyle);
 
         // Move the first letter into the new renderer.
@@ -5034,9 +5041,9 @@ void RenderBlock::createFirstLetterRenderer(RenderObject* firstLetterBlock, Rend
     RenderStyle* pseudoStyle = styleForFirstLetter(firstLetterBlock, firstLetterContainer);
     RenderBoxModelObject* firstLetter = 0;
     if (pseudoStyle->display() == INLINE)
-        firstLetter = RenderInline::createAnonymous(document());
+        firstLetter = new (renderArena()) RenderInline(document());
     else
-        firstLetter = RenderBlock::createAnonymous(document());
+        firstLetter = new (renderArena()) RenderBlockFlow(document());
     firstLetter->setStyle(pseudoStyle);
     firstLetterContainer->addChild(firstLetter, currentTextChild);
 
@@ -5072,9 +5079,9 @@ void RenderBlock::createFirstLetterRenderer(RenderObject* firstLetterBlock, Rend
         // This text fragment might be empty.
         RenderTextFragment* remainingText;
         if (currentTextChild->textNode())
-            remainingText = new (renderArena()) RenderTextFragment(currentTextChild->textNode(), oldText, length, oldText.length() - length);
+            remainingText = new (renderArena()) RenderTextFragment(*currentTextChild->textNode(), oldText, length, oldText.length() - length);
         else
-            remainingText = RenderTextFragment::createAnonymous(document(), oldText, length, oldText.length() - length);
+            remainingText = new (renderArena()) RenderTextFragment(document(), oldText, length, oldText.length() - length);
 
         if (remainingText->textNode())
             remainingText->textNode()->setRenderer(remainingText);
@@ -5087,9 +5094,9 @@ void RenderBlock::createFirstLetterRenderer(RenderObject* firstLetterBlock, Rend
         // construct text fragment for the first letter
         RenderTextFragment* letter;
         if (remainingText->textNode())
-            letter = new (renderArena()) RenderTextFragment(remainingText->textNode(), oldText, 0, length);
+            letter = new (renderArena()) RenderTextFragment(*remainingText->textNode(), oldText, 0, length);
         else
-            letter = RenderTextFragment::createAnonymous(document(), oldText, 0, length);
+            letter = new (renderArena()) RenderTextFragment(document(), oldText, 0, length);
 
         firstLetter->addChild(letter);
 
@@ -5952,10 +5959,10 @@ RenderBlock* RenderBlock::createAnonymousWithParentRendererAndDisplay(const Rend
     EDisplay newDisplay;
     RenderBlock* newBox = 0;
     if (display == FLEX || display == INLINE_FLEX) {
-        newBox = RenderFlexibleBox::createAnonymous(parent->document());
+        newBox = new (parent->renderArena()) RenderFlexibleBox(parent->document());
         newDisplay = FLEX;
     } else {
-        newBox = RenderBlock::createAnonymous(parent->document());
+        newBox = new (parent->renderArena()) RenderBlockFlow(parent->document());
         newDisplay = BLOCK;
     }
 
@@ -5969,7 +5976,7 @@ RenderBlock* RenderBlock::createAnonymousColumnsWithParentRenderer(const RenderO
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), BLOCK);
     newStyle->inheritColumnPropertiesFrom(parent->style());
 
-    RenderBlock* newBox = RenderBlock::createAnonymous(parent->document());
+    RenderBlock* newBox = new (parent->renderArena()) RenderBlockFlow(parent->document());
     newBox->setStyle(newStyle.release());
     return newBox;
 }
@@ -5979,7 +5986,7 @@ RenderBlock* RenderBlock::createAnonymousColumnSpanWithParentRenderer(const Rend
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), BLOCK);
     newStyle->setColumnSpan(ColumnSpanAll);
 
-    RenderBlock* newBox = RenderBlock::createAnonymous(parent->document());
+    RenderBlock* newBox = new (parent->renderArena()) RenderBlockFlow(parent->document());
     newBox->setStyle(newStyle.release());
     return newBox;
 }
index b33bc90..e5650a0 100644 (file)
@@ -97,12 +97,11 @@ public:
 #endif
 
 protected:
-    explicit RenderBlock(Element*, unsigned baseTypeFlags);
+    RenderBlock(Element&, unsigned baseTypeFlags);
+    RenderBlock(Document&, unsigned baseTypeFlags);
     virtual ~RenderBlock();
 
 public:
-    static RenderBlock* createAnonymous(Document&);
-
     bool beingDestroyed() const { return m_beingDestroyed; }
 
     // These two functions are overridden for inline-block.
index 2978ce2..f66ac8f 100644 (file)
@@ -44,6 +44,7 @@ struct SameSizeAsMarginInfo {
 };
 
 COMPILE_ASSERT(sizeof(RenderBlockFlow::MarginValues) == sizeof(LayoutUnit[4]), MarginValues_should_stay_small);
+COMPILE_ASSERT(sizeof(RenderBlockFlow::MarginInfo) == sizeof(SameSizeAsMarginInfo), MarginInfo_should_stay_small);
 
 // Our MarginInfo state used when laying out block children.
 RenderBlockFlow::MarginInfo::MarginInfo(RenderBlockFlow* block, LayoutUnit beforeBorderPadding, LayoutUnit afterBorderPadding)
@@ -78,10 +79,14 @@ RenderBlockFlow::MarginInfo::MarginInfo(RenderBlockFlow* block, LayoutUnit befor
     m_negativeMargin = (m_canCollapseMarginBeforeWithChildren && !block->mustDiscardMarginBefore()) ? block->maxNegativeMarginBefore() : LayoutUnit();
 }
 
-RenderBlockFlow::RenderBlockFlow(Element* element)
+RenderBlockFlow::RenderBlockFlow(Element& element)
     : RenderBlock(element, RenderBlockFlowFlag)
 {
-    COMPILE_ASSERT(sizeof(RenderBlockFlow::MarginInfo) == sizeof(SameSizeAsMarginInfo), MarginInfo_should_stay_small);
+}
+
+RenderBlockFlow::RenderBlockFlow(Document& document)
+    : RenderBlock(document, RenderBlockFlowFlag)
+{
 }
 
 RenderBlockFlow::~RenderBlockFlow()
index 46f521f..ce965c7 100644 (file)
@@ -31,7 +31,8 @@ class LineBreaker;
 
 class RenderBlockFlow : public RenderBlock {
 public:
-    explicit RenderBlockFlow(Element*);
+    explicit RenderBlockFlow(Element&);
+    explicit RenderBlockFlow(Document&);
     virtual ~RenderBlockFlow();
         
     virtual void layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeight = 0) OVERRIDE;
index b1c4d42..77825c6 100644 (file)
@@ -95,7 +95,7 @@ static bool skipBodyBackground(const RenderBox* bodyElementRenderer)
         && (documentElementRenderer == bodyElementRenderer->parent());
 }
 
-RenderBox::RenderBox(Element* element, unsigned baseTypeFlags)
+RenderBox::RenderBox(Element& element, unsigned baseTypeFlags)
     : RenderBoxModelObject(element, baseTypeFlags)
     , m_minPreferredLogicalWidth(-1)
     , m_maxPreferredLogicalWidth(-1)
@@ -104,6 +104,15 @@ RenderBox::RenderBox(Element* element, unsigned baseTypeFlags)
     setIsBox();
 }
 
+RenderBox::RenderBox(Document& document, unsigned baseTypeFlags)
+    : RenderBoxModelObject(document, baseTypeFlags)
+    , m_minPreferredLogicalWidth(-1)
+    , m_maxPreferredLogicalWidth(-1)
+    , m_inlineBoxWrapper(0)
+{
+    setIsBox();
+}
+
 RenderBox::~RenderBox()
 {
 }
index cbae7c7..dfd14be 100644 (file)
@@ -45,7 +45,6 @@ enum ShouldComputePreferred { ComputeActual, ComputePreferred };
 
 class RenderBox : public RenderBoxModelObject {
 public:
-    explicit RenderBox(Element*, unsigned baseTypeFlags);
     virtual ~RenderBox();
 
     // hasAutoZIndex only returns true if the element is positioned or a flex-item since
@@ -602,6 +601,9 @@ public:
 #endif
 
 protected:
+    RenderBox(Element&, unsigned baseTypeFlags);
+    RenderBox(Document&, unsigned baseTypeFlags);
+
     virtual void willBeDestroyed() OVERRIDE;
 
     virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle) OVERRIDE;
index 5d4d367..3590cbb 100644 (file)
@@ -159,11 +159,16 @@ bool RenderBoxModelObject::shouldPaintAtLowQuality(GraphicsContext* context, Ima
     return view().imageQualityController().shouldPaintAtLowQuality(context, this, image, layer, size);
 }
 
-RenderBoxModelObject::RenderBoxModelObject(Element* element, unsigned baseTypeFlags)
+RenderBoxModelObject::RenderBoxModelObject(Element& element, unsigned baseTypeFlags)
     : RenderLayerModelObject(element, baseTypeFlags | RenderBoxModelObjectFlag)
 {
 }
 
+RenderBoxModelObject::RenderBoxModelObject(Document& document, unsigned baseTypeFlags)
+    : RenderLayerModelObject(document, baseTypeFlags | RenderBoxModelObjectFlag)
+{
+}
+
 RenderBoxModelObject::~RenderBoxModelObject()
 {
 }
index 193d7cc..945876f 100644 (file)
@@ -61,7 +61,6 @@ class StickyPositionViewportConstraints;
 
 class RenderBoxModelObject : public RenderLayerModelObject {
 public:
-    explicit RenderBoxModelObject(Element*, unsigned baseTypeFlags);
     virtual ~RenderBoxModelObject();
     
     LayoutSize relativePositionOffset() const;
@@ -195,6 +194,9 @@ public:
 #endif
 
 protected:
+    RenderBoxModelObject(Element&, unsigned baseTypeFlags);
+    RenderBoxModelObject(Document&, unsigned baseTypeFlags);
+
     virtual void willBeDestroyed() OVERRIDE;
 
     class BackgroundImageGeometry {
index 8a16f4c..ad25c53 100644 (file)
@@ -34,7 +34,7 @@ namespace WebCore {
 using namespace HTMLNames;
 
 RenderButton::RenderButton(HTMLFormControlElement& element)
-    : RenderFlexibleBox(&element)
+    : RenderFlexibleBox(element)
     , m_buttonText(0)
     , m_inner(0)
     , m_default(false)
@@ -155,7 +155,7 @@ void RenderButton::setText(const String& str)
         if (m_buttonText)
             m_buttonText->setText(str.impl());
         else {
-            m_buttonText = RenderTextFragment::createAnonymous(document(), str);
+            m_buttonText = new (renderArena()) RenderTextFragment(document(), str);
             addChild(m_buttonText);
         }
     }
index a3041a7..f82494a 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 const float textCombineMargin = 1.15f; // Allow em + 15% margin
 
 RenderCombineText::RenderCombineText(Text& textNode, PassRefPtr<StringImpl> string)
-    : RenderText(&textNode, string)
+    : RenderText(textNode, string)
     , m_combinedTextWidth(0)
     , m_isCombined(false)
     , m_needsFontUpdate(false)
index d02d37e..155a083 100644 (file)
@@ -353,12 +353,13 @@ static CounterNode* makeCounterNode(RenderObject* object, const AtomicString& id
     return newNode.get();
 }
 
-RenderCounter::RenderCounter(const CounterContent& counter)
-    : RenderText(nullptr, emptyString())
+RenderCounter::RenderCounter(Document& document, const CounterContent& counter)
+    : RenderText(document, emptyString())
     , m_counter(counter)
-    , m_counterNode(0)
+    , m_counterNode(nullptr)
     , m_nextForSameCounter(0)
 {
+    view().addRenderCounter();
 }
 
 RenderCounter::~RenderCounter()
@@ -369,15 +370,6 @@ RenderCounter::~RenderCounter()
     }
 }
 
-RenderCounter* RenderCounter::createAnonymous(Document& document, const CounterContent& content)
-{
-    RenderCounter* counter = new (*document.renderArena()) RenderCounter(content);
-    counter->setDocumentForAnonymous(document);
-    counter->view().addRenderCounter();
-
-    return counter;
-}
-
 void RenderCounter::willBeDestroyed()
 {
     view().removeRenderCounter();
index 53118e2..2edc7ff 100644 (file)
@@ -31,10 +31,9 @@ class CounterNode;
 
 class RenderCounter FINAL : public RenderText {
 public:
+    explicit RenderCounter(Document&, const CounterContent&);
     virtual ~RenderCounter();
 
-    static RenderCounter* createAnonymous(Document&, const CounterContent&);
-
     static void destroyCounterNodes(RenderObject*);
     static void destroyCounterNode(RenderObject*, const AtomicString& identifier);
     static void rendererSubtreeAttached(RenderObject*);
@@ -47,8 +46,6 @@ protected:
     virtual void willBeDestroyed();
 
 private:
-    explicit RenderCounter(const CounterContent&);
-
     virtual const char* renderName() const;
     virtual bool isCounter() const;
     virtual String originalText() const;
index 28bc130..e349366 100644 (file)
@@ -121,7 +121,7 @@ private:
 };
 
 RenderDeprecatedFlexibleBox::RenderDeprecatedFlexibleBox(Element& element)
-    : RenderBlock(&element, 0)
+    : RenderBlock(element, 0)
 {
     setChildrenInline(false); // All of our children must be block-level
     m_stretchingChildren = false;
index 8fcd08f..eb9f080 100644 (file)
@@ -33,7 +33,7 @@ namespace WebCore {
 using namespace HTMLNames;
 
 RenderDetailsMarker::RenderDetailsMarker(DetailsMarkerControl& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
 {
 }
 
index 26527da..10c650e 100644 (file)
@@ -65,13 +65,21 @@ namespace WebCore {
 bool RenderElement::s_affectsParentBlock = false;
 bool RenderElement::s_noLongerAffectsParentBlock = false;
 
-RenderElement::RenderElement(Element* element, unsigned baseTypeFlags)
+RenderElement::RenderElement(Element& element, unsigned baseTypeFlags)
     : RenderObject(element)
     , m_baseTypeFlags(baseTypeFlags)
     , m_ancestorLineBoxDirty(false)
     , m_firstChild(nullptr)
     , m_lastChild(nullptr)
-    , m_style(0)
+{
+}
+
+RenderElement::RenderElement(Document& document, unsigned baseTypeFlags)
+    : RenderObject(document)
+    , m_baseTypeFlags(baseTypeFlags)
+    , m_ancestorLineBoxDirty(false)
+    , m_firstChild(nullptr)
+    , m_lastChild(nullptr)
 {
 }
 
@@ -113,7 +121,7 @@ RenderElement* RenderElement::createFor(Element& element, RenderStyle& style)
     // Otherwise acts as if we didn't support this feature.
     const ContentData* contentData = style.contentData();
     if (contentData && !contentData->next() && contentData->isImage() && !element.isPseudoElement()) {
-        RenderImage* image = new (arena) RenderImage(&element);
+        RenderImage* image = new (arena) RenderImage(element);
         // RenderImageResourceStyleImage requires a style being present on the image but we don't want to
         // trigger a style change now as the node is not fully attached. Moving this code to style change
         // doesn't make sense as it should be run once at renderer creation.
@@ -137,35 +145,35 @@ RenderElement* RenderElement::createFor(Element& element, RenderStyle& style)
     if (element.hasTagName(HTMLNames::rtTag) && style.display() == BLOCK)
         return new (arena) RenderRubyText(element);
     if (document.cssRegionsEnabled() && style.isDisplayRegionType() && !style.regionThread().isEmpty())
-        return new (arena) RenderRegion(&element, 0);
+        return new (arena) RenderRegion(element, nullptr);
     switch (style.display()) {
     case NONE:
         return 0;
     case INLINE:
-        return new (arena) RenderInline(&element);
+        return new (arena) RenderInline(element);
     case BLOCK:
     case INLINE_BLOCK:
     case RUN_IN:
     case COMPACT:
         if ((!style.hasAutoColumnCount() || !style.hasAutoColumnWidth()) && document.regionBasedColumnsEnabled())
             return new (arena) RenderMultiColumnBlock(element);
-        return new (arena) RenderBlockFlow(&element);
+        return new (arena) RenderBlockFlow(element);
     case LIST_ITEM:
         return new (arena) RenderListItem(element);
     case TABLE:
     case INLINE_TABLE:
-        return new (arena) RenderTable(&element);
+        return new (arena) RenderTable(element);
     case TABLE_ROW_GROUP:
     case TABLE_HEADER_GROUP:
     case TABLE_FOOTER_GROUP:
-        return new (arena) RenderTableSection(&element);
+        return new (arena) RenderTableSection(element);
     case TABLE_ROW:
-        return new (arena) RenderTableRow(&element);
+        return new (arena) RenderTableRow(element);
     case TABLE_COLUMN_GROUP:
     case TABLE_COLUMN:
         return new (arena) RenderTableCol(element);
     case TABLE_CELL:
-        return new (arena) RenderTableCell(&element);
+        return new (arena) RenderTableCell(element);
     case TABLE_CAPTION:
         return new (arena) RenderTableCaption(element);
     case BOX:
@@ -173,7 +181,7 @@ RenderElement* RenderElement::createFor(Element& element, RenderStyle& style)
         return new (arena) RenderDeprecatedFlexibleBox(element);
     case FLEX:
     case INLINE_FLEX:
-        return new (arena) RenderFlexibleBox(&element);
+        return new (arena) RenderFlexibleBox(element);
     case GRID:
     case INLINE_GRID:
         return new (arena) RenderGrid(element);
index 268328d..4ac1e61 100644 (file)
@@ -114,7 +114,8 @@ protected:
         RenderBlockFlowFlag = 1 << 5,
     };
 
-    explicit RenderElement(Element*, unsigned baseTypeFlags);
+    RenderElement(Element&, unsigned baseTypeFlags);
+    RenderElement(Document&, unsigned baseTypeFlags);
 
     bool layerCreationAllowedForSubtree() const;
 
index d0fa939..3abc02a 100644 (file)
@@ -38,7 +38,7 @@ namespace WebCore {
 using namespace HTMLNames;
 
 RenderFieldset::RenderFieldset(HTMLFieldSetElement& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
 {
 }
 
index 34f6bdd..480330d 100644 (file)
@@ -51,7 +51,7 @@ const int defaultWidthNumChars = 34;
 const int buttonShadowHeight = 2;
 
 RenderFileUploadControl::RenderFileUploadControl(HTMLInputElement& input)
-    : RenderBlockFlow(&input)
+    : RenderBlockFlow(input)
     , m_canReceiveDroppedFiles(input.canReceiveDroppedFiles())
 {
 }
index 0fd2acd..9e82d2d 100644 (file)
@@ -123,7 +123,7 @@ struct RenderFlexibleBox::Violation {
 };
 
 
-RenderFlexibleBox::RenderFlexibleBox(Element* element)
+RenderFlexibleBox::RenderFlexibleBox(Element& element)
     : RenderBlock(element, 0)
     , m_orderIterator(this)
     , m_numberOfInFlowChildrenOnFirstLine(-1)
@@ -131,15 +131,16 @@ RenderFlexibleBox::RenderFlexibleBox(Element* element)
     setChildrenInline(false); // All of our children must be block-level.
 }
 
-RenderFlexibleBox::~RenderFlexibleBox()
+RenderFlexibleBox::RenderFlexibleBox(Document& document)
+    : RenderBlock(document, 0)
+    , m_orderIterator(this)
+    , m_numberOfInFlowChildrenOnFirstLine(-1)
 {
+    setChildrenInline(false); // All of our children must be block-level.
 }
 
-RenderFlexibleBox* RenderFlexibleBox::createAnonymous(Document& document)
+RenderFlexibleBox::~RenderFlexibleBox()
 {
-    RenderFlexibleBox* renderer = new (*document.renderArena()) RenderFlexibleBox(0);
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
 }
 
 const char* RenderFlexibleBox::renderName() const
index c7f4476..dd0e172 100644 (file)
@@ -37,11 +37,10 @@ namespace WebCore {
 
 class RenderFlexibleBox : public RenderBlock {
 public:
-    explicit RenderFlexibleBox(Element*);
+    explicit RenderFlexibleBox(Element&);
+    explicit RenderFlexibleBox(Document&);
     virtual ~RenderFlexibleBox();
 
-    static RenderFlexibleBox* createAnonymous(Document&);
-
     virtual const char* renderName() const OVERRIDE;
 
     virtual bool isFlexibleBox() const OVERRIDE FINAL { return true; }
index b6bfc3d..c62e66b 100644 (file)
@@ -50,8 +50,8 @@
 
 namespace WebCore {
 
-RenderFlowThread::RenderFlowThread()
-    : RenderBlockFlow(0)
+RenderFlowThread::RenderFlowThread(Document& document)
+    : RenderBlockFlow(document)
     , m_previousRegionCount(0)
     , m_autoLogicalHeightRegionsCount(0)
     , m_regionsInvalidated(false)
index 940d4d1..be154b3 100644 (file)
@@ -57,7 +57,7 @@ typedef HashMap<RenderLayer*, RenderRegion*> LayerToRegionMap;
 
 class RenderFlowThread: public RenderBlockFlow {
 public:
-    RenderFlowThread();
+    explicit RenderFlowThread(Document&);
     virtual ~RenderFlowThread() { };
     
     virtual bool isRenderFlowThread() const OVERRIDE FINAL { return true; }
index 7dfdc03..58cc0dc 100644 (file)
@@ -45,7 +45,7 @@
 namespace WebCore {
 
 RenderFrameSet::RenderFrameSet(HTMLFrameSetElement& frameSet)
-    : RenderBox(&frameSet, 0)
+    : RenderBox(frameSet, 0)
     , m_isResizing(false)
     , m_isChildResizing(false)
 {
index abe7db5..0a80620 100644 (file)
@@ -39,38 +39,31 @@ using namespace WebCore;
 
 class RenderFullScreenPlaceholder FINAL : public RenderBlockFlow {
 public:
-    RenderFullScreenPlaceholder(RenderFullScreen* owner) 
-        : RenderBlockFlow(0)
+    RenderFullScreenPlaceholder(RenderFullScreen& owner)
+        : RenderBlockFlow(owner.document())
         , m_owner(owner) 
     {
-        setDocumentForAnonymous(owner->document());
     }
+
 private:
     virtual bool isRenderFullScreenPlaceholder() const { return true; }
     virtual void willBeDestroyed();
-    RenderFullScreen* m_owner;
+    RenderFullScreen& m_owner;
 };
 
 void RenderFullScreenPlaceholder::willBeDestroyed()
 {
-    m_owner->setPlaceholder(0);
+    m_owner.setPlaceholder(0);
     RenderBlock::willBeDestroyed();
 }
 
-RenderFullScreen::RenderFullScreen()
-    : RenderFlexibleBox(0)
+RenderFullScreen::RenderFullScreen(Document& document)
+    : RenderFlexibleBox(document)
     , m_placeholder(0)
 {
     setReplaced(false); 
 }
 
-RenderFullScreen* RenderFullScreen::createAnonymous(Document& document)
-{
-    RenderFullScreen* renderer = new (*document.renderArena()) RenderFullScreen();
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 void RenderFullScreen::willBeDestroyed()
 {
     if (m_placeholder) {
@@ -116,7 +109,7 @@ static PassRefPtr<RenderStyle> createFullScreenStyle()
 
 RenderFullScreen* RenderFullScreen::wrapRenderer(RenderObject* object, RenderElement* parent, Document& document)
 {
-    RenderFullScreen* fullscreenRenderer = RenderFullScreen::createAnonymous(document);
+    RenderFullScreen* fullscreenRenderer = new (object->renderArena()) RenderFullScreen(document);
     fullscreenRenderer->setStyle(createFullScreenStyle());
     if (parent && !parent->isChildAllowed(fullscreenRenderer, fullscreenRenderer->style())) {
         fullscreenRenderer->destroy();
@@ -182,7 +175,7 @@ void RenderFullScreen::createPlaceholder(PassRefPtr<RenderStyle> style, const La
         style->setHeight(Length(frameRect.height(), Fixed));
 
     if (!m_placeholder) {
-        m_placeholder = new (renderArena()) RenderFullScreenPlaceholder(this);
+        m_placeholder = new (renderArena()) RenderFullScreenPlaceholder(*this);
         m_placeholder->setStyle(style);
         if (parent()) {
             parent()->addChild(m_placeholder, this);
index 4a18a0b..7dba780 100644 (file)
@@ -34,7 +34,7 @@ namespace WebCore {
 
 class RenderFullScreen FINAL : public RenderFlexibleBox {
 public:
-    static RenderFullScreen* createAnonymous(Document&);
+    explicit RenderFullScreen(Document&);
 
     virtual bool isRenderFullScreen() const OVERRIDE { return true; }
     virtual const char* renderName() const OVERRIDE { return "RenderFullScreen"; }
@@ -48,7 +48,6 @@ public:
     void unwrapRenderer();
 
 private:
-    RenderFullScreen();
     virtual void willBeDestroyed() OVERRIDE;
 
 protected:
index 6efc7d5..0172093 100644 (file)
@@ -142,7 +142,7 @@ private:
 };
 
 RenderGrid::RenderGrid(Element& element)
-    : RenderBlock(&element, 0)
+    : RenderBlock(element, 0)
 {
     // All of our children must be block level.
     setChildrenInline(false);
index 8290809..e526e9d 100644 (file)
@@ -42,7 +42,7 @@ namespace WebCore {
 using namespace HTMLNames;
 
 RenderHTMLCanvas::RenderHTMLCanvas(HTMLCanvasElement& element)
-    : RenderReplaced(&element, element.size())
+    : RenderReplaced(element, element.size())
 {
     // Actual size is not known yet, report the default intrinsic size.
     view().frameView().incrementVisuallyNonEmptyPixelCount(roundedIntSize(intrinsicSize()));
index 6173d07..72fb6dc 100644 (file)
@@ -53,7 +53,7 @@ namespace WebCore {
 
 using namespace HTMLNames;
 
-RenderImage::RenderImage(Element* element)
+RenderImage::RenderImage(Element& element)
     : RenderReplaced(element, IntSize())
     , m_needsToSetSizeForAltText(false)
     , m_didIncrementVisuallyNonEmptyPixelCount(false)
@@ -62,11 +62,12 @@ RenderImage::RenderImage(Element* element)
     updateAltText();
 }
 
-RenderImage* RenderImage::createAnonymous(Document& document)
+RenderImage::RenderImage(Document& document)
+    : RenderReplaced(document, IntSize())
+    , m_needsToSetSizeForAltText(false)
+    , m_didIncrementVisuallyNonEmptyPixelCount(false)
+    , m_isGeneratedContent(false)
 {
-    RenderImage* image = new (*document.renderArena()) RenderImage(0);
-    image->setDocumentForAnonymous(document);
-    return image;
 }
 
 RenderImage::~RenderImage()
index 3dc9db1..1380acb 100644 (file)
@@ -35,11 +35,10 @@ class HTMLMapElement;
 
 class RenderImage : public RenderReplaced {
 public:
-    explicit RenderImage(Element*);
+    explicit RenderImage(Element&);
+    explicit RenderImage(Document&);
     virtual ~RenderImage();
 
-    static RenderImage* createAnonymous(Document&);
-
     // Set the style of the object if it's generated content.
     void setPseudoStyle(PassRefPtr<RenderStyle>);
 
index 1c2b6c1..1cf0aae 100644 (file)
@@ -50,18 +50,18 @@ using namespace std;
 
 namespace WebCore {
 
-RenderInline::RenderInline(Element* element)
+RenderInline::RenderInline(Element& element)
     : RenderBoxModelObject(element, RenderInlineFlag)
     , m_alwaysCreateLineBoxes(false)
 {
     setChildrenInline(true);
 }
 
-RenderInline* RenderInline::createAnonymous(Document& document)
+RenderInline::RenderInline(Document& document)
+    : RenderBoxModelObject(document, RenderInlineFlag)
+    , m_alwaysCreateLineBoxes(false)
 {
-    RenderInline* renderer = new (*document.renderArena()) RenderInline(0);
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
+    setChildrenInline(true);
 }
 
 void RenderInline::willBeDestroyed()
@@ -319,7 +319,7 @@ void RenderInline::addChildIgnoringContinuation(RenderObject* newChild, RenderOb
         if (auto positionedAncestor = inFlowPositionedInlineAncestor(this))
             newStyle->setPosition(positionedAncestor->style()->position());
 
-        RenderBlock* newBox = RenderBlock::createAnonymous(document());
+        RenderBlock* newBox = new (renderArena()) RenderBlockFlow(document());
         newBox->setStyle(newStyle.release());
         RenderBoxModelObject* oldContinuation = continuation();
         setContinuation(newBox);
@@ -335,7 +335,7 @@ void RenderInline::addChildIgnoringContinuation(RenderObject* newChild, RenderOb
 
 RenderInline* RenderInline::clone() const
 {
-    RenderInline* cloneInline = new (renderArena()) RenderInline(element());
+    RenderInline* cloneInline = new (renderArena()) RenderInline(*element());
     cloneInline->setStyle(style());
     cloneInline->setFlowThreadState(flowThreadState());
     return cloneInline;
index 440aaf7..cb81568 100644 (file)
@@ -33,9 +33,8 @@ class Position;
 
 class RenderInline : public RenderBoxModelObject {
 public:
-    explicit RenderInline(Element*);
-
-    static RenderInline* createAnonymous(Document&);
+    explicit RenderInline(Element&);
+    explicit RenderInline(Document&);
 
     virtual void addChild(RenderObject* newChild, RenderObject* beforeChild = 0) OVERRIDE;
 
index 5b6f0e8..15f2a34 100644 (file)
@@ -6277,7 +6277,7 @@ void RenderLayer::updateScrollCornerStyle()
     RefPtr<RenderStyle> corner = renderer().hasOverflowClip() ? actualRenderer->getUncachedPseudoStyle(PseudoStyleRequest(SCROLLBAR_CORNER), actualRenderer->style()) : PassRefPtr<RenderStyle>(0);
     if (corner) {
         if (!m_scrollCorner) {
-            m_scrollCorner = RenderScrollbarPart::createAnonymous(renderer().document());
+            m_scrollCorner = new (renderer().renderArena()) RenderScrollbarPart(renderer().document());
             m_scrollCorner->setParent(&renderer());
         }
         m_scrollCorner->setStyle(corner.release());
@@ -6293,7 +6293,7 @@ void RenderLayer::updateResizerStyle()
     RefPtr<RenderStyle> resizer = renderer().hasOverflowClip() ? actualRenderer->getUncachedPseudoStyle(PseudoStyleRequest(RESIZER), actualRenderer->style()) : PassRefPtr<RenderStyle>(0);
     if (resizer) {
         if (!m_resizer) {
-            m_resizer = RenderScrollbarPart::createAnonymous(renderer().document());
+            m_resizer = new (renderer().renderArena()) RenderScrollbarPart(renderer().document());
             m_resizer->setParent(&renderer());
         }
         m_resizer->setStyle(resizer.release());
@@ -6311,7 +6311,7 @@ RenderLayer* RenderLayer::reflectionLayer() const
 void RenderLayer::createReflection()
 {
     ASSERT(!m_reflection);
-    m_reflection = RenderReplica::createAnonymous(renderer().document());
+    m_reflection = new (renderer().renderArena()) RenderReplica(renderer().document());
     m_reflection->setParent(&renderer()); // We create a 1-way connection.
 }
 
index 3f5d81a..7724094 100644 (file)
@@ -37,11 +37,16 @@ bool RenderLayerModelObject::s_hadLayer = false;
 bool RenderLayerModelObject::s_hadTransform = false;
 bool RenderLayerModelObject::s_layerWasSelfPainting = false;
 
-RenderLayerModelObject::RenderLayerModelObject(Element* element, unsigned baseTypeFlags)
+RenderLayerModelObject::RenderLayerModelObject(Element& element, unsigned baseTypeFlags)
     : RenderElement(element, baseTypeFlags | RenderLayerModelObjectFlag)
 {
 }
 
+RenderLayerModelObject::RenderLayerModelObject(Document& document, unsigned baseTypeFlags)
+    : RenderElement(document, baseTypeFlags | RenderLayerModelObjectFlag)
+{
+}
+
 RenderLayerModelObject::~RenderLayerModelObject()
 {
     // Our layer should have been destroyed and cleared by now
index 9e1d8d0..5b771d5 100644 (file)
@@ -31,7 +31,6 @@ class RenderLayer;
 
 class RenderLayerModelObject : public RenderElement {
 public:
-    explicit RenderLayerModelObject(Element*, unsigned baseTypeFlags);
     virtual ~RenderLayerModelObject();
 
     // Called by RenderObject::willBeDestroyed() and is the only way layers should ever be destroyed
@@ -51,6 +50,9 @@ public:
     virtual bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const { return false; }
 
 protected:
+    RenderLayerModelObject(Element&, unsigned baseTypeFlags);
+    RenderLayerModelObject(Document&, unsigned baseTypeFlags);
+
     void ensureLayer();
 
     virtual void willBeDestroyed() OVERRIDE;
index 2a5594f..cea4f9c 100644 (file)
@@ -33,7 +33,7 @@ namespace WebCore {
 static const int invalidLineHeight = -1;
 
 RenderLineBreak::RenderLineBreak(HTMLElement& element)
-    : RenderBoxModelObject(&element, 0)
+    : RenderBoxModelObject(element, 0)
     , m_inlineBoxWrapper(nullptr)
     , m_cachedLineHeight(invalidLineHeight)
     , m_isWBR(element.hasTagName(HTMLNames::wbrTag))
index 79eb80a..cc0c13d 100644 (file)
@@ -83,7 +83,7 @@ const int defaultSize = 4;
 const int baselineAdjustment = 7;
 
 RenderListBox::RenderListBox(HTMLSelectElement& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
     , m_optionsChanged(true)
     , m_scrollToRevealSelectionAfterLayout(false)
     , m_inAutoscroll(false)
index 6e63dad..56cf8fc 100644 (file)
@@ -42,7 +42,7 @@ namespace WebCore {
 using namespace HTMLNames;
 
 RenderListItem::RenderListItem(Element& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
     , m_marker(0)
     , m_hasExplicitValue(false)
     , m_isValueUpToDate(false)
@@ -62,7 +62,7 @@ void RenderListItem::styleDidChange(StyleDifference diff, const RenderStyle* old
         // up (e.g., in some deeply nested line box). See CSS3 spec.
         newStyle->inheritFrom(style()); 
         if (!m_marker)
-            m_marker = RenderListMarker::createAnonymous(*this);
+            m_marker = new (renderArena()) RenderListMarker(*this);
         m_marker->setStyle(newStyle.release());
     } else if (m_marker) {
         m_marker->destroy();
index e3a29a3..c6de8a8 100644 (file)
@@ -1118,7 +1118,7 @@ String listMarkerText(EListStyleType type, int value)
 }
 
 RenderListMarker::RenderListMarker(RenderListItem& listItem)
-    : RenderBox(nullptr, 0)
+    : RenderBox(listItem.document(), 0)
     , m_listItem(listItem)
 {
     // init RenderObject attributes
@@ -1132,14 +1132,6 @@ RenderListMarker::~RenderListMarker()
         m_image->removeClient(this);
 }
 
-RenderListMarker* RenderListMarker::createAnonymous(RenderListItem& listItem)
-{
-    Document& document = listItem.document();
-    RenderListMarker* renderer = new (*document.renderArena()) RenderListMarker(listItem);
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 void RenderListMarker::styleWillChange(StyleDifference diff, const RenderStyle* newStyle)
 {
     if (style() && (newStyle->listStylePosition() != style()->listStylePosition() || newStyle->listStyleType() != style()->listStyleType()))
index cb12e73..ee75935 100644 (file)
@@ -35,8 +35,7 @@ String listMarkerText(EListStyleType, int value);
 // The RenderListMarker always has to be a child of a RenderListItem.
 class RenderListMarker FINAL : public RenderBox {
 public:
-    static RenderListMarker* createAnonymous(RenderListItem&);
-
+    explicit RenderListMarker(RenderListItem&);
     virtual ~RenderListMarker();
 
     const String& text() const { return m_text; }
@@ -49,8 +48,6 @@ public:
 private:
     void element() const WTF_DELETED_FUNCTION;
 
-    explicit RenderListMarker(RenderListItem&);
-
     virtual const char* renderName() const OVERRIDE { return "RenderListMarker"; }
     virtual void computePreferredLogicalWidths() OVERRIDE;
 
index b327e57..17685cf 100644 (file)
 namespace WebCore {
 
 RenderMedia::RenderMedia(HTMLMediaElement& element)
-    : RenderImage(&element)
+    : RenderImage(element)
 {
     setImageResource(RenderImageResource::create());
 }
 
 RenderMedia::RenderMedia(HTMLMediaElement& element, const IntSize& intrinsicSize)
-    : RenderImage(&element)
+    : RenderImage(element)
 {
     setImageResource(RenderImageResource::create());
     setIntrinsicSize(intrinsicSize);
index 7f79dba..3fa3af3 100644 (file)
@@ -35,7 +35,7 @@
 
 namespace WebCore {
 
-RenderMediaVolumeSliderContainer::RenderMediaVolumeSliderContainer(Element* element)
+RenderMediaVolumeSliderContainer::RenderMediaVolumeSliderContainer(Element& element)
     : RenderBlockFlow(element)
 {
 }
@@ -59,7 +59,7 @@ void RenderMediaVolumeSliderContainer::layout()
 
 // ----------------------------
 
-RenderMediaControlTimelineContainer::RenderMediaControlTimelineContainer(Element* element)
+RenderMediaControlTimelineContainer::RenderMediaControlTimelineContainer(Element& element)
     : RenderFlexibleBox(element)
 {
 }
@@ -81,7 +81,7 @@ void RenderMediaControlTimelineContainer::layout()
 
 #if ENABLE(VIDEO_TRACK)
 
-RenderTextTrackContainerElement::RenderTextTrackContainerElement(Element* element)
+RenderTextTrackContainerElement::RenderTextTrackContainerElement(Element& element)
     : RenderBlockFlow(element)
 {
 }
index 5dc5c05..4f476c1 100644 (file)
@@ -38,7 +38,7 @@ namespace WebCore {
 
 class RenderMediaVolumeSliderContainer FINAL : public RenderBlockFlow {
 public:
-    RenderMediaVolumeSliderContainer(Element*);
+    RenderMediaVolumeSliderContainer(Element&);
 
 private:
     virtual void layout();
@@ -48,7 +48,7 @@ private:
 
 class RenderMediaControlTimelineContainer FINAL : public RenderFlexibleBox {
 public:
-    RenderMediaControlTimelineContainer(Element*);
+    RenderMediaControlTimelineContainer(Element&);
 
 private:
     virtual void layout();
@@ -60,7 +60,7 @@ private:
 
 class RenderTextTrackContainerElement FINAL : public RenderBlockFlow {
 public:
-    RenderTextTrackContainerElement(Element*);
+    RenderTextTrackContainerElement(Element&);
 
 private:
     virtual void layout();
index ecdd52d..691dd71 100644 (file)
@@ -55,7 +55,7 @@ namespace WebCore {
 using namespace HTMLNames;
 
 RenderMenuList::RenderMenuList(HTMLSelectElement& element)
-    : RenderFlexibleBox(&element)
+    : RenderFlexibleBox(element)
     , m_buttonText(nullptr)
     , m_innerBlock(nullptr)
     , m_needsOptionsWidthUpdate(true)
@@ -241,7 +241,7 @@ void RenderMenuList::setText(const String& s)
     if (m_buttonText)
         m_buttonText->setText(textToUse.impl(), true);
     else {
-        m_buttonText = RenderText::createAnonymous(document(), textToUse);
+        m_buttonText = new (renderArena()) RenderText(document(), textToUse);
         addChild(m_buttonText);
     }
     adjustInnerStyle();
index 345e7a4..ef48740 100644 (file)
@@ -32,7 +32,7 @@ namespace WebCore {
 
 using namespace HTMLNames;
 
-RenderMeter::RenderMeter(HTMLElement* element)
+RenderMeter::RenderMeter(HTMLElement& element)
     : RenderBlockFlow(element)
 {
 }
index f6daa8e..3800df4 100644 (file)
@@ -32,7 +32,7 @@ class HTMLMeterElement;
 
 class RenderMeter FINAL : public RenderBlockFlow {
 public:
-    explicit RenderMeter(HTMLElement*);
+    explicit RenderMeter(HTMLElement&);
     virtual ~RenderMeter();
 
     HTMLMeterElement* meterElement() const;
index 5bb510e..0bc2d0e 100644 (file)
@@ -36,7 +36,7 @@ using namespace std;
 namespace WebCore {
 
 RenderMultiColumnBlock::RenderMultiColumnBlock(Element& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
     , m_flowThread(0)
     , m_columnCount(1)
     , m_columnWidth(0)
@@ -139,7 +139,7 @@ bool RenderMultiColumnBlock::relayoutForPagination(bool, LayoutUnit, LayoutState
 void RenderMultiColumnBlock::addChild(RenderObject* newChild, RenderObject* beforeChild)
 {
     if (!m_flowThread) {
-        m_flowThread = RenderMultiColumnFlowThread::createAnonymous(document());
+        m_flowThread = new (renderArena()) RenderMultiColumnFlowThread(document());
         m_flowThread->setStyle(RenderStyle::createAnonymousStyleWithDisplay(style(), BLOCK));
         RenderBlock::addChild(m_flowThread);
     }
index 2e85d93..4a5f873 100644 (file)
@@ -31,7 +31,8 @@
 
 namespace WebCore {
 
-RenderMultiColumnFlowThread::RenderMultiColumnFlowThread()
+RenderMultiColumnFlowThread::RenderMultiColumnFlowThread(Document& document)
+    : RenderFlowThread(document)
 {
     setFlowThreadState(InsideInFlowThread);
 }
@@ -40,13 +41,6 @@ RenderMultiColumnFlowThread::~RenderMultiColumnFlowThread()
 {
 }
 
-RenderMultiColumnFlowThread* RenderMultiColumnFlowThread::createAnonymous(Document& document)
-{
-    RenderMultiColumnFlowThread* renderer = new (*document.renderArena()) RenderMultiColumnFlowThread();
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 const char* RenderMultiColumnFlowThread::renderName() const
 {    
     return "RenderMultiColumnFlowThread";
@@ -92,7 +86,7 @@ void RenderMultiColumnFlowThread::autoGenerateRegionsToBlockOffset(LayoutUnit /*
     invalidateRegions();
 
     RenderMultiColumnBlock* parentBlock = toRenderMultiColumnBlock(parent());
-    firstSet = RenderMultiColumnSet::createAnonymous(*this);
+    firstSet = new (renderArena()) RenderMultiColumnSet(*this);
     firstSet->setStyle(RenderStyle::createAnonymousStyleWithDisplay(parentBlock->style(), BLOCK));
     parentBlock->RenderBlock::addChild(firstSet);
 
index 471683f..03eedcf 100644 (file)
@@ -33,13 +33,10 @@ namespace WebCore {
 
 class RenderMultiColumnFlowThread FINAL : public RenderFlowThread {
 public:
+    explicit RenderMultiColumnFlowThread(Document&);
     ~RenderMultiColumnFlowThread();
 
-    static RenderMultiColumnFlowThread* createAnonymous(Document&);
-
 private:
-    RenderMultiColumnFlowThread();
-
     virtual const char* renderName() const OVERRIDE;
     virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&) const OVERRIDE;
     virtual void autoGenerateRegionsToBlockOffset(LayoutUnit) OVERRIDE;
index 7703859..eaa12f7 100644 (file)
@@ -35,8 +35,8 @@ using namespace std;
 
 namespace WebCore {
 
-RenderMultiColumnSet::RenderMultiColumnSet(RenderFlowThread* flowThread)
-    : RenderRegionSet(0, flowThread)
+RenderMultiColumnSet::RenderMultiColumnSet(RenderFlowThread& flowThread)
+    : RenderRegionSet(flowThread.document(), flowThread)
     , m_computedColumnCount(1)
     , m_computedColumnWidth(0)
     , m_computedColumnHeight(0)
@@ -49,14 +49,6 @@ RenderMultiColumnSet::RenderMultiColumnSet(RenderFlowThread* flowThread)
 {
 }
 
-RenderMultiColumnSet* RenderMultiColumnSet::createAnonymous(RenderFlowThread& flowThread)
-{
-    Document& document = flowThread.document();
-    RenderMultiColumnSet* renderer = new (*document.renderArena()) RenderMultiColumnSet(&flowThread);
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 LayoutUnit RenderMultiColumnSet::heightAdjustedForSetOffset(LayoutUnit height) const
 {
     RenderMultiColumnBlock* multicolBlock = toRenderMultiColumnBlock(parent());
index 2f4898f..deffbd1 100644 (file)
@@ -43,7 +43,7 @@ namespace WebCore {
 // come before and after the span.
 class RenderMultiColumnSet FINAL : public RenderRegionSet {
 public:
-    static RenderMultiColumnSet* createAnonymous(RenderFlowThread&);
+    explicit RenderMultiColumnSet(RenderFlowThread&);
 
     virtual bool isRenderMultiColumnSet() const OVERRIDE { return true; }
 
@@ -98,8 +98,6 @@ public:
     void prepareForLayout();
 
 private:
-    explicit RenderMultiColumnSet(RenderFlowThread*);
-
     virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&) const OVERRIDE;
 
     virtual void paintObject(PaintInfo&, const LayoutPoint& paintOffset) OVERRIDE;
index aba08bf..dd13bde 100644 (file)
 
 namespace WebCore {
 
-RenderNamedFlowThread* RenderNamedFlowThread::createAnonymous(Document& document, PassRefPtr<WebKitNamedFlow> namedFlow)
-{
-    ASSERT(document.cssRegionsEnabled());
-    RenderNamedFlowThread* renderer = new (*document.renderArena()) RenderNamedFlowThread(namedFlow);
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
-RenderNamedFlowThread::RenderNamedFlowThread(PassRefPtr<WebKitNamedFlow> namedFlow)
-    : m_overset(true)
+RenderNamedFlowThread::RenderNamedFlowThread(Document& document, PassRefPtr<WebKitNamedFlow> namedFlow)
+    : RenderFlowThread(document)
+    , m_overset(true)
     , m_namedFlow(namedFlow)
     , m_regionLayoutUpdateEventTimer(this, &RenderNamedFlowThread::regionLayoutUpdateEventTimerFired)
     , m_regionOversetChangeEventTimer(this, &RenderNamedFlowThread::regionOversetChangeEventTimerFired)
index 5786313..06012ab 100644 (file)
@@ -45,10 +45,9 @@ typedef ListHashSet<Element*> NamedFlowContentElements;
 
 class RenderNamedFlowThread FINAL : public RenderFlowThread {
 public:
+    explicit RenderNamedFlowThread(Document&, PassRefPtr<WebKitNamedFlow>);
     virtual ~RenderNamedFlowThread();
 
-    static RenderNamedFlowThread* createAnonymous(Document&, PassRefPtr<WebKitNamedFlow>);
-
     const AtomicString& flowThreadName() const;
 
     const RenderRegionList& invalidRenderRegionList() const { return m_invalidRegionList; }
@@ -86,8 +85,6 @@ protected:
     void resetMarkForDestruction();
 
 private:
-    explicit RenderNamedFlowThread(PassRefPtr<WebKitNamedFlow>);
-
     virtual const char* renderName() const OVERRIDE;
     virtual bool isRenderNamedFlowThread() const OVERRIDE { return true; }
     virtual bool isChildAllowed(RenderObject*, RenderStyle*) const OVERRIDE;
index dfcd012..e0807f1 100644 (file)
@@ -116,7 +116,7 @@ void RenderObject::operator delete(void* ptr, size_t sz)
 
 DEFINE_DEBUG_ONLY_GLOBAL(WTF::RefCountedLeakCounter, renderObjectCounter, ("RenderObject"));
 
-RenderObject::RenderObject(Node* node)
+RenderObject::RenderObject(Node& node)
     : CachedImageClient()
     , m_node(node)
     , m_parent(0)
index 8c3b7d5..6dd918f 100644 (file)
@@ -149,7 +149,7 @@ class RenderObject : public CachedImageClient {
 public:
     // Anonymous objects should pass the document as their node, and they will then automatically be
     // marked as anonymous in the constructor.
-    explicit RenderObject(Node*);
+    explicit RenderObject(Node&);
     virtual ~RenderObject();
 
     RenderTheme* theme() const;
@@ -378,7 +378,7 @@ public:
 
     virtual bool isRenderScrollbarPart() const { return false; }
 
-    bool isRoot() const { return document().documentElement() == m_node; }
+    bool isRoot() const { return document().documentElement() == &m_node; }
     bool isBody() const;
     bool isHR() const;
     bool isLegend() const;
@@ -595,7 +595,7 @@ public:
     // Returns true if this renderer is rooted, and optionally returns the hosting view (the root of the hierarchy).
     bool isRooted(RenderView** = 0) const;
 
-    Node* node() const { return isAnonymous() ? 0 : m_node; }
+    Node* node() const { return isAnonymous() ? 0 : &m_node; }
     Node* nonPseudoNode() const { return isPseudoElement() ? 0 : node(); }
 
     // Returns the styled node that caused the generation of this renderer.
@@ -603,7 +603,7 @@ public:
     // pseudo elements for which their parent node is returned.
     Node* generatingNode() const { return isPseudoElement() ? generatingPseudoHostElement() : node(); }
 
-    Document& document() const { return m_node->document(); }
+    Document& document() const { return m_node.document(); }
     Frame& frame() const; // Defined in RenderView.h
 
     bool hasOutlineAnnotation() const;
@@ -911,7 +911,7 @@ protected:
     void paintFocusRing(PaintInfo&, const LayoutPoint&, RenderStyle*);
     void paintOutline(PaintInfo&, const LayoutRect&);
     void addPDFURLRect(GraphicsContext*, const LayoutRect&);
-    Node& nodeForNonAnonymous() const { ASSERT(!isAnonymous()); return *m_node; }
+    Node& nodeForNonAnonymous() const { ASSERT(!isAnonymous()); return m_node; }
 
     void adjustRectForOutlineAndShadow(LayoutRect&) const;
 
@@ -924,8 +924,6 @@ protected:
     virtual void insertedIntoTree();
     virtual void willBeRemovedFromTree();
 
-    void setDocumentForAnonymous(Document& document) { ASSERT(isAnonymous()); m_node = &document; }
-
     void setNeedsPositionedMovementLayoutBit(bool b) { m_bitfields.setNeedsPositionedMovementLayout(b); }
     void setNormalChildNeedsLayoutBit(bool b) { m_bitfields.setNormalChildNeedsLayout(b); }
     void setPosChildNeedsLayoutBit(bool b) { m_bitfields.setPosChildNeedsLayout(b); }
@@ -946,7 +944,7 @@ private:
     void checkBlockPositionedObjectsNeedLayout();
 #endif
 
-    Node* m_node;
+    Node& m_node;
 
     RenderElement* m_parent;
     RenderObject* m_previous;
@@ -973,7 +971,7 @@ private:
         };
 
     public:
-        RenderObjectBitfields(Node* node)
+        RenderObjectBitfields(const Node& node)
             : m_needsLayout(false)
             , m_needsPositionedMovementLayout(false)
             , m_normalChildNeedsLayout(false)
@@ -981,7 +979,7 @@ private:
             , m_needsSimplifiedNormalFlowLayout(false)
             , m_preferredLogicalWidthsDirty(false)
             , m_floating(false)
-            , m_isAnonymous(!node)
+            , m_isAnonymous(node.isDocumentNode())
             , m_isTextOrRenderView(false)
             , m_isBox(false)
             , m_isInline(true)
index b6d3ab6..cdbbaf6 100644 (file)
@@ -33,7 +33,7 @@ using namespace std;
 
 namespace WebCore {
 
-RenderProgress::RenderProgress(HTMLElement* element)
+RenderProgress::RenderProgress(HTMLElement& element)
     : RenderBlockFlow(element)
     , m_position(HTMLProgressElement::InvalidPosition)
     , m_animationStartTime(0)
index 24a2bac..3df549d 100644 (file)
@@ -30,7 +30,7 @@ class HTMLProgressElement;
 
 class RenderProgress FINAL : public RenderBlockFlow {
 public:
-    explicit RenderProgress(HTMLElement*);
+    explicit RenderProgress(HTMLElement&);
     virtual ~RenderProgress();
 
     double position() const { return m_position; }
index c381009..9b8f5b2 100644 (file)
@@ -30,8 +30,8 @@ using namespace WTF::Unicode;
 
 namespace WebCore {
 
-RenderQuote::RenderQuote(QuoteType quote)
-    : RenderText(nullptr, emptyString())
+RenderQuote::RenderQuote(Document& document, QuoteType quote)
+    : RenderText(document, emptyString())
     , m_type(quote)
     , m_depth(-1)
     , m_next(0)
@@ -47,13 +47,6 @@ RenderQuote::~RenderQuote()
     ASSERT(!m_previous);
 }
 
-RenderQuote* RenderQuote::createAnonymous(Document& document, QuoteType quote)
-{
-    RenderQuote* renderQuote = new (*document.renderArena()) RenderQuote(quote);
-    renderQuote->setDocumentForAnonymous(document);
-    return renderQuote;
-}
-
 void RenderQuote::willBeDestroyed()
 {
     detachQuote();
index c41cf6e..f9e4289 100644 (file)
@@ -29,15 +29,12 @@ namespace WebCore {
 
 class RenderQuote FINAL : public RenderText {
 public:
+    RenderQuote(Document&, QuoteType);
     virtual ~RenderQuote();
 
-    static RenderQuote* createAnonymous(Document&, QuoteType);
-
     void attachQuote();
 
 private:
-    explicit RenderQuote(QuoteType);
-
     void detachQuote();
 
     virtual void willBeDestroyed() OVERRIDE;
index cee23e2..ed9d242 100644 (file)
@@ -48,7 +48,7 @@ using namespace std;
 
 namespace WebCore {
 
-RenderRegion::RenderRegion(Element* element, RenderFlowThread* flowThread)
+RenderRegion::RenderRegion(Element& element, RenderFlowThread* flowThread)
     : RenderBlockFlow(element)
     , m_flowThread(flowThread)
     , m_parentNamedFlowThread(0)
@@ -60,6 +60,18 @@ RenderRegion::RenderRegion(Element* element, RenderFlowThread* flowThread)
 {
 }
 
+RenderRegion::RenderRegion(Document& document, RenderFlowThread* flowThread)
+    : RenderBlockFlow(document)
+    , m_flowThread(flowThread)
+    , m_parentNamedFlowThread(0)
+    , m_isValid(false)
+    , m_hasCustomRegionStyle(false)
+    , m_hasAutoLogicalHeight(false)
+    , m_hasComputedAutoHeight(false)
+    , m_computedAutoHeight(0)
+{
+}
+
 LayoutUnit RenderRegion::pageLogicalWidth() const
 {
     ASSERT(m_flowThread);
index d5ce95e..2aabfd9 100644 (file)
@@ -45,7 +45,7 @@ class RenderNamedFlowThread;
 
 class RenderRegion : public RenderBlockFlow {
 public:
-    explicit RenderRegion(Element*, RenderFlowThread*);
+    RenderRegion(Element&, RenderFlowThread*);
 
     virtual bool isRenderRegion() const OVERRIDE FINAL { return true; }
 
@@ -149,6 +149,7 @@ public:
     LayoutRect rectFlowPortionForBox(const RenderBox*, const LayoutRect&) const;
 
 protected:
+    RenderRegion(Document&, RenderFlowThread*);
     RenderOverflow* ensureOverflowForBox(const RenderBox*);
 
     void setRegionObjectsRegionStyle();
index e205bcb..a1b52ff 100644 (file)
@@ -30,8 +30,8 @@
 
 namespace WebCore {
 
-RenderRegionSet::RenderRegionSet(Element* element, RenderFlowThread* flowThread)
-    : RenderRegion(element, flowThread)
+RenderRegionSet::RenderRegionSet(Document& document, RenderFlowThread& flowThread)
+    : RenderRegion(document, &flowThread)
 {
 }
 
index a0963fb..366b424 100644 (file)
@@ -46,10 +46,8 @@ class RenderFlowThread;
 // FIXME: For now we derive from RenderRegion, but this may change at some point.
 
 class RenderRegionSet : public RenderRegion {
-public:
-    RenderRegionSet(Element*, RenderFlowThread*);
-    
 protected:
+    RenderRegionSet(Document&, RenderFlowThread&);
     virtual bool shouldHaveAutoLogicalHeight() const OVERRIDE { return false; }
 
 private:
index 2b8dbf5..e0a284f 100644 (file)
@@ -42,20 +42,27 @@ namespace WebCore {
 const int cDefaultWidth = 300;
 const int cDefaultHeight = 150;
 
-RenderReplaced::RenderReplaced(Element* element)
+RenderReplaced::RenderReplaced(Element& element)
     : RenderBox(element, RenderReplacedFlag)
     , m_intrinsicSize(cDefaultWidth, cDefaultHeight)
 {
     setReplaced(true);
 }
 
-RenderReplaced::RenderReplaced(Element* element, const LayoutSize& intrinsicSize)
+RenderReplaced::RenderReplaced(Element& element, const LayoutSize& intrinsicSize)
     : RenderBox(element, RenderReplacedFlag)
     , m_intrinsicSize(intrinsicSize)
 {
     setReplaced(true);
 }
 
+RenderReplaced::RenderReplaced(Document& document, const LayoutSize& intrinsicSize)
+    : RenderBox(document, RenderReplacedFlag)
+    , m_intrinsicSize(intrinsicSize)
+{
+    setReplaced(true);
+}
+
 RenderReplaced::~RenderReplaced()
 {
 }
index f457970..5ad4137 100644 (file)
@@ -28,8 +28,6 @@ namespace WebCore {
 
 class RenderReplaced : public RenderBox {
 public:
-    explicit RenderReplaced(Element*);
-    RenderReplaced(Element*, const LayoutSize& intrinsicSize);
     virtual ~RenderReplaced();
 
     virtual LayoutUnit computeReplacedLogicalWidth(ShouldComputePreferred  = ComputeActual) const OVERRIDE;
@@ -41,6 +39,10 @@ public:
     bool hasReplacedLogicalHeight() const;
 
 protected:
+    explicit RenderReplaced(Element&);
+    RenderReplaced(Element&, const LayoutSize& intrinsicSize);
+    RenderReplaced(Document&, const LayoutSize& intrinsicSize);
+
     virtual void willBeDestroyed() OVERRIDE;
 
     virtual void layout() OVERRIDE;
index 8757e6b..65829b8 100644 (file)
@@ -34,8 +34,8 @@
 
 namespace WebCore {
 
-RenderReplica::RenderReplica()
-    : RenderBox(nullptr, 0)
+RenderReplica::RenderReplica(Document& document)
+    : RenderBox(document, 0)
 {
     // This is a hack. Replicas are synthetic, and don't pick up the attributes of the
     // renderers being replicated, so they always report that they are inline, non-replaced.
@@ -44,13 +44,6 @@ RenderReplica::RenderReplica()
     setReplaced(true);
 }
 
-RenderReplica* RenderReplica::createAnonymous(Document& document)
-{
-    RenderReplica* renderer = new (*document.renderArena()) RenderReplica();
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 RenderReplica::~RenderReplica()
 {
 }
index ad407c4..11f598f 100644 (file)
@@ -35,12 +35,11 @@ namespace WebCore {
 
 class RenderReplica FINAL : public RenderBox {
 public:
-    static RenderReplica* createAnonymous(Document&);
-
+    explicit RenderReplica(Document&);
     virtual ~RenderReplica();
 
     virtual const char* renderName() const { return "RenderReplica"; }
-    
+
     virtual bool requiresLayer() const { return true; }
 
     virtual void layout();
@@ -48,8 +47,6 @@ public:
     virtual void paint(PaintInfo&, const LayoutPoint&);
 
 private:
-    RenderReplica();
-
     virtual bool isReplica() const OVERRIDE { return true; }
     virtual bool canHaveChildren() const OVERRIDE { return false; }
     virtual void computePreferredLogicalWidths() OVERRIDE;
index 2b119ac..931a2fa 100644 (file)
@@ -86,7 +86,7 @@ static inline RenderBlock* rubyAfterBlock(const RenderElement* ruby)
 static RenderBlock* createAnonymousRubyInlineBlock(RenderObject& ruby)
 {
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(ruby.style(), INLINE_BLOCK);
-    RenderBlock* newBlock = RenderBlock::createAnonymous(ruby.document());
+    RenderBlock* newBlock = new (ruby.renderArena()) RenderBlockFlow(ruby.document());
     newBlock->setStyle(newStyle.release());
     return newBlock;
 }
@@ -110,7 +110,7 @@ static inline RenderRubyRun* findRubyRunParent(RenderObject* child)
 //=== ruby as inline object ===
 
 RenderRubyAsInline::RenderRubyAsInline(Element& element)
-    : RenderInline(&element)
+    : RenderInline(element)
 {
 }
 
@@ -216,7 +216,7 @@ void RenderRubyAsInline::removeChild(RenderObject* child)
 //=== ruby as block object ===
 
 RenderRubyAsBlock::RenderRubyAsBlock(Element& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
 {
 }
 
index 8557762..34a12be 100644 (file)
@@ -38,8 +38,8 @@ using namespace std;
 
 namespace WebCore {
 
-RenderRubyBase::RenderRubyBase()
-    : RenderBlockFlow(0)
+RenderRubyBase::RenderRubyBase(Document& document)
+    : RenderBlockFlow(document)
 {
     setInline(false);
 }
@@ -48,13 +48,6 @@ RenderRubyBase::~RenderRubyBase()
 {
 }
 
-RenderRubyBase* RenderRubyBase::createAnonymous(Document& document)
-{
-    RenderRubyBase* renderer = new (*document.renderArena()) RenderRubyBase();
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 bool RenderRubyBase::isChildAllowed(RenderObject* child, RenderStyle*) const
 {
     return child->isInline();
index 1cc90c6..eea9c54 100644 (file)
@@ -39,10 +39,9 @@ class RenderRubyRun;
 
 class RenderRubyBase FINAL : public RenderBlockFlow {
 public:
+    explicit RenderRubyBase(Document&);
     virtual ~RenderRubyBase();
     
-    static RenderRubyBase* createAnonymous(Document&);
-
     virtual const char* renderName() const { return "RenderRubyBase (anonymous)"; }
 
     virtual bool isRubyBase() const { return true; }
@@ -50,8 +49,6 @@ public:
     virtual bool isChildAllowed(RenderObject*, RenderStyle*) const;
 
 private:
-    RenderRubyBase();
-
     virtual ETextAlign textAlignmentForLine(bool endsWithSoftBreak) const;
     virtual void adjustInlineDirectionLineBounds(int expansionOpportunityCount, float& logicalLeft, float& logicalWidth) const;
 
index 5231e90..8714f4e 100644 (file)
@@ -43,8 +43,8 @@ using namespace std;
 
 namespace WebCore {
 
-RenderRubyRun::RenderRubyRun()
-    : RenderBlockFlow(0)
+RenderRubyRun::RenderRubyRun(Document& document)
+    : RenderBlockFlow(document)
 {
     setReplaced(true);
     setInline(true);
@@ -200,7 +200,7 @@ void RenderRubyRun::removeChild(RenderObject* child)
 
 RenderRubyBase* RenderRubyRun::createRubyBase() const
 {
-    RenderRubyBase* renderer = RenderRubyBase::createAnonymous(document());
+    RenderRubyBase* renderer = new (renderArena()) RenderRubyBase(document());
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), BLOCK);
     newStyle->setTextAlign(CENTER); // FIXME: use WEBKIT_CENTER?
     renderer->setStyle(newStyle.release());
@@ -210,8 +210,7 @@ RenderRubyBase* RenderRubyRun::createRubyBase() const
 RenderRubyRun* RenderRubyRun::staticCreateRubyRun(const RenderObject* parentRuby)
 {
     ASSERT(parentRuby && parentRuby->isRuby());
-    RenderRubyRun* rr = new (parentRuby->renderArena()) RenderRubyRun();
-    rr->setDocumentForAnonymous(parentRuby->document());
+    RenderRubyRun* rr = new (parentRuby->renderArena()) RenderRubyRun(parentRuby->document());
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parentRuby->style(), INLINE_BLOCK);
     rr->setStyle(newStyle.release());
     return rr;
index a9de1ef..d7652a3 100644 (file)
@@ -43,6 +43,7 @@ class RenderRubyText;
 
 class RenderRubyRun FINAL : public RenderBlockFlow {
 public:
+    explicit RenderRubyRun(Document&);
     virtual ~RenderRubyRun();
 
     bool hasRubyText() const;
@@ -70,8 +71,6 @@ protected:
     RenderRubyBase* createRubyBase() const;
 
 private:
-    RenderRubyRun();
-
     virtual bool isRubyRun() const { return true; }
     virtual const char* renderName() const { return "RenderRubyRun (anonymous)"; }
     virtual bool createsAnonymousWrapper() const { return true; }
index 157155d..59dd39f 100644 (file)
@@ -38,7 +38,7 @@ using namespace std;
 namespace WebCore {
 
 RenderRubyText::RenderRubyText(Element& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
 {
 }
 
index 7059aed..0b323e2 100644 (file)
@@ -254,7 +254,7 @@ void RenderScrollbar::updateScrollbarPart(ScrollbarPart partType, bool destroy)
     
     RenderScrollbarPart* partRenderer = m_parts.get(partType);
     if (!partRenderer && needRenderer) {
-        partRenderer = RenderScrollbarPart::createAnonymous(owningRenderer()->document(), this, partType);
+        partRenderer = new (owningRenderer()->renderArena()) RenderScrollbarPart(owningRenderer()->document(), this, partType);
         m_parts.set(partType, partRenderer);
     } else if (partRenderer && !needRenderer) {
         m_parts.remove(partType);
index 6e313fe..5c5adf3 100644 (file)
@@ -36,8 +36,8 @@ using namespace std;
 
 namespace WebCore {
 
-RenderScrollbarPart::RenderScrollbarPart(RenderScrollbar* scrollbar, ScrollbarPart part)
-    : RenderBlock(nullptr, 0)
+RenderScrollbarPart::RenderScrollbarPart(Document& document, RenderScrollbar* scrollbar, ScrollbarPart part)
+    : RenderBlock(document, 0)
     , m_scrollbar(scrollbar)
     , m_part(part)
 {
@@ -47,13 +47,6 @@ RenderScrollbarPart::~RenderScrollbarPart()
 {
 }
 
-RenderScrollbarPart* RenderScrollbarPart::createAnonymous(Document& document, RenderScrollbar* scrollbar, ScrollbarPart part)
-{
-    RenderScrollbarPart* renderer = new (*document.renderArena()) RenderScrollbarPart(scrollbar, part);
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 void RenderScrollbarPart::layout()
 {
     StackStats::LayoutCheckPoint layoutCheckPoint;
index 62cac3e..291c3a5 100644 (file)
@@ -35,7 +35,7 @@ class RenderScrollbar;
 
 class RenderScrollbarPart FINAL : public RenderBlock {
 public:
-    static RenderScrollbarPart* createAnonymous(Document&, RenderScrollbar* = 0, ScrollbarPart = NoPart);
+    RenderScrollbarPart(Document&, RenderScrollbar* = 0, ScrollbarPart = NoPart);
     
     virtual ~RenderScrollbarPart();
 
@@ -62,8 +62,6 @@ protected:
     virtual void imageChanged(WrappedImagePtr, const IntRect* = 0);
 
 private:
-    RenderScrollbarPart(RenderScrollbar*, ScrollbarPart);
-
     virtual void computePreferredLogicalWidths();
 
     void layoutHorizontalPart();
index 907aa56..1d94850 100644 (file)
@@ -50,7 +50,7 @@ namespace WebCore {
 const int RenderSlider::defaultTrackLength = 129;
 
 RenderSlider::RenderSlider(HTMLInputElement& element)
-    : RenderFlexibleBox(&element)
+    : RenderFlexibleBox(element)
 {
     // We assume RenderSlider works only with <input type=range>.
     ASSERT(element.isRangeControl());
index 910a747..5433507 100644 (file)
@@ -50,12 +50,32 @@ namespace WebCore {
 
 using namespace HTMLNames;
 
-RenderTable::RenderTable(Element* element)
+RenderTable::RenderTable(Element& element)
     : RenderBlock(element, 0)
-    , m_head(0)
-    , m_foot(0)
-    , m_firstBody(0)
-    , m_currentBorder(0)
+    , m_head(nullptr)
+    , m_foot(nullptr)
+    , m_firstBody(nullptr)
+    , m_currentBorder(nullptr)
+    , m_collapsedBordersValid(false)
+    , m_hasColElements(false)
+    , m_needsSectionRecalc(false)
+    , m_columnLogicalWidthChanged(false)
+    , m_columnRenderersValid(false)
+    , m_hSpacing(0)
+    , m_vSpacing(0)
+    , m_borderStart(0)
+    , m_borderEnd(0)
+{
+    setChildrenInline(false);
+    m_columnPos.fill(0, 1);
+}
+
+RenderTable::RenderTable(Document& document)
+    : RenderBlock(document, 0)
+    , m_head(nullptr)
+    , m_foot(nullptr)
+    , m_firstBody(nullptr)
+    , m_currentBorder(nullptr)
     , m_collapsedBordersValid(false)
     , m_hasColElements(false)
     , m_needsSectionRecalc(false)
@@ -68,7 +88,6 @@ RenderTable::RenderTable(Element* element)
 {
     setChildrenInline(false);
     m_columnPos.fill(0, 1);
-    
 }
 
 RenderTable::~RenderTable()
@@ -1413,8 +1432,7 @@ bool RenderTable::nodeAtPoint(const HitTestRequest& request, HitTestResult& resu
 RenderTable* RenderTable::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), TABLE);
-    RenderTable* newTable = new (parent->renderArena()) RenderTable(0);
-    newTable->setDocumentForAnonymous(parent->document());
+    RenderTable* newTable = new (parent->renderArena()) RenderTable(parent->document());
     newTable->setStyle(newStyle.release());
     return newTable;
 }
index 1142dc9..d245106 100644 (file)
@@ -42,7 +42,8 @@ enum SkipEmptySectionsValue { DoNotSkipEmptySections, SkipEmptySections };
 
 class RenderTable : public RenderBlock {
 public:
-    explicit RenderTable(Element*);
+    explicit RenderTable(Element&);
+    explicit RenderTable(Document&);
     virtual ~RenderTable();
 
     // Per CSS 3 writing-mode: "The first and second values of the 'border-spacing' property represent spacing between columns
index 87a3925..d07950b 100644 (file)
@@ -25,7 +25,7 @@
 namespace WebCore {
 
 RenderTableCaption::RenderTableCaption(Element& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
 {
 }
 
index f6e5b4b..3e871c3 100644 (file)
@@ -56,7 +56,7 @@ struct SameSizeAsRenderTableCell : public RenderBlockFlow {
 COMPILE_ASSERT(sizeof(RenderTableCell) == sizeof(SameSizeAsRenderTableCell), RenderTableCell_should_stay_small);
 COMPILE_ASSERT(sizeof(CollapsedBorderValue) == 8, CollapsedBorderValue_should_stay_small);
 
-RenderTableCell::RenderTableCell(Element* element)
+RenderTableCell::RenderTableCell(Element& element)
     : RenderBlockFlow(element)
     , m_column(unsetColumnIndex)
     , m_cellWidthChanged(false)
@@ -68,6 +68,17 @@ RenderTableCell::RenderTableCell(Element* element)
     updateColAndRowSpanFlags();
 }
 
+RenderTableCell::RenderTableCell(Document& document)
+    : RenderBlockFlow(document)
+    , m_column(unsetColumnIndex)
+    , m_cellWidthChanged(false)
+    , m_hasColSpan(false)
+    , m_hasRowSpan(false)
+    , m_intrinsicPaddingBefore(0)
+    , m_intrinsicPaddingAfter(0)
+{
+}
+
 void RenderTableCell::willBeRemovedFromTree()
 {
     RenderBlock::willBeRemovedFromTree();
@@ -1364,16 +1375,9 @@ void RenderTableCell::scrollbarsChanged(bool horizontalScrollbarChanged, bool ve
         setIntrinsicPaddingAfter(intrinsicPaddingAfter() - scrollbarHeight);
 }
 
-RenderTableCell* RenderTableCell::createAnonymous(Document& document)
-{
-    RenderTableCell* renderer = new (*document.renderArena()) RenderTableCell(0);
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 RenderTableCell* RenderTableCell::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
-    RenderTableCell* newCell = RenderTableCell::createAnonymous(parent->document());
+    RenderTableCell* newCell = new (parent->renderArena()) RenderTableCell(parent->document());
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), TABLE_CELL);
     newCell->setStyle(newStyle.release());
     return newCell;
index bf83c3a..07e783f 100644 (file)
@@ -38,7 +38,8 @@ enum IncludeBorderColorOrNot { DoNotIncludeBorderColor, IncludeBorderColor };
 
 class RenderTableCell FINAL : public RenderBlockFlow {
 public:
-    explicit RenderTableCell(Element*);
+    explicit RenderTableCell(Element&);
+    explicit RenderTableCell(Document&);
     
     unsigned colSpan() const
     {
@@ -161,7 +162,6 @@ public:
     bool cellWidthChanged() const { return m_cellWidthChanged; }
     void setCellWidthChanged(bool b = true) { m_cellWidthChanged = b; }
 
-    static RenderTableCell* createAnonymous(Document&);
     static RenderTableCell* createAnonymousWithParentRenderer(const RenderObject*);
     virtual RenderBox* createAnonymousBoxWithSameTypeAs(const RenderObject* parent) const OVERRIDE
     {
index 6d020c2..e73bffe 100644 (file)
@@ -36,7 +36,7 @@ namespace WebCore {
 using namespace HTMLNames;
 
 RenderTableCol::RenderTableCol(Element& element)
-    : RenderBox(&element, 0)
+    : RenderBox(element, 0)
     , m_span(1)
 {
     // init RenderObject attributes
index e4d66da..46a955a 100644 (file)
@@ -38,12 +38,18 @@ namespace WebCore {
 
 using namespace HTMLNames;
 
-RenderTableRow::RenderTableRow(Element* element)
+RenderTableRow::RenderTableRow(Element& element)
     : RenderBox(element, 0)
     , m_rowIndex(unsetRowIndex)
 {
-    // init RenderObject attributes
-    setInline(false);   // our object is not Inline
+    setInline(false);
+}
+
+RenderTableRow::RenderTableRow(Document& document)
+    : RenderBox(document, 0)
+    , m_rowIndex(unsetRowIndex)
+{
+    setInline(false);
 }
 
 void RenderTableRow::willBeRemovedFromTree()
@@ -253,16 +259,9 @@ void RenderTableRow::imageChanged(WrappedImagePtr, const IntRect*)
     repaint();
 }
 
-RenderTableRow* RenderTableRow::createAnonymous(Document& document)
-{
-    RenderTableRow* renderer = new (*document.renderArena()) RenderTableRow(0);
-    renderer->setDocumentForAnonymous(document);
-    return renderer;
-}
-
 RenderTableRow* RenderTableRow::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
-    RenderTableRow* newRow = RenderTableRow::createAnonymous(parent->document());
+    RenderTableRow* newRow = new (parent->renderArena()) RenderTableRow(parent->document());
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), TABLE_ROW);
     newRow->setStyle(newStyle.release());
     return newRow;
index 44695cd..52861f6 100644 (file)
@@ -34,7 +34,8 @@ static const unsigned maxRowIndex = 0x7FFFFFFE; // 2,147,483,646
 
 class RenderTableRow FINAL : public RenderBox {
 public:
-    explicit RenderTableRow(Element*);
+    explicit RenderTableRow(Element&);
+    explicit RenderTableRow(Document&);
 
     RenderTableRow* nextRow() const;
     RenderTableRow* previousRow() const;
@@ -47,7 +48,6 @@ public:
 
     void paintOutlineForRowIfNeeded(PaintInfo&, const LayoutPoint&);
 
-    static RenderTableRow* createAnonymous(Document&);
     static RenderTableRow* createAnonymousWithParentRenderer(const RenderObject*);
     virtual RenderBox* createAnonymousBoxWithSameTypeAs(const RenderObject* parent) const OVERRIDE
     {
index 7297d82..d149a11 100644 (file)
@@ -83,8 +83,7 @@ static inline void updateLogicalHeightForCell(RenderTableSection::RowStruct& row
     }
 }
 
-
-RenderTableSection::RenderTableSection(Element* element)
+RenderTableSection::RenderTableSection(Element& element)
     : RenderBox(element, 0)
     , m_cCol(0)
     , m_cRow(0)
@@ -95,8 +94,21 @@ RenderTableSection::RenderTableSection(Element* element)
     , m_needsCellRecalc(false)
     , m_hasMultipleCellLevels(false)
 {
-    // init RenderObject attributes
-    setInline(false); // our object is not Inline
+    setInline(false);
+}
+
+RenderTableSection::RenderTableSection(Document& document)
+    : RenderBox(document, 0)
+    , m_cCol(0)
+    , m_cRow(0)
+    , m_outerBorderStart(0)
+    , m_outerBorderEnd(0)
+    , m_outerBorderBefore(0)
+    , m_outerBorderAfter(0)
+    , m_needsCellRecalc(false)
+    , m_hasMultipleCellLevels(false)
+{
+    setInline(false);
 }
 
 RenderTableSection::~RenderTableSection()
@@ -1426,8 +1438,7 @@ CollapsedBorderValue& RenderTableSection::cachedCollapsedBorder(const RenderTabl
 RenderTableSection* RenderTableSection::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), TABLE_ROW_GROUP);
-    RenderTableSection* newSection = new (parent->renderArena()) RenderTableSection(0);
-    newSection->setDocumentForAnonymous(parent->document());
+    RenderTableSection* newSection = new (parent->renderArena()) RenderTableSection(parent->document());
     newSection->setStyle(newStyle.release());
     return newSection;
 }
index c5b23b7..9421fbc 100644 (file)
@@ -64,7 +64,8 @@ class RenderTableRow;
 
 class RenderTableSection FINAL : public RenderBox {
 public:
-    explicit RenderTableSection(Element*);
+    explicit RenderTableSection(Element&);
+    explicit RenderTableSection(Document&);
     virtual ~RenderTableSection();
 
     RenderTableRow* firstRow() const;
index 7042f27..336bec4 100644 (file)
@@ -139,7 +139,7 @@ static void makeCapitalized(String* string, UChar previous)
     *string = result.toString();
 }
 
-RenderText::RenderText(Text* textNode, const String& text)
+RenderText::RenderText(Text& textNode, const String& text)
     : RenderObject(textNode)
     , m_hasTab(false)
     , m_linesDirty(false)
@@ -157,13 +157,32 @@ RenderText::RenderText(Text* textNode, const String& text)
     , m_text(text)
 {
     ASSERT(!m_text.isNull());
-
     setIsText();
-
     m_canUseSimpleFontCodePath = computeCanUseSimpleFontCodePath();
+    view().frameView().incrementVisuallyNonEmptyCharacterCount(m_text.length());
+}
 
-    if (textNode)
-        view().frameView().incrementVisuallyNonEmptyCharacterCount(m_text.length());
+RenderText::RenderText(Document& document, const String& text)
+    : RenderObject(document)
+    , m_hasTab(false)
+    , m_linesDirty(false)
+    , m_containsReversedText(false)
+    , m_isAllASCII(text.containsOnlyASCII())
+    , m_knownToHaveNoOverflowAndNoFallbackFonts(false)
+    , m_useBackslashAsYenSymbol(false)
+#if ENABLE(IOS_TEXT_AUTOSIZING)
+    , m_candidateComputedTextSize(0)
+#endif
+    , m_minWidth(-1)
+    , m_maxWidth(-1)
+    , m_beginMinWidth(0)
+    , m_endMinWidth(0)
+    , m_text(text)
+{
+    ASSERT(!m_text.isNull());
+    setIsText();
+    m_canUseSimpleFontCodePath = computeCanUseSimpleFontCodePath();
+    view().frameView().incrementVisuallyNonEmptyCharacterCount(m_text.length());
 }
 
 #ifndef NDEBUG
@@ -174,14 +193,6 @@ RenderText::~RenderText()
 
 #endif
 
-RenderText* RenderText::createAnonymous(Document& document, const String& text)
-{
-    RenderText* renderText = new (*document.renderArena()) RenderText(nullptr, text);
-    renderText->setDocumentForAnonymous(document);
-    renderText->view().frameView().incrementVisuallyNonEmptyCharacterCount(text.length());
-    return renderText;
-}
-
 const char* RenderText::renderName() const
 {
     return "RenderText";
index dedb81a..c8de87c 100644 (file)
@@ -34,13 +34,12 @@ class InlineTextBox;
 
 class RenderText : public RenderObject {
 public:
-    RenderText(Text*, const String&);
+    RenderText(Text&, const String&);
+    RenderText(Document&, const String&);
 #ifndef NDEBUG
     virtual ~RenderText();
 #endif
 
-    static RenderText* createAnonymous(Document&, const String&);
-
     virtual const char* renderName() const OVERRIDE;
 
     Text* textNode() const;
index 4b879c5..c1b5097 100644 (file)
@@ -37,7 +37,7 @@ using namespace std;
 namespace WebCore {
 
 RenderTextControl::RenderTextControl(HTMLTextFormControlElement& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
 {
 }
 
index 3a0a201..693f6b7 100644 (file)
@@ -104,7 +104,7 @@ void toRenderTextControl(const RenderTextControl*);
 // anymore.
 class RenderTextControlInnerContainer FINAL : public RenderFlexibleBox {
 public:
-    explicit RenderTextControlInnerContainer(Element* element)
+    explicit RenderTextControlInnerContainer(Element& element)
         : RenderFlexibleBox(element)
     { }
     virtual ~RenderTextControlInnerContainer() { }
index 8842406..480ebfb 100644 (file)
@@ -111,7 +111,10 @@ void toRenderTextControlSingleLine(const RenderTextControlSingleLine*);
 
 class RenderTextControlInnerBlock : public RenderBlockFlow {
 public:
-    RenderTextControlInnerBlock(Element* element) : RenderBlockFlow(element) { }
+    RenderTextControlInnerBlock(Element& element)
+        : RenderBlockFlow(element)
+    {
+    }
 
 private:
     virtual bool hasLineIfEmpty() const OVERRIDE { return true; }
index 07ed97e..e491e7e 100644 (file)
 
 namespace WebCore {
 
-RenderTextFragment::RenderTextFragment(Text* textNode, const String& text, int startOffset, int length)
+RenderTextFragment::RenderTextFragment(Text& textNode, const String& text, int startOffset, int length)
     : RenderText(textNode, text.substring(startOffset, length))
     , m_start(startOffset)
     , m_end(length)
-    , m_firstLetter(0)
+    , m_firstLetter(nullptr)
 {
 }
 
-RenderTextFragment::RenderTextFragment(Text* textNode, const String& text)
+RenderTextFragment::RenderTextFragment(Document& document, const String& text, int startOffset, int length)
+    : RenderText(document, text.substring(startOffset, length))
+    , m_start(startOffset)
+    , m_end(length)
+    , m_firstLetter(nullptr)
+{
+}
+
+RenderTextFragment::RenderTextFragment(Document& textNode, const String& text)
     : RenderText(textNode, text)
     , m_start(0)
     , m_end(text.length())
     , m_contentString(text)
-    , m_firstLetter(0)
+    , m_firstLetter(nullptr)
 {
 }
 
@@ -49,20 +57,6 @@ RenderTextFragment::~RenderTextFragment()
 {
 }
 
-RenderTextFragment* RenderTextFragment::createAnonymous(Document& document, const String& text, int startOffset, int length)
-{
-    RenderTextFragment* fragment = new (*document.renderArena()) RenderTextFragment(nullptr, text, startOffset, length);
-    fragment->setDocumentForAnonymous(document);
-    return fragment;
-}
-
-RenderTextFragment* RenderTextFragment::createAnonymous(Document& document, const String& text)
-{
-    RenderTextFragment* fragment = new (*document.renderArena()) RenderTextFragment(nullptr, text);
-    fragment->setDocumentForAnonymous(document);
-    return fragment;
-}
-
 String RenderTextFragment::originalText() const
 {
     String result = textNode() ? textNode()->data() : contentString();
index 7c7503b..b1a42b3 100644 (file)
@@ -33,13 +33,12 @@ namespace WebCore {
 // the original unaltered string from our corresponding DOM node.
 class RenderTextFragment FINAL : public RenderText {
 public:
-    RenderTextFragment(Text*, const String&, int startOffset, int length);
+    RenderTextFragment(Text&, const String&, int startOffset, int length);
+    RenderTextFragment(Document&, const String&, int startOffset, int length);
+    RenderTextFragment(Document&, const String&);
 
     virtual ~RenderTextFragment();
 
-    static RenderTextFragment* createAnonymous(Document&, const String&);
-    static RenderTextFragment* createAnonymous(Document&, const String&, int startOffset, int length);
-
     virtual bool isTextFragment() const OVERRIDE { return true; }
 
     virtual bool canBeSelectionLeaf() const OVERRIDE;
@@ -58,8 +57,6 @@ public:
     virtual void transformText() OVERRIDE;
 
 private:
-    RenderTextFragment(Text*, const String&);
-
     virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) OVERRIDE;
     virtual void willBeDestroyed() OVERRIDE;
 
index 4286cce..300bcf3 100644 (file)
@@ -37,9 +37,9 @@
 
 namespace WebCore {
 
-RenderTextTrackCue::RenderTextTrackCue(TextTrackCueBox* element)
+RenderTextTrackCue::RenderTextTrackCue(TextTrackCueBox& element)
     : RenderBlockFlow(element)
-    , m_cue(element->getCue())
+    , m_cue(element.getCue())
 {
 }
 
index 2599395..803fc1f 100644 (file)
@@ -39,7 +39,7 @@ class TextTrackCueBox;
 
 class RenderTextTrackCue FINAL : public RenderBlockFlow {
 public:
-    explicit RenderTextTrackCue(TextTrackCueBox*);
+    explicit RenderTextTrackCue(TextTrackCueBox&);
 
 private:
     virtual void layout() OVERRIDE;
index fcc65f5..be6b01f 100644 (file)
@@ -57,7 +57,7 @@
 namespace WebCore {
 
 RenderView::RenderView(Document& document)
-    : RenderBlockFlow(0)
+    : RenderBlockFlow(document)
     , m_frameView(*document.view())
     , m_selectionStart(0)
     , m_selectionEnd(0)
@@ -76,7 +76,6 @@ RenderView::RenderView(Document& document)
 #endif
 {
     setIsRenderView();
-    setDocumentForAnonymous(document);
 
     // FIXME: We should find a way to enforce this at compile time.
     ASSERT(document.view());
index 90584b9..4fffc81 100644 (file)
@@ -89,7 +89,7 @@ static void moveWidgetToParentSoon(Widget* child, FrameView* parent)
 }
 
 RenderWidget::RenderWidget(HTMLFrameOwnerElement& element)
-    : RenderReplaced(&element)
+    : RenderReplaced(element)
     , m_weakPtrFactory(this)
 {
     setInline(false);
index ba91c29..29afcd1 100644 (file)
@@ -43,12 +43,18 @@ namespace WebCore {
     
 using namespace MathMLNames;
     
-RenderMathMLBlock::RenderMathMLBlock(Element* container)
+RenderMathMLBlock::RenderMathMLBlock(Element& container)
     : RenderFlexibleBox(container)
     , m_ignoreInAccessibilityTree(false)
 {
 }
 
+RenderMathMLBlock::RenderMathMLBlock(Document& document)
+    : RenderFlexibleBox(document)
+    , m_ignoreInAccessibilityTree(false)
+{
+}
+
 bool RenderMathMLBlock::isChildAllowed(RenderObject* child, RenderStyle*) const
 {
     return child->node() && child->node()->nodeType() == Node::ELEMENT_NODE;
@@ -57,8 +63,7 @@ bool RenderMathMLBlock::isChildAllowed(RenderObject* child, RenderStyle*) const
 RenderMathMLBlock* RenderMathMLBlock::createAnonymousMathMLBlock(EDisplay display)
 {
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), display);
-    RenderMathMLBlock* newBlock = new (renderArena()) RenderMathMLBlock(0);
-    newBlock->setDocumentForAnonymous(document());
+    RenderMathMLBlock* newBlock = new (renderArena()) RenderMathMLBlock(document());
     newBlock->setStyle(newStyle.release());
     return newBlock;
 }
index 1aaf81d..4c40069 100644 (file)
@@ -41,7 +41,8 @@ class RenderMathMLOperator;
 
 class RenderMathMLBlock : public RenderFlexibleBox {
 public:
-    RenderMathMLBlock(Element* container);
+    explicit RenderMathMLBlock(Element&);
+    explicit RenderMathMLBlock(Document&);
 
     virtual bool isChildAllowed(RenderObject*, RenderStyle*) const OVERRIDE;
     
@@ -101,7 +102,10 @@ void toRenderMathMLBlock(const RenderMathMLBlock*);
 
 class RenderMathMLTable FINAL : public RenderTable {
 public:
-    explicit RenderMathMLTable(Element* element) : RenderTable(element) { }
+    explicit RenderMathMLTable(Element& element)
+        : RenderTable(element)
+    {
+    }
     
     virtual int firstLineBoxBaseline() const OVERRIDE;
     
index 1fcc53f..08d0de3 100644 (file)
@@ -45,7 +45,7 @@ enum Braces { OpeningBraceChar = 0x28, ClosingBraceChar = 0x29 };
 static const float gSeparatorMarginEndEms = 0.25f;
 static const float gFenceMarginEms = 0.1f;
 
-RenderMathMLFenced::RenderMathMLFenced(Element* element)
+RenderMathMLFenced::RenderMathMLFenced(Element& element)
     : RenderMathMLRow(element)
     , m_open(OpeningBraceChar)
     , m_close(ClosingBraceChar)
@@ -89,7 +89,7 @@ RenderMathMLOperator* RenderMathMLFenced::createMathMLOperator(UChar uChar, Rend
     newStyle->setMarginEnd(Length((operatorType == RenderMathMLOperator::Fence ? gFenceMarginEms : gSeparatorMarginEndEms) * style()->fontSize(), Fixed));
     if (operatorType == RenderMathMLOperator::Fence)
         newStyle->setMarginStart(Length(gFenceMarginEms * style()->fontSize(), Fixed));
-    RenderMathMLOperator* newOperator = new (renderArena()) RenderMathMLOperator(element(), uChar);
+    RenderMathMLOperator* newOperator = new (renderArena()) RenderMathMLOperator(*element(), uChar);
     newOperator->setOperatorType(operatorType);
     newOperator->setStyle(newStyle.release());
     return newOperator;
index a8b73a9..f99d3d0 100644 (file)
@@ -35,7 +35,7 @@ namespace WebCore {
     
 class RenderMathMLFenced : public RenderMathMLRow {
 public:
-    RenderMathMLFenced(Element*);
+    explicit RenderMathMLFenced(Element&);
     virtual void addChild(RenderObject* child, RenderObject* beforeChild = 0);
     virtual void updateFromElement();
     
index d9f28d4..c022440 100644 (file)
@@ -43,7 +43,7 @@ static const float gLineMedium = 1.f;
 static const float gLineThick = 3.f;
 static const float gFractionBarWidth = 0.05f;
 
-RenderMathMLFraction::RenderMathMLFraction(Element* element)
+RenderMathMLFraction::RenderMathMLFraction(Element& element)
     : RenderMathMLBlock(element)
     , m_lineThickness(gLineMedium)
 {
index 7bf31b7..9bf68c2 100644 (file)
@@ -35,7 +35,7 @@ namespace WebCore {
 
 class RenderMathMLFraction : public RenderMathMLBlock {
 public:
-    RenderMathMLFraction(Element*);
+    explicit RenderMathMLFraction(Element&);
     virtual void addChild(RenderObject* child, RenderObject* beforeChild = 0) OVERRIDE;
     virtual void updateFromElement() OVERRIDE;
     
index 15e2bbd..6984d13 100644 (file)
@@ -35,7 +35,7 @@ namespace WebCore {
 
 using namespace MathMLNames;
 
-RenderMathMLMath::RenderMathMLMath(Element* element)
+RenderMathMLMath::RenderMathMLMath(Element& element)
     : RenderMathMLRow(element)
 {
 }
index aaa2f4f..e5048c3 100644 (file)
@@ -34,7 +34,7 @@ namespace WebCore {
     
 class RenderMathMLMath : public RenderMathMLRow {
 public:
-    RenderMathMLMath(Element*);
+    explicit RenderMathMLMath(Element&);
     virtual bool isRenderMathMLMath() const { return true; }
 
 private:
index f9cebe0..418398d 100644 (file)
@@ -62,21 +62,21 @@ static RenderMathMLOperator::StretchyCharacter stretchyCharacters[13] = {
     { 0x222b, 0x2320, 0x23ae, 0x2321, 0x0    } // integral sign
 };
 
-RenderMathMLOperator::RenderMathMLOperator(Element* element)
+RenderMathMLOperator::RenderMathMLOperator(Element& element)
     : RenderMathMLBlock(element)
     , m_stretchHeight(0)
     , m_operator(0)
     , m_operatorType(Default)
-    , m_stretchyCharacter(0)
+    , m_stretchyCharacter(nullptr)
 {
 }
 
-RenderMathMLOperator::RenderMathMLOperator(Element* element, UChar operatorChar)
+RenderMathMLOperator::RenderMathMLOperator(Element& element, UChar operatorChar)
     : RenderMathMLBlock(element)
     , m_stretchHeight(0)
     , m_operator(convertHyphenMinusToMinusSign(operatorChar))
     , m_operatorType(Default)
-    , m_stretchyCharacter(0)
+    , m_stretchyCharacter(nullptr)
 {
 }
 
@@ -176,17 +176,17 @@ void RenderMathMLOperator::updateFromElement()
     newStyle->inheritFrom(style());
     newStyle->setDisplay(FLEX);
 
-    RenderMathMLBlock* container = new (renderArena()) RenderMathMLBlock(element());
+    RenderMathMLBlock* container = new (renderArena()) RenderMathMLBlock(*element());
     // This container doesn't offer any useful information to accessibility.
     container->setIgnoreInAccessibilityTree(true);
     container->setStyle(newStyle.release());
 
     addChild(container);
-    RenderText* text = 0;
+    RenderText* text;
     if (m_operator)
-        text = RenderText::createAnonymous(document(), String(&m_operator, 1));
+        text = new (renderArena()) RenderText(document(), String(&m_operator, 1));
     else
-        text = RenderText::createAnonymous(document(), element()->textContent().replace(hyphenMinus, minusSign).impl());
+        text = new (renderArena()) RenderText(document(), element()->textContent().replace(hyphenMinus, minusSign).impl());
 
     // If we can't figure out the text, leave it blank.
     if (text)
index cda0f72..da502d7 100644 (file)
@@ -35,8 +35,8 @@ namespace WebCore {
     
 class RenderMathMLOperator : public RenderMathMLBlock {
 public:
-    RenderMathMLOperator(Element*);
-    RenderMathMLOperator(Element*, UChar operatorChar);
+    RenderMathMLOperator(Element&);
+    RenderMathMLOperator(Element&, UChar operatorChar);
 
     virtual bool isRenderMathMLOperator() const OVERRIDE { return true; }
     
index 6392d81..d167c9e 100644 (file)
@@ -66,7 +66,7 @@ const float gRadicalLineThicknessEms = 0.02f;
 // Radical thick line thickness (em)
 const float gRadicalThickLineThicknessEms = 0.1f;
     
-RenderMathMLRoot::RenderMathMLRoot(Element* element)
+RenderMathMLRoot::RenderMathMLRoot(Element& element)
     : RenderMathMLBlock(element)
     , m_intrinsicPaddingBefore(0)
     , m_intrinsicPaddingAfter(0)
index ca7d479..1b3cb12 100644 (file)
@@ -35,7 +35,7 @@ namespace WebCore {
 // Render base^(1/index), or sqrt(base) via the derived class RenderMathMLSquareRoot, using radical notation.
 class RenderMathMLRoot : public RenderMathMLBlock {
 public:
-    RenderMathMLRoot(Element*);
+    explicit RenderMathMLRoot(Element&);
 
     virtual LayoutUnit paddingTop() const OVERRIDE;
     virtual LayoutUnit paddingBottom() const OVERRIDE;
index c10d6b8..16a8820 100644 (file)
@@ -36,17 +36,21 @@ namespace WebCore {
 
 using namespace MathMLNames;
 
-RenderMathMLRow::RenderMathMLRow(Element* element)
+RenderMathMLRow::RenderMathMLRow(Element& element)
     : RenderMathMLBlock(element)
 {
 }
 
+RenderMathMLRow::RenderMathMLRow(Document& document)
+    : RenderMathMLBlock(document)
+{
+}
+
 // FIXME: Change all these createAnonymous... routines to return a PassOwnPtr<>.
 RenderMathMLRow* RenderMathMLRow::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), FLEX);
-    RenderMathMLRow* newMRow = new (parent->renderArena()) RenderMathMLRow(0);
-    newMRow->setDocumentForAnonymous(parent->document());
+    RenderMathMLRow* newMRow = new (parent->renderArena()) RenderMathMLRow(parent->document());
     newMRow->setStyle(newStyle.release());
     return newMRow;
 }
index 33494c3..452cb09 100644 (file)
@@ -34,7 +34,8 @@ namespace WebCore {
     
 class RenderMathMLRow : public RenderMathMLBlock {
 public:
-    RenderMathMLRow(Element*);
+    explicit RenderMathMLRow(Element&);
+    explicit RenderMathMLRow(Document&);
 
     static RenderMathMLRow* createAnonymousWithParentRenderer(const RenderObject*);
     
index 7861fbf..795863a 100644 (file)
@@ -56,19 +56,19 @@ static bool isPrescript(RenderObject* renderObject)
     return renderObject->node() && renderObject->node()->hasTagName(MathMLNames::mprescriptsTag);
 }
 
-RenderMathMLScripts::RenderMathMLScripts(Element* element)
+RenderMathMLScripts::RenderMathMLScripts(Element& element)
     : RenderMathMLBlock(element)
     , m_baseWrapper(0)
 {
     // Determine what kind of sub/sup expression we have by element name
-    if (element->hasLocalName(MathMLNames::msubTag))
+    if (element.hasLocalName(MathMLNames::msubTag))
         m_kind = Sub;
-    else if (element->hasLocalName(MathMLNames::msupTag))
+    else if (element.hasLocalName(MathMLNames::msupTag))
         m_kind = Super;
-    else if (element->hasLocalName(MathMLNames::msubsupTag))
+    else if (element.hasLocalName(MathMLNames::msubsupTag))
         m_kind = SubSup;
     else {
-        ASSERT(element->hasLocalName(MathMLNames::mmultiscriptsTag));
+        ASSERT(element.hasLocalName(MathMLNames::mmultiscriptsTag));
         m_kind = Multiscripts;
     }
 }
@@ -368,8 +368,7 @@ int RenderMathMLScripts::firstLineBoxBaseline() const
 RenderMathMLScriptsWrapper* RenderMathMLScriptsWrapper::createAnonymousWrapper(RenderMathMLScripts* renderObject, WrapperType type)
 {
     RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(renderObject->style(), FLEX);
-    RenderMathMLScriptsWrapper* newBlock = new (renderObject->renderArena()) RenderMathMLScriptsWrapper(0, type);
-    newBlock->setDocumentForAnonymous(renderObject->document());
+    RenderMathMLScriptsWrapper* newBlock = new (renderObject->renderArena()) RenderMathMLScriptsWrapper(renderObject->document(), type);
     newBlock->setStyle(newStyle.release());
     return newBlock;
 }
index 6b8db07..85c6414 100644 (file)
@@ -42,13 +42,16 @@ friend class RenderMathMLScripts;
 public:
     enum WrapperType { Base, SubSupPair };
 
-    RenderMathMLScriptsWrapper(Element* element, WrapperType kind) :
-    RenderMathMLBlock(element), m_kind(kind) { };
-
     virtual void addChild(RenderObject* child, RenderObject* beforeChild = 0) OVERRIDE;
     virtual void removeChild(RenderObject*) OVERRIDE;
 
 private:
+    RenderMathMLScriptsWrapper(Document& document, WrapperType kind)
+        : RenderMathMLBlock(document)
+        , m_kind(kind)
+    {
+    }
+
     static RenderMathMLScriptsWrapper* createAnonymousWrapper(RenderMathMLScripts* renderObject, WrapperType);
 
     void addChildInternal(bool normalInsertion, RenderObject* child, RenderObject* beforeChild = 0);
@@ -94,7 +97,7 @@ class RenderMathMLScripts : public RenderMathMLBlock {
 friend class RenderMathMLScriptsWrapper;
 
 public:
-    RenderMathMLScripts(Element*);
+    explicit RenderMathMLScripts(Element&);
     virtual void addChild(RenderObject* child, RenderObject* beforeChild = 0) OVERRIDE;
     virtual void removeChild(RenderObject*) OVERRIDE;
     
index 7f168a9..c7f26a2 100644 (file)
@@ -36,7 +36,7 @@ namespace WebCore {
     
 using namespace MathMLNames;
 
-RenderMathMLSpace::RenderMathMLSpace(Element* element)
+RenderMathMLSpace::RenderMathMLSpace(Element& element)
     : RenderMathMLBlock(element)
     , m_width(0)
     , m_height(0)
index 46e6a04..cbf2e98 100644 (file)
@@ -34,7 +34,7 @@ namespace WebCore {
     
 class RenderMathMLSpace : public RenderMathMLBlock {
 public:
-    explicit RenderMathMLSpace(Element*);
+    explicit RenderMathMLSpace(Element&);
 
     virtual int firstLineBoxBaseline() const OVERRIDE;
     virtual void updateLogicalWidth() OVERRIDE;
index da75045..0763591 100644 (file)
@@ -32,7 +32,7 @@
 
 namespace WebCore {
     
-RenderMathMLSquareRoot::RenderMathMLSquareRoot(Element* element)
+RenderMathMLSquareRoot::RenderMathMLSquareRoot(Element& element)
     : RenderMathMLRoot(element)
 {
 }
index 39e0aa7..3e6cf99 100644 (file)
@@ -35,7 +35,7 @@ namespace WebCore {
 // Render sqrt(base), using radical notation.
 class RenderMathMLSquareRoot : public RenderMathMLRoot {
 public:
-    RenderMathMLSquareRoot(Element*);
+    explicit RenderMathMLSquareRoot(Element&);
     
 private:
     virtual bool isRenderMathMLSquareRoot() const { return true; }
index c658051..17a929b 100644 (file)
@@ -35,16 +35,16 @@ namespace WebCore {
 
 using namespace MathMLNames;
     
-RenderMathMLUnderOver::RenderMathMLUnderOver(Element* element)
+RenderMathMLUnderOver::RenderMathMLUnderOver(Element& element)
     : RenderMathMLBlock(element)
 {
     // Determine what kind of under/over expression we have by element name
-    if (element->hasLocalName(MathMLNames::munderTag))
+    if (element.hasLocalName(MathMLNames::munderTag))
         m_kind = Under;
-    else if (element->hasLocalName(MathMLNames::moverTag))
+    else if (element.hasLocalName(MathMLNames::moverTag))
         m_kind = Over;
     else {
-        ASSERT(element->hasLocalName(MathMLNames::munderoverTag));
+        ASSERT(element.hasLocalName(MathMLNames::munderoverTag));
         m_kind = UnderOver;
     }
 }
index 4608145..3e2d5b0 100644 (file)
@@ -34,7 +34,7 @@ namespace WebCore {
     
 class RenderMathMLUnderOver : public RenderMathMLBlock {
 public:
-    RenderMathMLUnderOver(Element*);
+    explicit RenderMathMLUnderOver(Element&);
     
     virtual RenderMathMLOperator* unembellishedOperator();
 
index fb126f8..6f64699 100644 (file)
@@ -49,7 +49,7 @@ std::unique_ptr<ContentData> ContentData::clone() const
 
 RenderObject* ImageContentData::createRenderer(Document& document, RenderStyle& pseudoStyle) const
 {
-    RenderImage* image = RenderImage::createAnonymous(document);
+    RenderImage* image = new (*document.renderArena()) RenderImage(document);
     image->setPseudoStyle(&pseudoStyle);
     if (m_image)
         image->setImageResource(RenderImageResourceStyleImage::create(m_image.get()));
@@ -60,17 +60,17 @@ RenderObject* ImageContentData::createRenderer(Document& document, RenderStyle&
 
 RenderObject* TextContentData::createRenderer(Document& document, RenderStyle&) const
 {
-    return RenderTextFragment::createAnonymous(document, m_text);
+    return new (*document.renderArena()) RenderTextFragment(document, m_text);
 }
 
 RenderObject* CounterContentData::createRenderer(Document& document, RenderStyle&) const
 {
-    return RenderCounter::createAnonymous(document, *m_counter);
+    return new (*document.renderArena()) RenderCounter(document, *m_counter);
 }
 
 RenderObject* QuoteContentData::createRenderer(Document& document, RenderStyle&) const
 {
-    return RenderQuote::createAnonymous(document, m_quote);
+    return new (*document.renderArena()) RenderQuote(document, m_quote);
 }
 
 } // namespace WebCore
index 9d537ea..9dcc37d 100644 (file)
@@ -32,7 +32,7 @@
 namespace WebCore {
 
 RenderSVGBlock::RenderSVGBlock(SVGGraphicsElement& element)
-    : RenderBlockFlow(&element)
+    : RenderBlockFlow(element)
 {
 }
 
index aa02d09..294a528 100644 (file)
@@ -33,7 +33,7 @@ namespace WebCore {
     
 using namespace SVGNames;
 
-RenderSVGGradientStop::RenderSVGGradientStop(SVGStopElement* element)
+RenderSVGGradientStop::RenderSVGGradientStop(SVGStopElement& element)
     : RenderElement(element, 0)
 {
 }
index a56bad9..6529b9e 100644 (file)
@@ -32,7 +32,7 @@ class SVGStopElement;
 // This class exists mostly so we can hear about gradient stop style changes
 class RenderSVGGradientStop FINAL : public RenderElement {
 public:
-    RenderSVGGradientStop(SVGStopElement*);
+    explicit RenderSVGGradientStop(SVGStopElement&);
     virtual ~RenderSVGGradientStop();
 
     virtual bool isSVGGradientStop() const { return true; }
index 99163a8..3acf7b7 100644 (file)
@@ -33,7 +33,7 @@
 namespace WebCore {
     
 RenderSVGInline::RenderSVGInline(SVGGraphicsElement& element)
-    : RenderInline(&element)
+    : RenderInline(element)
 {
     setAlwaysCreateLineBoxes();
 }
index 1267547..1b10b25 100644 (file)
@@ -68,7 +68,7 @@ static String applySVGWhitespaceRules(const String& string, bool preserveWhiteSp
 }
 
 RenderSVGInlineText::RenderSVGInlineText(Text& textNode, const String& string)
-    : RenderText(&textNode, applySVGWhitespaceRules(string, false))
+    : RenderText(textNode, applySVGWhitespaceRules(string, false))
     , m_scalingFactor(1)
     , m_layoutAttributes(this)
 {
index f6af8fc..318642d 100644 (file)
@@ -43,7 +43,7 @@
 namespace WebCore {
 
 RenderSVGModelObject::RenderSVGModelObject(SVGElement& element)
-    : RenderElement(&element, 0)
+    : RenderElement(element, 0)
     , m_hasSVGShadow(false)
 {
 }
index 4a7fab6..b654bc9 100644 (file)
@@ -57,7 +57,7 @@ using namespace std;
 namespace WebCore {
 
 RenderSVGRoot::RenderSVGRoot(SVGSVGElement& element)
-    : RenderReplaced(&element)
+    : RenderReplaced(element)
     , m_objectBoundingBoxValid(false)
     , m_isLayoutSizeChanged(false)
     , m_needsBoundariesOrTransformUpdate(true)
index 9453180..73e8ace 100644 (file)
@@ -102,7 +102,7 @@ void SVGStopElement::svgAttributeChanged(const QualifiedName& attrName)
 
 RenderElement* SVGStopElement::createRenderer(RenderArena& arena, RenderStyle&)
 {
-    return new (arena) RenderSVGGradientStop(this);
+    return new (arena) RenderSVGGradientStop(*this);
 }
 
 bool SVGStopElement::rendererIsNeeded(const RenderStyle&)