[webkit-changes] [WebKit/WebKit] 5b298b: [IFC] Optimize out-of-flow positioned boxes in inl...

Antti Koivisto noreply at github.com
Sun Dec 10 12:03:20 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5b298bedb216083ca2c89eff8d0347fd2c2dcf03
      https://github.com/WebKit/WebKit/commit/5b298bedb216083ca2c89eff8d0347fd2c2dcf03
  Author: Antti Koivisto <antti at apple.com>
  Date:   2023-12-10 (Sun, 10 Dec 2023)

  Changed paths:
    M LayoutTests/compositing/repaint/move-backing-sharing-layer-expected.txt
    M LayoutTests/fast/repaint/absolute-position-change-containing-block-expected.txt
    M LayoutTests/fast/repaint/incorrect-repaint-when-container-changes-from-overflow-visible-to-hidden-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/repaint/move-backing-sharing-layer-expected.txt
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h
    M Source/WebCore/rendering/RenderBlockFlow.cpp
    M Source/WebCore/rendering/RenderBlockFlow.h

  Log Message:
  -----------
  [IFC] Optimize out-of-flow positioned boxes in inline layout
https://bugs.webkit.org/show_bug.cgi?id=266065
rdar://problem/119461223

Reviewed by Alan Baradlay.

We have nothing but out-of-flow boxes so we don't need to run the actual line layout.
Instead, we can just set the static positions to the point where all these boxes would end up.
This is a common case when using transforms to animate positioned boxes.

* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::shouldSwitchToLegacyOnInvalidation const): Deleted.

No need to switch to legacy in this case anymore.

* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:
* Source/WebCore/rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::invalidateLineLayoutPath):
(WebCore::hasSimpleStaticPositionForOutOfFlowChildren):
(WebCore::RenderBlockFlow::layoutModernLines):

Bail out before creating LineLayout.

(WebCore::RenderBlockFlow::setStaticPositionsForSimpleOutOfFlowContent):

We only need to reset the static positions in this case.

* Source/WebCore/rendering/RenderBlockFlow.h:

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




More information about the webkit-changes mailing list