Changeset 228429 in webkit


Ignore:
Timestamp:
Feb 13, 2018 12:36:41 PM (6 years ago)
Author:
Alan Bujtas
Message:

[RenderTreeBuilder] Move RenderSVG*::takeChild() to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=182736
<rdar://problem/37503107>

Reviewed by Antti Koivisto.

No change in functionality.

  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::takeChild): Deleted.

  • rendering/svg/RenderSVGContainer.h:
  • rendering/svg/RenderSVGInline.cpp:

(WebCore::RenderSVGInline::takeChild): Deleted.

  • rendering/svg/RenderSVGInline.h:
  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::takeChild): Deleted.

  • rendering/svg/RenderSVGRoot.h:
  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::takeChild): Deleted.

  • rendering/svg/RenderSVGText.h:
  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::takeChild):

  • rendering/updating/RenderTreeBuilderSVG.cpp:

(WebCore::RenderTreeBuilder::SVG::takeChild):

  • rendering/updating/RenderTreeBuilderSVG.h:
Location:
trunk/Source/WebCore
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r228428 r228429  
     12018-02-13  Zalan Bujtas  <zalan@apple.com>
     2
     3        [RenderTreeBuilder] Move RenderSVG*::takeChild() to RenderTreeBuilder
     4        https://bugs.webkit.org/show_bug.cgi?id=182736
     5        <rdar://problem/37503107>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        No change in functionality.
     10
     11        * rendering/svg/RenderSVGContainer.cpp:
     12        (WebCore::RenderSVGContainer::takeChild): Deleted.
     13        * rendering/svg/RenderSVGContainer.h:
     14        * rendering/svg/RenderSVGInline.cpp:
     15        (WebCore::RenderSVGInline::takeChild): Deleted.
     16        * rendering/svg/RenderSVGInline.h:
     17        * rendering/svg/RenderSVGRoot.cpp:
     18        (WebCore::RenderSVGRoot::takeChild): Deleted.
     19        * rendering/svg/RenderSVGRoot.h:
     20        * rendering/svg/RenderSVGText.cpp:
     21        (WebCore::RenderSVGText::takeChild): Deleted.
     22        * rendering/svg/RenderSVGText.h:
     23        * rendering/updating/RenderTreeBuilder.cpp:
     24        (WebCore::RenderTreeBuilder::takeChild):
     25        * rendering/updating/RenderTreeBuilderSVG.cpp:
     26        (WebCore::RenderTreeBuilder::SVG::takeChild):
     27        * rendering/updating/RenderTreeBuilderSVG.h:
     28
    1292018-02-13  Zalan Bujtas  <zalan@apple.com>
    230
  • trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp

    r227977 r228429  
    9494{
    9595    builder.insertChildToSVGContainer(*this, WTFMove(newChild), beforeChild);
    96 }
    97 
    98 RenderPtr<RenderObject> RenderSVGContainer::takeChild(RenderTreeBuilder& builder, RenderObject& child)
    99 {
    100     SVGResourcesCache::clientWillBeRemovedFromTree(child);
    101     return RenderSVGModelObject::takeChild(builder, child);
    10296}
    10397
  • trunk/Source/WebCore/rendering/svg/RenderSVGContainer.h

    r227977 r228429  
    5050
    5151    void addChild(RenderTreeBuilder&, RenderPtr<RenderObject> child, RenderObject* beforeChild = 0) final;
    52     RenderPtr<RenderObject> takeChild(RenderTreeBuilder&, RenderObject&) final;
    5352    void addFocusRingRects(Vector<LayoutRect>&, const LayoutPoint& additionalOffset, const RenderLayerModelObject* paintContainer = 0) final;
    5453
  • trunk/Source/WebCore/rendering/svg/RenderSVGInline.cpp

    r228337 r228429  
    129129}
    130130
    131 RenderPtr<RenderObject> RenderSVGInline::takeChild(RenderTreeBuilder& builder, RenderObject& child)
    132 {
    133     SVGResourcesCache::clientWillBeRemovedFromTree(child);
    134 
    135     auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this);
    136     if (!textAncestor)
    137         return RenderInline::takeChild(builder, child);
    138 
    139     Vector<SVGTextLayoutAttributes*, 2> affectedAttributes;
    140     textAncestor->subtreeChildWillBeRemoved(&child, affectedAttributes);
    141     auto takenChild = RenderInline::takeChild(builder, child);
    142     textAncestor->subtreeChildWasRemoved(affectedAttributes);
    143     return takenChild;
    144131}
    145 
    146 }
  • trunk/Source/WebCore/rendering/svg/RenderSVGInline.h

    r228337 r228429  
    6363
    6464    void addChild(RenderTreeBuilder&, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr) final;
    65     RenderPtr<RenderObject> takeChild(RenderTreeBuilder&, RenderObject&) final;
    6665};
    6766
  • trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp

    r228337 r228429  
    309309}
    310310
    311 RenderPtr<RenderObject> RenderSVGRoot::takeChild(RenderTreeBuilder& builder, RenderObject& child)
    312 {
    313     SVGResourcesCache::clientWillBeRemovedFromTree(child);
    314     return RenderReplaced::takeChild(builder, child);
    315 }
    316 
    317311// RenderBox methods will expect coordinates w/o any transforms in coordinates
    318312// relative to our borderBox origin.  This method gives us exactly that.
  • trunk/Source/WebCore/rendering/svg/RenderSVGRoot.h

    r228337 r228429  
    8484    void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
    8585    void addChild(RenderTreeBuilder&, RenderPtr<RenderObject> child, RenderObject* beforeChild = 0) override;
    86     RenderPtr<RenderObject> takeChild(RenderTreeBuilder&, RenderObject&) override;
    8786
    8887    const AffineTransform& localToParentTransform() const override;
  • trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp

    r228337 r228429  
    526526}
    527527
    528 RenderPtr<RenderObject> RenderSVGText::takeChild(RenderTreeBuilder& builder, RenderObject& child)
    529 {
    530     SVGResourcesCache::clientWillBeRemovedFromTree(child);
    531 
    532     Vector<SVGTextLayoutAttributes*, 2> affectedAttributes;
    533     subtreeChildWillBeRemoved(&child, affectedAttributes);
    534     auto takenChild = RenderSVGBlock::takeChild(builder, child);
    535     subtreeChildWasRemoved(affectedAttributes);
    536     return takenChild;
    537 }
    538 
    539528// Fix for <rdar://problem/8048875>. We should not render :first-line CSS Style
    540529// in a SVG text element context.
  • trunk/Source/WebCore/rendering/svg/RenderSVGText.h

    r228337 r228429  
    8585    const RenderObject* pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&) const override;
    8686    void addChild(RenderTreeBuilder&, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr) override;
    87     RenderPtr<RenderObject> takeChild(RenderTreeBuilder&, RenderObject&) override;
    8887    void willBeDestroyed(RenderTreeBuilder&) override;
    8988
  • trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp

    r228428 r228429  
    3434#include "RenderRubyBase.h"
    3535#include "RenderRubyRun.h"
     36#include "RenderSVGContainer.h"
     37#include "RenderSVGInline.h"
     38#include "RenderSVGRoot.h"
    3639#include "RenderTable.h"
    3740#include "RenderTableRow.h"
     
    210213        return takeChildFromRenderGrid(downcast<RenderGrid>(parent), child);
    211214
     215    if (is<RenderSVGText>(parent))
     216        return svgBuilder().takeChild(downcast<RenderSVGText>(parent), child);
     217
     218    if (is<RenderSVGInline>(parent))
     219        return svgBuilder().takeChild(downcast<RenderSVGInline>(parent), child);
     220
     221    if (is<RenderSVGContainer>(parent))
     222        return svgBuilder().takeChild(downcast<RenderSVGContainer>(parent), child);
     223
     224    if (is<RenderSVGRoot>(parent))
     225        return svgBuilder().takeChild(downcast<RenderSVGRoot>(parent), child);
     226
    212227    return parent.takeChild(*this, child);
    213228}
  • trunk/Source/WebCore/rendering/updating/RenderTreeBuilderSVG.cpp

    r226568 r228429  
    7373}
    7474
     75RenderPtr<RenderObject> RenderTreeBuilder::SVG::takeChild(RenderSVGText& parent, RenderObject& child)
     76{
     77    SVGResourcesCache::clientWillBeRemovedFromTree(child);
     78
     79    Vector<SVGTextLayoutAttributes*, 2> affectedAttributes;
     80    parent.subtreeChildWillBeRemoved(&child, affectedAttributes);
     81    auto takenChild = parent.RenderBlockFlow::takeChild(m_builder, child);
     82    parent.subtreeChildWasRemoved(affectedAttributes);
     83    return takenChild;
    7584}
     85
     86RenderPtr<RenderObject> RenderTreeBuilder::SVG::takeChild(RenderSVGInline& parent, RenderObject& child)
     87{
     88    SVGResourcesCache::clientWillBeRemovedFromTree(child);
     89
     90    auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(parent);
     91    if (!textAncestor)
     92        return parent.RenderElement::takeChild(m_builder, child);
     93
     94    Vector<SVGTextLayoutAttributes*, 2> affectedAttributes;
     95    textAncestor->subtreeChildWillBeRemoved(&child, affectedAttributes);
     96    auto takenChild = parent.RenderElement::takeChild(m_builder, child);
     97    textAncestor->subtreeChildWasRemoved(affectedAttributes);
     98    return takenChild;
     99}
     100
     101RenderPtr<RenderObject> RenderTreeBuilder::SVG::takeChild(RenderSVGContainer& parent, RenderObject& child)
     102{
     103    SVGResourcesCache::clientWillBeRemovedFromTree(child);
     104    return parent.RenderElement::takeChild(m_builder, child);
     105}
     106
     107RenderPtr<RenderObject> RenderTreeBuilder::SVG::takeChild(RenderSVGRoot& parent, RenderObject& child)
     108{
     109    SVGResourcesCache::clientWillBeRemovedFromTree(child);
     110    return parent.RenderElement::takeChild(m_builder, child);
     111}
     112
     113}
  • trunk/Source/WebCore/rendering/updating/RenderTreeBuilderSVG.h

    r226568 r228429  
    4444    void insertChild(RenderSVGText& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild);
    4545
     46    RenderPtr<RenderObject> takeChild(RenderSVGText& parent, RenderObject& child);
     47    RenderPtr<RenderObject> takeChild(RenderSVGInline& parent, RenderObject& child);
     48    RenderPtr<RenderObject> takeChild(RenderSVGContainer& parent, RenderObject& child);
     49    RenderPtr<RenderObject> takeChild(RenderSVGRoot& parent, RenderObject& child);
     50
    4651private:
    4752    RenderTreeBuilder& m_builder;
Note: See TracChangeset for help on using the changeset viewer.