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

Reply via email to