Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a54db1a4a770a13884c51c007184ca40cefee334
      
https://github.com/WebKit/WebKit/commit/a54db1a4a770a13884c51c007184ca40cefee334
  Author: Alan Baradlay <[email protected]>
  Date:   2025-11-05 (Wed, 05 Nov 2025)

  Changed paths:
    A LayoutTests/fast/inline/blocks-in-inline-layout2-expected.html
    A LayoutTests/fast/inline/blocks-in-inline-layout2.html
    M 
Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLine.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h
    M Source/WebCore/layout/formattingContexts/inline/LineLayoutResult.h
    M Source/WebCore/layout/formattingContexts/inline/RangeBasedLineBuilder.cpp
    M 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp

  Log Message:
  -----------
  [blocks-in-inline] Block level elements need special handling in LineBuilder
https://bugs.webkit.org/show_bug.cgi?id=301897

Reviewed by Antti Koivisto.

This change ensures that we break both before and after each block level 
element.

1. 'candidate content' now has a block field (similar to floats) and whenever
LineBuilder sees a block as candidate content, it either
  - closes the current line if there's any content processed already
  - or when the line is empty, adds puts the block on the line and closes it.
(i.e. we don't rely on InlineContentBreaker anymore to break after block as it 
overflows -see test case)
2. Line has appendBlock function now where we simply append the incoming block 
item to the run list.

Test: fast/inline/blocks-in-inline-layout2.html

* LayoutTests/fast/inline/blocks-in-inline-layout2-expected.html: Added.
* LayoutTests/fast/inline/blocks-in-inline-layout2.html: Added.
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::createDisplayContentForLineFromCachedContent):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp:
(WebCore::Layout::InlineFormattingUtils::logicalTopForNextLine const):
(WebCore::Layout::InlineFormattingUtils::nextWrapOpportunity const):
* Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp:
(WebCore::Layout::Line::appendText):
(WebCore::Layout::Line::appendBlock):
* Source/WebCore/layout/formattingContexts/inline/InlineLine.h:
* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::adjustInlineBoxHeightsForLineBoxContainIfApplicable):
(WebCore::Layout::LineBoxBuilder::computeLineBoxGeometry const):
(WebCore::Layout::LineBoxBuilder::adjustOutsideListMarkersPosition):
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::hasTrailingSoftWrapOpportunity):
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):
(WebCore::Layout::LineCandidate::reset):
(WebCore::Layout::LineBuilder::placeInlineAndFloatContent):
(WebCore::Layout::LineBuilder::candidateContentForLine):
(WebCore::Layout::LineBuilder::handleBlockContent):
(WebCore::Layout::LineBuilder::commitCandidateContent):
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h:
* Source/WebCore/layout/formattingContexts/inline/LineLayoutResult.h:
* Source/WebCore/layout/formattingContexts/inline/RangeBasedLineBuilder.cpp:
(WebCore::Layout::RangeBasedLineBuilder::layoutInlineContent):
* 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::build):
(WebCore::Layout::InlineDisplayContentBuilder::processNonBidiContent):
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
(WebCore::Layout::InlineDisplayContentBuilder::processRubyContent):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to