[webkit-changes] [WebKit/WebKit] 217906: Update counters at the end of render tree update

Antti Koivisto noreply at github.com
Wed Apr 19 02:15:02 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 21790649ca108abfa081988c5c8de0ec8cec7c1e
      https://github.com/WebKit/WebKit/commit/21790649ca108abfa081988c5c8de0ec8cec7c1e
  Author: Antti Koivisto <antti at apple.com>
  Date:   2023-04-19 (Wed, 19 Apr 2023)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/platform/mac-ventura-wk2/imported/w3c/web-platform-tests/css/css-cascade/layer-counter-style-override-expected.txt
    M Source/WebCore/layout/integration/LayoutIntegrationBoxTree.cpp
    M Source/WebCore/rendering/CounterNode.cpp
    M Source/WebCore/rendering/LegacyLineLayout.cpp
    M Source/WebCore/rendering/RenderBlockFlow.cpp
    M Source/WebCore/rendering/RenderCounter.cpp
    M Source/WebCore/rendering/RenderCounter.h
    M Source/WebCore/rendering/RenderView.cpp
    M Source/WebCore/rendering/RenderView.h
    M Source/WebCore/rendering/line/BreakingContext.h
    M Source/WebCore/rendering/updating/RenderTreeBuilder.cpp
    M Source/WebCore/rendering/updating/RenderTreeUpdater.cpp
    M Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp
    M Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.h

  Log Message:
  -----------
  Update counters at the end of render tree update
https://bugs.webkit.org/show_bug.cgi?id=255589
rdar://108189324

Reviewed by Alan Baradlay.

Simplify counter updating by doing it in a single place at the end of render tree update.

* Source/WebCore/layout/integration/LayoutIntegrationBoxTree.cpp:
(WebCore::LayoutIntegration::BoxTree::createLayoutBox):

Remove layout-time update code from here and elsewhere.

* Source/WebCore/rendering/CounterNode.cpp:
(WebCore::CounterNode::resetRenderers):

Invalidate by adding the counter to a weak map.

* Source/WebCore/rendering/LegacyLineLayout.cpp:
(WebCore::dirtyLineBoxesForRenderer):
* Source/WebCore/rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutModernLines):
* Source/WebCore/rendering/RenderCounter.cpp:
(WebCore::RenderCounter::RenderCounter):
(WebCore::RenderCounter::willBeDestroyed):
(WebCore::RenderCounter::originalText const):

Just generate the text here.

(WebCore::RenderCounter::updateCounter):

Use setText instead of setRenderedText so we get correct layout invalidation for free.

(WebCore::RenderCounter::computePreferredLogicalWidths): Deleted.

Updating counters is no longer tied to preferred width updates.

* Source/WebCore/rendering/RenderCounter.h:
* Source/WebCore/rendering/RenderCounter.cpp:
(WebCore::RenderCounter::rendererRemovedFromTree): Deleted.
(WebCore::updateCounters): Deleted.
(WebCore::RenderCounter::rendererSubtreeAttached): Deleted.

No need for these tree-traversing move paths anymore. Counters get recomputed using the normal update paths.

* Source/WebCore/rendering/RenderView.cpp:
(WebCore::RenderView::addCounterNeedingUpdate):
(WebCore::RenderView::takeCountersNeedingUpdate):

Track counters that need updating. This replaces the use preferred logical width bit.

* Source/WebCore/rendering/RenderView.h:
* Source/WebCore/rendering/line/BreakingContext.h:
(WebCore::BreakingContext::handleText):
(WebCore::updateCounterIfNeeded): Deleted.
* Source/WebCore/rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::commit):
* Source/WebCore/rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::attachToRenderElementInternal):
(WebCore::RenderTreeBuilder::detachFromRenderElement):
* Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::RenderTreeUpdater::GeneratedContent::updateCounters):

Do The actual updating.

* Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.h:

Canonical link: https://commits.webkit.org/263127@main




More information about the webkit-changes mailing list