⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 280906 in webkit


Ignore:
Timestamp:
Aug 11, 2021, 4:24:34 AM (5 years ago)
Author:
Adrian Perez de Castro
Message:

Merge r275126 - [RenderTreeBuilder] No need to update the counters when the renderer is moved internally
https://bugs.webkit.org/show_bug.cgi?id=223801
<rdar://75835208>

Reviewed by Ryosuke Niwa.

When the renderer re-parenting is initiated by an "internal move" (e.g. anonymous block parent is not needed anymore so all the descendants
are moved "one level" up), we don't need to re-compute the counters. Their state should not be any different after this re-parenting.

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attachToRenderElementInternal):
(WebCore::RenderTreeBuilder::move):

  • rendering/updating/RenderTreeBuilder.h:
Location:
releases/WebKitGTK/webkit-2.32/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • releases/WebKitGTK/webkit-2.32/Source/WebCore/ChangeLog

    r280905 r280906  
     12021-03-26  Zalan Bujtas  <zalan@apple.com>
     2
     3        [RenderTreeBuilder] No need to update the counters when the renderer is moved internally
     4        https://bugs.webkit.org/show_bug.cgi?id=223801
     5        <rdar://75835208>
     6
     7        Reviewed by Ryosuke Niwa.
     8
     9        When the renderer re-parenting is initiated by an "internal move" (e.g. anonymous block parent is not needed anymore so all the descendants
     10        are moved "one level" up), we don't need to re-compute the counters. Their state should not be any different after this re-parenting.
     11
     12        * rendering/updating/RenderTreeBuilder.cpp:
     13        (WebCore::RenderTreeBuilder::attachToRenderElementInternal):
     14        (WebCore::RenderTreeBuilder::move):
     15        * rendering/updating/RenderTreeBuilder.h:
     16
    1172021-03-23  Frédéric Wang  <fwang@igalia.com>
    218
  • releases/WebKitGTK/webkit-2.32/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp

    r280893 r280906  
    426426}
    427427
    428 void RenderTreeBuilder::attachToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
     428void RenderTreeBuilder::attachToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild, ReinsertAfterMove reinsertAfterMove)
    429429{
    430430    RELEASE_ASSERT_WITH_MESSAGE(!parent.view().frameView().layoutContext().layoutState(), "Layout must not mutate render tree");
     
    450450            multiColumnBuilder().multiColumnDescendantInserted(downcast<RenderMultiColumnFlow>(*fragmentedFlow), *newChild);
    451451
    452         if (is<RenderElement>(*newChild))
     452        // FIXME: needsStateReset could probably be used for multicolumn as well.
     453        auto needsStateReset = reinsertAfterMove == ReinsertAfterMove::No;
     454        if (needsStateReset && is<RenderElement>(*newChild))
    453455            RenderCounter::rendererSubtreeAttached(downcast<RenderElement>(*newChild));
    454456    }
     
    481483    } else {
    482484        auto childToMove = detachFromRenderElement(from, child);
    483         attachToRenderElementInternal(to, WTFMove(childToMove), beforeChild);
     485        attachToRenderElementInternal(to, WTFMove(childToMove), beforeChild, ReinsertAfterMove::Yes);
    484486    }
    485487}
  • releases/WebKitGTK/webkit-2.32/Source/WebCore/rendering/updating/RenderTreeBuilder.h

    r262743 r280906  
    7171    void attachToRenderGrid(RenderGrid& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
    7272    void attachToRenderElement(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
    73     void attachToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr);
     73    enum class ReinsertAfterMove { No, Yes };
     74    void attachToRenderElementInternal(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild = nullptr, ReinsertAfterMove = ReinsertAfterMove::No);
    7475
    7576    enum class WillBeDestroyed { No, Yes };
Note: See TracChangeset for help on using the changeset viewer.