Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 06ba90cd438a8284cc9b2ac583699e2a0c95c7e1
https://github.com/WebKit/WebKit/commit/06ba90cd438a8284cc9b2ac583699e2a0c95c7e1
Author: Alan Baradlay <[email protected]>
Date: 2026-05-19 (Tue, 19 May 2026)
Changed paths:
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-large-margin-bottom-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-large-margin-bottom-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-large-margin-bottom.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-intervening-float-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-intervening-float-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-intervening-float.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-multiple-floats-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-multiple-floats-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-multiple-floats.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-line-break-then-block-in-inline-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-line-break-then-block-in-inline-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-line-break-then-block-in-inline.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-text-then-block-in-inline-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-text-then-block-in-inline-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-text-then-block-in-inline.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-bottom-with-trailing-block-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-bottom-with-trailing-block-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-bottom-with-trailing-block.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-with-intervening-float-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-with-intervening-float-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-with-intervening-float.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-mb-collapses-with-positive-mt-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-mb-collapses-with-positive-mt-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-mb-collapses-with-positive-mt.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/inline-text-after-block-in-inline-with-intervening-float-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/inline-text-after-block-in-inline-with-intervening-float-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/inline-text-after-block-in-inline-with-intervening-float.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/three-block-in-inlines-cascading-margins-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/three-block-in-inlines-cascading-margins-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/three-block-in-inlines-cascading-margins.html
M
Source/WebCore/layout/formattingContexts/inline/InlineContentConstrainer.cpp
M
Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineLineTypes.h
M Source/WebCore/layout/formattingContexts/inline/IntrinsicWidthHandler.cpp
Log Message:
-----------
[block-in-inline] Broken layout with paragraph spacing on Apple Support page
https://bugs.webkit.org/show_bug.cgi?id=314978
rdar://177139092
Reviewed by Antti Koivisto.
<span>
<div style="margin-bottom: 50px;"></div>
</span>
<div style="float: left"></div>
<span>
<div></div>
</span>
The last <div> should sit at the first <div>'s bottom plus 50px (margin)
but we place it with an additional 50px offset.
On trunk:
1. Line 1 -> <span><div></div> -> 0px
1. line 2 -> </span><float><span> -> line advances by 50px (margin) to position
the float.
2. line 3 -> <div></div> -> we initialize it to line 2's bottom (correct) but
then
add the 50px margin offset again (incorrect) (note that float does not
consume the margin, only contentful inline content does)
After this patch, PreviousLine gets a new field hasContentfulInFlowContent
that tells us if the previous line consumed the margin (contentful inline
content) or had legacy reseed it (block-in-inline). LineBuilder::initialize
skips the eager advance when the previous line had neither -- the margin
is still pending in marginState but already baked into that line's top.
The first branch in InlineFormattingUtils::logicalTopForNextLine that
returned initialLogicalTopLeft.y() for non-contentful no-float lines is
redundant now and removed - skipping the eager advance for non-contentful
previous lines reaches the same outcome.
Tests:
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-large-margin-bottom-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-large-margin-bottom.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-intervening-float-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-intervening-float.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-multiple-floats-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-multiple-floats.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-line-break-then-block-in-inline-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-line-break-then-block-in-inline.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-text-then-block-in-inline-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-text-then-block-in-inline.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-bottom-with-trailing-block-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-bottom-with-trailing-block.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-with-intervening-float-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-with-intervening-float.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-mb-collapses-with-positive-mt-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-mb-collapses-with-positive-mt.html
imported/w3c/web-platform-tests/css/CSS2/box-display/inline-text-after-block-in-inline-with-intervening-float-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/inline-text-after-block-in-inline-with-intervening-float.html
imported/w3c/web-platform-tests/css/CSS2/box-display/three-block-in-inlines-cascading-margins-ref.html
imported/w3c/web-platform-tests/css/CSS2/box-display/three-block-in-inlines-cascading-margins.html
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-large-margin-bottom-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-large-margin-bottom-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-large-margin-bottom.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-intervening-float-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-intervening-float-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-intervening-float.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-multiple-floats-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-multiple-floats-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-collapses-through-multiple-floats.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-line-break-then-block-in-inline-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-line-break-then-block-in-inline-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-line-break-then-block-in-inline.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-text-then-block-in-inline-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-text-then-block-in-inline-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-margin-with-text-then-block-in-inline.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-bottom-with-trailing-block-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-bottom-with-trailing-block-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-bottom-with-trailing-block.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-with-intervening-float-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-with-intervening-float-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-margin-with-intervening-float.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-mb-collapses-with-positive-mt-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-mb-collapses-with-positive-mt-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/block-in-inline-negative-mb-collapses-with-positive-mt.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/inline-text-after-block-in-inline-with-intervening-float-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/inline-text-after-block-in-inline-with-intervening-float-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/inline-text-after-block-in-inline-with-intervening-float.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/three-block-in-inlines-cascading-margins-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/three-block-in-inlines-cascading-margins-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/CSS2/box-display/three-block-in-inlines-cascading-margins.html:
Added.
* Source/WebCore/layout/formattingContexts/inline/InlineContentConstrainer.cpp:
(WebCore::Layout::buildPreviousLine):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layout):
(WebCore::Layout::InlineFormattingContext::lineLayout):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp:
(WebCore::Layout::InlineFormattingUtils::logicalTopForNextLine const):
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::initialize):
* Source/WebCore/layout/formattingContexts/inline/InlineLineTypes.h:
* Source/WebCore/layout/formattingContexts/inline/IntrinsicWidthHandler.cpp:
(WebCore::Layout::IntrinsicWidthHandler::computedIntrinsicWidthForConstraint):
Canonical link: https://commits.webkit.org/313502@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications