[webkit-changes] [WebKit/WebKit] bac664: [IFC] Use opaque InlineItem to compute out-of-flow...

Alan Baradlay noreply at github.com
Wed Aug 30 09:29:27 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bac664c02d19fd4e21715acbceeaafd191ef9c20
      https://github.com/WebKit/WebKit/commit/bac664c02d19fd4e21715acbceeaafd191ef9c20
  Author: Alan Baradlay <zalan at apple.com>
  Date:   2023-08-30 (Wed, 30 Aug 2023)

  Changed paths:
    M LayoutTests/compositing/repaint/move-backing-sharing-layer-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/repaint/move-backing-sharing-layer-expected.txt
    M Source/WebCore/layout/formattingContexts/flex/FlexLayout.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingGeometry.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingGeometry.h
    M Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLine.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBox.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBox.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp
    M Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp
    M Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.h
    M Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp

  Log Message:
  -----------
  [IFC] Use opaque InlineItem to compute out-of-flow static position
https://bugs.webkit.org/show_bug.cgi?id=260776

Reviewed by Antti Koivisto.

Let's replace existing out-of-flow handling with using opaque inline items instead.
1. Add out-of-flow content to the inline item list as opaque box and run regular inline layout.
2. Set static position as part of the inline display content building process where we iterate through the runs on the current line.
3. Since this is all part of _inflow_ layout, we don't need the dedicated _out_of_flow_ method on InlineFormattingContext anymore.
4. Remove existing logic where we compute the static position by looking at adjacent display box geometries.

* LayoutTests/compositing/repaint/move-backing-sharing-layer-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/repaint/move-backing-sharing-layer-expected.txt:
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::layoutOutOfFlowContent): Deleted.
(WebCore::Layout::InlineFormattingContext::computeStaticPositionForOutOfFlowContent): Deleted.
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h:
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingGeometry.cpp:
(WebCore::Layout::firstDisplayBoxIndexForLayoutBox): Deleted.
(WebCore::Layout::lastDisplayBoxIndexForLayoutBox): Deleted.
(WebCore::Layout::previousDisplayBoxIndex): Deleted.
(WebCore::Layout::nextDisplayBoxIndex): Deleted.
(WebCore::Layout::InlineFormattingGeometry::contentLeftAfterLastLine const): Deleted.
(WebCore::Layout::InlineFormattingGeometry::staticPositionForOutOfFlowInlineLevelBox const): Deleted.
(WebCore::Layout::InlineFormattingGeometry::staticPositionForOutOfFlowBlockLevelBox const): Deleted.
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingGeometry.h:
* Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.cpp:
(WebCore::Layout::InlineItemsBuilder::build):
(WebCore::Layout::InlineItemsBuilder::collectInlineItems):
* Source/WebCore/layout/formattingContexts/inline/InlineItemsBuilder.h:
* Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp:
(WebCore::Layout::Line::removeOverflowingOurOfFlowContent):
* Source/WebCore/layout/formattingContexts/inline/InlineLine.h:
* Source/WebCore/layout/formattingContexts/inline/InlineLineBox.cpp:
(WebCore::Layout::LineBox::logicalRectForOpaqueBox const):
* Source/WebCore/layout/formattingContexts/inline/InlineLineBox.h:
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::placeInlineAndFloatContent):
* Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::processNonBidiContent):
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::layout):

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




More information about the webkit-changes mailing list