Changeset 226568 in webkit


Ignore:
Timestamp:
Jan 8, 2018 3:14:11 PM (6 years ago)
Author:
Alan Bujtas
Message:

[RenderTreeBuilder] Move SVG addChild logic to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181405
<rdar://problem/36360476>

Reviewed by Antti Koivisto.

This is about moving the code, no cleanup and/or normalization (unfortunately it also means
some temporary changes).

No change in functionality.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::addChild):

  • rendering/svg/RenderSVGInline.cpp:

(WebCore::RenderSVGInline::addChild):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::addChild):

  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::addChild):

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChildToSVGContainer):
(WebCore::RenderTreeBuilder::insertChildToSVGInline):
(WebCore::RenderTreeBuilder::insertChildToSVGRoot):
(WebCore::RenderTreeBuilder::insertChildToSVGText):

  • rendering/updating/RenderTreeBuilder.h:

(WebCore::RenderTreeBuilder::SVGBuilder):

  • rendering/updating/RenderTreeBuilderSVG.cpp: Added.

(WebCore::RenderTreeBuilder::SVG::SVG):
(WebCore::RenderTreeBuilder::SVG::insertChild):

  • rendering/updating/RenderTreeBuilderSVG.h: Added.
Location:
trunk/Source/WebCore
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r226542 r226568  
     12018-01-08  Zalan Bujtas  <zalan@apple.com>
     2
     3        [RenderTreeBuilder] Move SVG addChild logic to RenderTreeBuilder
     4        https://bugs.webkit.org/show_bug.cgi?id=181405
     5        <rdar://problem/36360476>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        This is about moving the code, no cleanup and/or normalization (unfortunately it also means
     10        some temporary changes). 
     11
     12        No change in functionality.
     13
     14        * Sources.txt:
     15        * WebCore.xcodeproj/project.pbxproj:
     16        * rendering/svg/RenderSVGContainer.cpp:
     17        (WebCore::RenderSVGContainer::addChild):
     18        * rendering/svg/RenderSVGInline.cpp:
     19        (WebCore::RenderSVGInline::addChild):
     20        * rendering/svg/RenderSVGRoot.cpp:
     21        (WebCore::RenderSVGRoot::addChild):
     22        * rendering/svg/RenderSVGText.cpp:
     23        (WebCore::RenderSVGText::addChild):
     24        * rendering/updating/RenderTreeBuilder.cpp:
     25        (WebCore::RenderTreeBuilder::RenderTreeBuilder):
     26        (WebCore::RenderTreeBuilder::insertChildToSVGContainer):
     27        (WebCore::RenderTreeBuilder::insertChildToSVGInline):
     28        (WebCore::RenderTreeBuilder::insertChildToSVGRoot):
     29        (WebCore::RenderTreeBuilder::insertChildToSVGText):
     30        * rendering/updating/RenderTreeBuilder.h:
     31        (WebCore::RenderTreeBuilder::SVGBuilder):
     32        * rendering/updating/RenderTreeBuilderSVG.cpp: Added.
     33        (WebCore::RenderTreeBuilder::SVG::SVG):
     34        (WebCore::RenderTreeBuilder::SVG::insertChild):
     35        * rendering/updating/RenderTreeBuilderSVG.h: Added.
     36
    1372018-01-08  John Wilander  <wilander@apple.com>
    238
  • trunk/Source/WebCore/Sources.txt

    r226537 r226568  
    19931993rendering/updating/RenderTreeBuilderMultiColumn.cpp
    19941994rendering/updating/RenderTreeBuilderRuby.cpp
     1995rendering/updating/RenderTreeBuilderSVG.cpp
    19951996rendering/updating/RenderTreeBuilderTable.cpp
    19961997rendering/updating/RenderTreePosition.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r226537 r226568  
    55965596                11C5F11D2003F69E0001AE60 /* RenderTreeBuilderBlockFlow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTreeBuilderBlockFlow.h; sourceTree = "<group>"; };
    55975597                11C5F11F2003F69F0001AE60 /* RenderTreeBuilderBlockFlow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTreeBuilderBlockFlow.cpp; sourceTree = "<group>"; };
     5598                11C5F12A2004231D0001AE60 /* RenderTreeBuilderSVG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTreeBuilderSVG.h; sourceTree = "<group>"; };
     5599                11C5F12C2004231E0001AE60 /* RenderTreeBuilderSVG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTreeBuilderSVG.cpp; sourceTree = "<group>"; };
    55985600                11E067EB1E62461300162D16 /* SimpleLineLayoutCoverage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimpleLineLayoutCoverage.cpp; sourceTree = "<group>"; };
    55995601                11E067ED1E6246E500162D16 /* SimpleLineLayoutCoverage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleLineLayoutCoverage.h; sourceTree = "<group>"; };
     
    2465024652                                119340871FEB355D00935F1E /* RenderTreeBuilderRuby.cpp */,
    2465124653                                119340881FEB355D00935F1E /* RenderTreeBuilderRuby.h */,
     24654                                11C5F12C2004231E0001AE60 /* RenderTreeBuilderSVG.cpp */,
     24655                                11C5F12A2004231D0001AE60 /* RenderTreeBuilderSVG.h */,
    2465224656                                119340761FE8B92300935F1E /* RenderTreeBuilderTable.cpp */,
    2465324657                                119340771FE8B92300935F1E /* RenderTreeBuilderTable.h */,
  • trunk/Source/WebCore/rendering/svg/RenderSVGContainer.cpp

    r226007 r226568  
    3131#include "RenderIterator.h"
    3232#include "RenderSVGResourceFilter.h"
     33#include "RenderTreeBuilder.h"
    3334#include "RenderView.h"
    3435#include "SVGRenderingContext.h"
     
    9293void RenderSVGContainer::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> newChild, RenderObject* beforeChild)
    9394{
    94     auto& child = *newChild;
    95     RenderSVGModelObject::addChild(builder, WTFMove(newChild), beforeChild);
    96     SVGResourcesCache::clientWasAddedToTree(child);
     95    builder.insertChildToSVGContainer(*this, WTFMove(newChild), beforeChild);
    9796}
    9897
  • trunk/Source/WebCore/rendering/svg/RenderSVGInline.cpp

    r226007 r226568  
    126126void RenderSVGInline::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> newChild, RenderObject* beforeChild)
    127127{
    128     auto& child = *newChild;
    129     RenderInline::addChild(builder, WTFMove(newChild), beforeChild);
    130     SVGResourcesCache::clientWasAddedToTree(child);
    131 
    132     if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this))
    133         textAncestor->subtreeChildWasAdded(&child);
     128    builder.insertChildToSVGInline(*this, WTFMove(newChild), beforeChild);
    134129}
    135130
  • trunk/Source/WebCore/rendering/svg/RenderSVGRoot.cpp

    r226007 r226568  
    3636#include "RenderSVGResourceContainer.h"
    3737#include "RenderSVGResourceFilter.h"
     38#include "RenderTreeBuilder.h"
    3839#include "RenderView.h"
    3940#include "SVGImage.h"
     
    305306void RenderSVGRoot::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> newChild, RenderObject* beforeChild)
    306307{
    307     auto& child = *newChild;
    308     RenderReplaced::addChild(builder, WTFMove(newChild), beforeChild);
    309     SVGResourcesCache::clientWasAddedToTree(child);
     308    builder.insertChildToSVGRoot(*this, WTFMove(newChild), beforeChild);
    310309}
    311310
  • trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp

    r226007 r226568  
    523523void RenderSVGText::addChild(RenderTreeBuilder& builder, RenderPtr<RenderObject> newChild, RenderObject* beforeChild)
    524524{
    525     auto& child = *newChild;
    526     RenderSVGBlock::addChild(builder, WTFMove(newChild), beforeChild);
    527 
    528     SVGResourcesCache::clientWasAddedToTree(child);
    529     subtreeChildWasAdded(&child);
     525    builder.insertChildToSVGText(*this, WTFMove(newChild), beforeChild);
    530526}
    531527
  • trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp

    r226537 r226568  
    4242#include "RenderTreeBuilderMultiColumn.h"
    4343#include "RenderTreeBuilderRuby.h"
     44#include "RenderTreeBuilderSVG.h"
    4445#include "RenderTreeBuilderTable.h"
    4546
     
    111112    , m_blockFlowBuilder(std::make_unique<BlockFlow>(*this))
    112113    , m_inlineBuilder(std::make_unique<Inline>(*this))
     114    , m_svgBuilder(std::make_unique<SVG>(*this))
    113115{
    114116    RELEASE_ASSERT(!s_current || &m_view != &s_current->m_view);
     
    286288}
    287289
     290void RenderTreeBuilder::insertChildToSVGContainer(RenderSVGContainer& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
     291{
     292    svgBuilder().insertChild(parent, WTFMove(child), beforeChild);
     293}
     294
     295void RenderTreeBuilder::insertChildToSVGInline(RenderSVGInline& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
     296{
     297    svgBuilder().insertChild(parent, WTFMove(child), beforeChild);
     298}
     299
     300void RenderTreeBuilder::insertChildToSVGRoot(RenderSVGRoot& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
     301{
     302    svgBuilder().insertChild(parent, WTFMove(child), beforeChild);
     303}
     304
     305void RenderTreeBuilder::insertChildToSVGText(RenderSVGText& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
     306{
     307    svgBuilder().insertChild(parent, WTFMove(child), beforeChild);
     308}
     309
    288310void RenderTreeBuilder::splitFlow(RenderInline& parent, RenderObject* beforeChild, RenderPtr<RenderBlock> newBlockBox, RenderPtr<RenderObject> child, RenderBoxModelObject* oldCont)
    289311{
  • trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h

    r226537 r226568  
    3131
    3232class RenderRubyRun;
     33class RenderSVGContainer;
     34class RenderSVGInline;
     35class RenderSVGRoot;
     36class RenderSVGText;
    3337class RenderTreeUpdater;
    3438
     
    5357    void insertChildToRenderInline(RenderInline& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
    5458    void insertChildToRenderInlineIgnoringContinuation(RenderInline& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
     59    void insertChildToSVGContainer(RenderSVGContainer& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
     60    void insertChildToSVGInline(RenderSVGInline& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
     61    void insertChildToSVGRoot(RenderSVGRoot& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
     62    void insertChildToSVGText(RenderSVGText& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr);
    5563
    5664    void makeChildrenNonInline(RenderBlock& parent, RenderObject* insertionPoint = nullptr);
     
    6876    class BlockFlow;
    6977    class Inline;
     78    class SVG;
    7079
    7180    FirstLetter& firstLetterBuilder() { return *m_firstLetterBuilder; }
     
    7887    BlockFlow& blockFlowBuilder() { return *m_blockFlowBuilder; }
    7988    Inline& inlineBuilder() { return *m_inlineBuilder; }
     89    SVG& svgBuilder() { return *m_svgBuilder; }
    8090
    8191    RenderView& m_view;
     
    93103    std::unique_ptr<BlockFlow> m_blockFlowBuilder;
    94104    std::unique_ptr<Inline> m_inlineBuilder;
     105    std::unique_ptr<SVG> m_svgBuilder;
    95106};
    96107
Note: See TracChangeset for help on using the changeset viewer.