Skip to content

Commit 7b22cb5

Browse files
committed
[out-of-flow] ASSERT in LayoutIntegration::LineLayout::paint
https://bugs.webkit.org/show_bug.cgi?id=297724 rdar://157024791 Reviewed by Antti Koivisto. 1. out-of-flow boxes participate first in in-flow layout as if they were in-flow boxes where we compute their static position. This static position becomes their final position when inset (left, right, top, bottom) is auto. 2. as a second step, as we reach the out-of-flow box's containing block we run layout again and compute the final position (this might just be what we computed at #1 in case of auto inset) Now we mark the out-of-flow box dirty at #1 and expect #2 to clear the box by moving it to its final position. However in case of subtree layout where the layout root has an out-of-flow descendant while the containing block is an ancestor of the layout root, #2 will never happen (we bail out of layout before reaching the containing block). "setNeedsLayout" was added at 254969@main to mimic what legacy line layout did. However starting from 262470@main, we already move the box at #1 meaning that #2 does not need to happen if the box is statically positioned only. (If the out-of-flow box was not-statically positioned, subtree layout would not start "below" its containing block) * LayoutTests/TestExpectations: * Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp: (WebCore::LayoutIntegration::LineLayout::updateRenderTreePositions): Canonical link: https://commits.webkit.org/299021@main
1 parent af8bdbe commit 7b22cb5

File tree

2 files changed

+0
-6
lines changed

2 files changed

+0
-6
lines changed

LayoutTests/TestExpectations

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4591,9 +4591,6 @@ webkit.org/b/203451 imported/w3c/web-platform-tests/css/css-position/static-posi
45914591
webkit.org/b/203451 imported/w3c/web-platform-tests/css/css-position/static-position/vrl-rtl-ltr.tentative.html [ ImageOnlyFailure ]
45924592
webkit.org/b/203451 imported/w3c/web-platform-tests/css/css-position/static-position/vrl-rtl-rtl.html [ ImageOnlyFailure ]
45934593

4594-
webkit.org/b/254666 [ Debug ] imported/w3c/web-platform-tests/css/css-position/position-absolute-crash-chrome-005.html [ Skip ]
4595-
webkit.org/b/254666 [ Debug ] fast/block/positioning/static_out_of_flow_inside_layout_boundary.html [ Skip ]
4596-
45974594
webkit.org/b/203606 imported/w3c/web-platform-tests/css/css-display/display-change-object-iframe.html [ ImageOnlyFailure ]
45984595
webkit.org/b/203606 imported/w3c/web-platform-tests/css/css-display/display-flow-root-list-item-001.html [ ImageOnlyFailure ]
45994596
webkit.org/b/203606 imported/w3c/web-platform-tests/css/css-display/select-4-option-optgroup-display-none.html [ ImageOnlyFailure ]

Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -672,9 +672,6 @@ void LineLayout::updateRenderTreePositions(const Vector<LineAdjustment>& lineAdj
672672

673673
layer.setStaticBlockPosition(borderBoxLogicalTopLeft.y());
674674
layer.setStaticInlinePosition(borderBoxLogicalTopLeft.x());
675-
676-
if (!delta.isZero() && hasStaticInlinePositioning)
677-
renderer.setChildNeedsLayout(MarkOnlyThis);
678675
continue;
679676
}
680677
}

0 commit comments

Comments
 (0)