Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: eddf81db04fd93e179d22ed600bb7fe92c4d20ad
      
https://github.com/WebKit/WebKit/commit/eddf81db04fd93e179d22ed600bb7fe92c4d20ad
  Author: Alan Baradlay <[email protected]>
  Date:   2026-08-04 (Tue, 04 Aug 2026)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/css2.1/t0805-c5519-brdr-r-02-e-expected.txt
    M LayoutTests/css2.1/t0805-c5521-brdr-l-02-e-expected.txt
    M LayoutTests/editing/execCommand/create-list-with-hr-expected.txt
    M 
LayoutTests/fast/css-generated-content/table-row-group-with-before-expected.txt
    M LayoutTests/fast/css-generated-content/table-row-with-before-expected.txt
    M LayoutTests/fast/css-generated-content/table-with-before-expected.txt
    M LayoutTests/fast/css/background-shorthand-invalid-url-expected.txt
    M LayoutTests/fast/lists/006-expected.txt
    M LayoutTests/fast/lists/list-marker-before-content-table-expected.txt
    A 
LayoutTests/fast/lists/list-marker-follows-dynamically-moved-line-expected.html
    A LayoutTests/fast/lists/list-marker-follows-dynamically-moved-line.html
    A LayoutTests/fast/lists/overlapping-nested-list-markers-rtl-expected.html
    A LayoutTests/fast/lists/overlapping-nested-list-markers-rtl.html
    M LayoutTests/fast/repaint/list-marker-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/li-with-overflow-hidden-change-list-style-position-001.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/list-and-writing-mode-001-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-after-empty-writing-mode-root-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-after-empty-writing-mode-root-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-after-empty-writing-mode-root.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-becomes-boundary-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-becomes-boundary-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-becomes-boundary.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-float-style-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-float-style-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-float-style.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inline-content-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inline-content-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inline-content.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-block-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-block-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-block.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-text-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-text-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-text.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-in-nested-block-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-in-nested-block-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-in-nested-block.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-moves-deeper-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-moves-deeper-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-moves-deeper.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-removed-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-removed-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-removed.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-from-inside-position-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-from-inside-position-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-from-inside-position.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-list-item-becomes-multicol-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-list-item-becomes-multicol-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-list-item-becomes-multicol.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-multicol-destroyed-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-multicol-destroyed-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-multicol-destroyed.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-nested-shared-container-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-nested-shared-container-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-nested-shared-container.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-rtl-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-rtl-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-rtl.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-skips-out-of-flow-first-child-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-skips-out-of-flow-first-child-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-skips-out-of-flow-first-child.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-hr-content-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-hr-content-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-hr-content.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-multicol/multicol-list-item-006.html
    M LayoutTests/platform/glib/css1/basic/contextual_selectors-expected.txt
    M LayoutTests/platform/glib/css1/box_properties/border_bottom-expected.txt
    M LayoutTests/platform/glib/css1/box_properties/border_left-expected.txt
    M 
LayoutTests/platform/glib/css1/box_properties/border_right_inline-expected.txt
    M LayoutTests/platform/glib/css1/box_properties/border_top-expected.txt
    M LayoutTests/platform/glib/css1/cascade/cascade_order-expected.txt
    M LayoutTests/platform/glib/css1/pseudo/anchor-expected.txt
    M LayoutTests/platform/glib/css2.1/t0805-c5518-brdr-t-01-e-expected.txt
    M LayoutTests/platform/glib/css2.1/t0805-c5519-brdr-r-02-e-expected.txt
    M LayoutTests/platform/glib/css2.1/t0805-c5520-brdr-b-01-e-expected.txt
    M LayoutTests/platform/glib/css2.1/t0805-c5521-brdr-l-02-e-expected.txt
    M 
LayoutTests/platform/glib/editing/execCommand/create-list-with-hr-expected.txt
    M 
LayoutTests/platform/glib/fast/css-generated-content/table-row-group-with-before-expected.txt
    M 
LayoutTests/platform/glib/fast/css-generated-content/table-row-with-before-expected.txt
    M 
LayoutTests/platform/glib/fast/css-generated-content/table-with-before-expected.txt
    M 
LayoutTests/platform/glib/fast/css/background-shorthand-invalid-url-expected.txt
    M LayoutTests/platform/glib/fast/css/empty-pseudo-class-expected.txt
    M LayoutTests/platform/glib/fast/css/first-child-pseudo-class-expected.txt
    M LayoutTests/platform/glib/fast/css/first-of-type-pseudo-class-expected.txt
    M LayoutTests/platform/glib/fast/css/last-child-pseudo-class-expected.txt
    M LayoutTests/platform/glib/fast/css/last-of-type-pseudo-class-expected.txt
    M LayoutTests/platform/glib/fast/css/only-child-pseudo-class-expected.txt
    M LayoutTests/platform/glib/fast/css/only-of-type-pseudo-class-expected.txt
    M LayoutTests/platform/glib/fast/doctypes/002-expected.txt
    M LayoutTests/platform/glib/fast/forms/form-hides-table-expected.txt
    M LayoutTests/platform/glib/fast/lists/001-expected.txt
    M LayoutTests/platform/glib/fast/lists/001-vertical-expected.txt
    M LayoutTests/platform/glib/fast/lists/006-expected.txt
    M LayoutTests/platform/glib/fast/lists/006-vertical-expected.txt
    M 
LayoutTests/platform/glib/fast/lists/ordered-list-with-no-ol-tag-expected.txt
    M LayoutTests/platform/glib/fast/repaint/list-marker-expected.txt
    M LayoutTests/platform/glib/tables/mozilla/marvin/backgr_index-expected.txt
    M LayoutTests/platform/gtk/fast/lists/dynamic-marker-crash-expected.txt
    M LayoutTests/platform/ios-18/fast/lists/dynamic-marker-crash-expected.txt
    M LayoutTests/platform/ios/css1/basic/contextual_selectors-expected.txt
    M LayoutTests/platform/ios/css1/box_properties/border_bottom-expected.txt
    M LayoutTests/platform/ios/css1/box_properties/border_left-expected.txt
    M 
LayoutTests/platform/ios/css1/box_properties/border_right_inline-expected.txt
    M LayoutTests/platform/ios/css1/box_properties/border_top-expected.txt
    M LayoutTests/platform/ios/css1/cascade/cascade_order-expected.txt
    M LayoutTests/platform/ios/css1/pseudo/anchor-expected.txt
    M LayoutTests/platform/ios/css2.1/t0805-c5518-brdr-t-01-e-expected.txt
    M LayoutTests/platform/ios/css2.1/t0805-c5520-brdr-b-01-e-expected.txt
    A 
LayoutTests/platform/ios/editing/execCommand/create-list-with-hr-expected.txt
    A 
LayoutTests/platform/ios/fast/css-generated-content/table-row-group-with-before-expected.txt
    A 
LayoutTests/platform/ios/fast/css-generated-content/table-row-with-before-expected.txt
    A 
LayoutTests/platform/ios/fast/css-generated-content/table-with-before-expected.txt
    M LayoutTests/platform/ios/fast/css/empty-pseudo-class-expected.txt
    M LayoutTests/platform/ios/fast/css/first-child-pseudo-class-expected.txt
    M LayoutTests/platform/ios/fast/css/first-of-type-pseudo-class-expected.txt
    M LayoutTests/platform/ios/fast/css/last-child-pseudo-class-expected.txt
    M LayoutTests/platform/ios/fast/css/last-of-type-pseudo-class-expected.txt
    M LayoutTests/platform/ios/fast/css/only-child-pseudo-class-expected.txt
    M LayoutTests/platform/ios/fast/css/only-of-type-pseudo-class-expected.txt
    M LayoutTests/platform/ios/fast/doctypes/002-expected.txt
    M LayoutTests/platform/ios/fast/forms/form-hides-table-expected.txt
    M LayoutTests/platform/ios/fast/lists/001-expected.txt
    M LayoutTests/platform/ios/fast/lists/001-vertical-expected.txt
    M LayoutTests/platform/ios/fast/lists/006-vertical-expected.txt
    M LayoutTests/platform/ios/fast/lists/dynamic-marker-crash-expected.txt
    M 
LayoutTests/platform/ios/fast/lists/ordered-list-with-no-ol-tag-expected.txt
    M LayoutTests/platform/ios/fast/text-autosizing/ios/lists-expected.txt
    R 
LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-lists/list-and-writing-mode-001-expected.txt
    M LayoutTests/platform/ios/tables/mozilla/marvin/backgr_index-expected.txt
    M 
LayoutTests/platform/mac-sequoia-wk2/fast/lists/dynamic-marker-crash-expected.txt
    M LayoutTests/platform/mac-wk2/fast/lists/dynamic-marker-crash-expected.txt
    M LayoutTests/platform/mac/css1/basic/contextual_selectors-expected.txt
    M LayoutTests/platform/mac/css1/box_properties/border_bottom-expected.txt
    M LayoutTests/platform/mac/css1/box_properties/border_left-expected.txt
    M 
LayoutTests/platform/mac/css1/box_properties/border_right_inline-expected.txt
    M LayoutTests/platform/mac/css1/box_properties/border_top-expected.txt
    M LayoutTests/platform/mac/css1/cascade/cascade_order-expected.txt
    M LayoutTests/platform/mac/css1/pseudo/anchor-expected.txt
    M LayoutTests/platform/mac/css2.1/t0805-c5518-brdr-t-01-e-expected.txt
    M LayoutTests/platform/mac/css2.1/t0805-c5520-brdr-b-01-e-expected.txt
    M LayoutTests/platform/mac/fast/css/empty-pseudo-class-expected.txt
    M LayoutTests/platform/mac/fast/css/first-child-pseudo-class-expected.txt
    M LayoutTests/platform/mac/fast/css/first-of-type-pseudo-class-expected.txt
    M LayoutTests/platform/mac/fast/css/last-child-pseudo-class-expected.txt
    M LayoutTests/platform/mac/fast/css/last-of-type-pseudo-class-expected.txt
    M LayoutTests/platform/mac/fast/css/only-child-pseudo-class-expected.txt
    M LayoutTests/platform/mac/fast/css/only-of-type-pseudo-class-expected.txt
    M LayoutTests/platform/mac/fast/doctypes/002-expected.txt
    M LayoutTests/platform/mac/fast/forms/form-hides-table-expected.txt
    M LayoutTests/platform/mac/fast/lists/001-expected.txt
    M LayoutTests/platform/mac/fast/lists/001-vertical-expected.txt
    M LayoutTests/platform/mac/fast/lists/006-vertical-expected.txt
    M LayoutTests/platform/mac/fast/lists/dynamic-marker-crash-expected.txt
    M 
LayoutTests/platform/mac/fast/lists/ordered-list-with-no-ol-tag-expected.txt
    M LayoutTests/platform/mac/fast/text-autosizing/ios/lists-expected.txt
    M LayoutTests/platform/mac/tables/mozilla/marvin/backgr_index-expected.txt
    M LayoutTests/platform/wpe/fast/lists/dynamic-marker-crash-expected.txt
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WebCore/layout/formattingContexts/inline/InlineLayoutState.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.h
    M Source/WebCore/layout/integration/LayoutIntegrationBoxTreeUpdater.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h
    M Source/WebCore/page/LocalFrameViewLayoutContext.cpp
    M Source/WebCore/page/LocalFrameViewLayoutContext.h
    M Source/WebCore/rendering/RenderBlock.cpp
    M Source/WebCore/rendering/RenderBox.cpp
    M Source/WebCore/rendering/RenderListItem.cpp
    M Source/WebCore/rendering/RenderListItem.h
    M Source/WebCore/rendering/RenderListMarker.cpp
    M Source/WebCore/rendering/RenderListMarker.h
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/RenderObject.h
    M Source/WebCore/rendering/updating/RenderTreeBuilder.cpp
    M Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp
    M Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp
    M Source/WebCore/rendering/updating/RenderTreeBuilderList.h
    M Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp

  Log Message:
  -----------
  Keep the outside list marker at the list item and position it after layout
https://bugs.webkit.org/show_bug.cgi?id=192980
<rdar://problem/159277763>

Reviewed by Antti Koivisto.

An outside list marker is currently reparented into whichever descendant holds
the list item's first line box, so an overflow, clip or transform on that
descendant makes the marker disappear or get clipped.

Keep the marker as the list item's first child instead, take it out of in-flow 
layout, and position it
after layout against the line it aligns with. Gated behind 
ListMarkerPositionedPostLayoutEnabled.

The line still has to make room for the marker, so line layout is handed its
layout bounds and grows the root inline box's layout bounds by them, which is
what a real marker inline level box would have contributed.

RenderListItem positions the marker once its in-flow content is laid out, since 
only then is every box between the line and
the list item in its final position, and adds the marker's overflow at that 
point.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/layout/formattingContexts/inline/InlineLayoutState.h:
(WebCore::Layout::InlineLayoutState::setExcludedMarkerLayoutBounds):
  The marker is no part of the inline content, so the room it needs
  on the line has to be handed in from the integration layer.

* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
(WebCore::Layout::LineBoxBuilder::build): Only the first formatted line is one 
a marker aligns with.
(WebCore::Layout::LineBoxBuilder::buildForRootInlineBoxOnly): A line with no 
inline content still aligns a marker, so it needs the same room.
(WebCore::Layout::LineBoxBuilder::stretchRootInlineBoxForExcludedMarkers const):
  The marker no longer contributes to the line as an inline level box,
  so without this the line would be too short and the marker would stick out of 
it.

* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.h:
* Source/WebCore/layout/integration/LayoutIntegrationBoxTreeUpdater.cpp:
(WebCore::LayoutIntegration::BoxTreeUpdater::buildTreeForInlineContent):
  Catch an excluded marker reaching the inline layout box tree here
  rather than as a null layout box further down.

* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::excludedMarkersForFirstFormattedLine):
  Has to run before layout so the marker layout bounds are in the layout state 
by the time the line box is built.
(WebCore::LayoutIntegration::LineLayout::setExcludedMarkerPositions):
  The line geometry the marker aligns with is only known once the display 
content is built,
  and it is not exposed outside line layout.

(WebCore::LayoutIntegration::LineLayout::layout): Collect before layout, 
position after the content is constructed.
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:
* Source/WebCore/page/LocalFrameViewLayoutContext.cpp:
(WebCore::ListItemExcludedMarkerScope::ListItemExcludedMarkerScope):
  A descendant list item lays out inside its ancestor's layout and the line it 
produces may be the ancestor's first formatted line too,
  so both markers have to be visible to whichever formatting context runs. 
Hence a stack.

(WebCore::ListItemExcludedMarkerScope::~ListItemExcludedMarkerScope):
* Source/WebCore/page/LocalFrameViewLayoutContext.h:
* Source/WebCore/rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintChild): RenderListItem paints the marker itself, so 
the normal child walk has to skip it.
(WebCore::RenderBlock::firstLineBaseline const):
(WebCore::RenderBlock::lastLineBaseline const):
  The marker is not in-flow content and must not supply the block's baseline,
  which it otherwise would as the first child.

* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::addOverflowFromInFlowChildren):
  The marker has no position yet at this point,
  so the list item adds its overflow after placing it.

* Source/WebCore/rendering/RenderListItem.cpp:
(WebCore::markerSearchBoxType):
(WebCore::excludedMarkerLogicalLeftOffsetFor):
  Line layout placed the marker as if it belonged to the block holding the line,
  so the distance back to the list item has to be added.

(WebCore::RenderListItem::updateValue):
(WebCore::RenderListItem::styleDidChange):
  The marker text changed, so the line that reserved room for it has to run 
again.

(WebCore::RenderListItem::excludedMarker const):
  A marker is only excluded while it is outside and actually our own child;
  everything else stays on the existing codepath, so the conditions live in one 
accessor.

(WebCore::RenderListItem::layoutBlock):
  Only once our in-flow content is laid out is every box between the line and 
us in its final position.

(WebCore::RenderListItem::layoutExcludedChildren):
  The marker is laid out out of in-flow order so the line can ask for its 
bounds,
  and a size change invalidates the line that reserved room for it.

(WebCore::RenderListItem::paintObject):
(WebCore::RenderListItem::placeExcludedMarker):
  Walks from the line back to us because the position line layout produced is 
relative
  to the block that holds the line.
(
WebCore::RenderListItem::firstFormattedLineRootFor):
  The single definition of which block the marker aligns with.
  Moved off the tree builder so the render tree and line layout answer the 
question the same way.

(WebCore::RenderListItem::excludedMarkersForContainer):
(WebCore::RenderListItem::firstFormattedLineRootFor):
* Source/WebCore/rendering/RenderListItem.h:
* Source/WebCore/rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::listItem const):
(WebCore::RenderListMarker::setExcludedPosition):
(WebCore::RenderListMarker::invalidateExcludedMarkerContainer):
  The container is held weakly and may already be gone while the tree is torn 
down,
  in which case dropping the stale position is all there is to do.

* Source/WebCore/rendering/RenderListMarker.h:
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::isExcludedMarker const):
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/rendering/updating/RenderTreeBuilder.cpp:
(WebCore::getInlineRun):
(WebCore::RenderTreeBuilder::createAnonymousWrappersForInlineContent):
* Source/WebCore/rendering/updating/RenderTreeBuilderBlock.cpp:
(WebCore::isExcludedMarker): attach() is the only code that decides between a 
direct child and an anonymous block wrapper.
(WebCore::RenderTreeBuilder::Block::attach):
  An excluded marker matches either way, so it stays a direct child
  of the list item whatever the other children are.

* Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp:
(WebCore::firstNonMarkerChild):
(WebCore::RenderTreeBuilder::List::List):
(WebCore::markerNeedsOwnLine):
(WebCore::parentCandidateForMarker):
(WebCore::RenderTreeBuilder::List::updateItemMarker):
  A list-style-position change moves the marker between two structurally 
different placements and
  attach() is not consulted when the parent happens to be unchanged, so rebuild 
rather than patch it in place.

(WebCore::findParentOfEmptyOrFirstLineBox): Deleted. Moved to 
RenderListItem::firstFormattedLineRootFor.
* Source/WebCore/rendering/updating/RenderTreeBuilderList.h:
* Source/WebCore/rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):
  The marker has to stay our child to be positioned after layout, and 
moveChildren() would have swept it into the flow thread.
* LayoutTests/TestExpectations:
* LayoutTests/css2.1/t0805-c5519-brdr-r-02-e-expected.txt:
* LayoutTests/css2.1/t0805-c5521-brdr-l-02-e-expected.txt:
* LayoutTests/editing/execCommand/create-list-with-hr-expected.txt:
* 
LayoutTests/fast/css-generated-content/table-row-group-with-before-expected.txt:
* LayoutTests/fast/css-generated-content/table-row-with-before-expected.txt:
* LayoutTests/fast/css-generated-content/table-with-before-expected.txt:
* LayoutTests/fast/css/background-shorthand-invalid-url-expected.txt:
* LayoutTests/fast/lists/006-expected.txt:
* LayoutTests/fast/lists/list-marker-before-content-table-expected.txt:
* 
LayoutTests/fast/lists/list-marker-follows-dynamically-moved-line-expected.html:
 Added.
* LayoutTests/fast/lists/list-marker-follows-dynamically-moved-line.html: Added.
* LayoutTests/fast/lists/overlapping-nested-list-markers-rtl-expected.html: 
Added.
* LayoutTests/fast/lists/overlapping-nested-list-markers-rtl.html: Added.
* LayoutTests/fast/repaint/list-marker-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/li-with-overflow-hidden-change-list-style-position-001.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/list-and-writing-mode-001-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-after-empty-writing-mode-root-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-after-empty-writing-mode-root-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-after-empty-writing-mode-root.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-becomes-boundary-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-becomes-boundary-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-becomes-boundary.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-float-style-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-float-style-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-float-style.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inline-content-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inline-content-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inline-content.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-block-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-block-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-block.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-text-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-text-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-by-inserted-text.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-in-nested-block-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-in-nested-block-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-changed-in-nested-block.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-moves-deeper-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-moves-deeper-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-moves-deeper.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-removed-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-removed-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-container-removed.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-from-inside-position-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-from-inside-position-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-from-inside-position.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-list-item-becomes-multicol-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-list-item-becomes-multicol-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-list-item-becomes-multicol.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-multicol-destroyed-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-multicol-destroyed-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-multicol-destroyed.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-nested-shared-container-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-nested-shared-container-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-nested-shared-container.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-rtl-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-rtl-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-rtl.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-skips-out-of-flow-first-child-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-skips-out-of-flow-first-child-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-skips-out-of-flow-first-child.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-hr-content-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-hr-content-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-lists/outside-marker-with-hr-content.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-multicol/multicol-list-item-006.html:
* LayoutTests/platform/glib/css1/basic/contextual_selectors-expected.txt:
* LayoutTests/platform/glib/css1/box_properties/border_bottom-expected.txt:
* LayoutTests/platform/glib/css1/box_properties/border_left-expected.txt:
* 
LayoutTests/platform/glib/css1/box_properties/border_right_inline-expected.txt:
* LayoutTests/platform/glib/css1/box_properties/border_top-expected.txt:
* LayoutTests/platform/glib/css1/cascade/cascade_order-expected.txt:
* LayoutTests/platform/glib/css1/pseudo/anchor-expected.txt:
* LayoutTests/platform/glib/css2.1/t0805-c5518-brdr-t-01-e-expected.txt:
* LayoutTests/platform/glib/css2.1/t0805-c5519-brdr-r-02-e-expected.txt:
* LayoutTests/platform/glib/css2.1/t0805-c5520-brdr-b-01-e-expected.txt:
* LayoutTests/platform/glib/css2.1/t0805-c5521-brdr-l-02-e-expected.txt:
* 
LayoutTests/platform/glib/editing/execCommand/create-list-with-hr-expected.txt:
* 
LayoutTests/platform/glib/fast/css-generated-content/table-row-group-with-before-expected.txt:
* 
LayoutTests/platform/glib/fast/css-generated-content/table-row-with-before-expected.txt:
* 
LayoutTests/platform/glib/fast/css-generated-content/table-with-before-expected.txt:
* 
LayoutTests/platform/glib/fast/css/background-shorthand-invalid-url-expected.txt:
* LayoutTests/platform/glib/fast/css/empty-pseudo-class-expected.txt:
* LayoutTests/platform/glib/fast/css/first-child-pseudo-class-expected.txt:
* LayoutTests/platform/glib/fast/css/first-of-type-pseudo-class-expected.txt:
* LayoutTests/platform/glib/fast/css/last-child-pseudo-class-expected.txt:
* LayoutTests/platform/glib/fast/css/last-of-type-pseudo-class-expected.txt:
* LayoutTests/platform/glib/fast/css/only-child-pseudo-class-expected.txt:
* LayoutTests/platform/glib/fast/css/only-of-type-pseudo-class-expected.txt:
* LayoutTests/platform/glib/fast/doctypes/002-expected.txt:
* LayoutTests/platform/glib/fast/forms/form-hides-table-expected.txt:
* LayoutTests/platform/glib/fast/lists/001-expected.txt:
* LayoutTests/platform/glib/fast/lists/001-vertical-expected.txt:
* LayoutTests/platform/glib/fast/lists/006-expected.txt:
* LayoutTests/platform/glib/fast/lists/006-vertical-expected.txt:
* LayoutTests/platform/glib/fast/lists/ordered-list-with-no-ol-tag-expected.txt:
* LayoutTests/platform/glib/fast/repaint/list-marker-expected.txt:
* LayoutTests/platform/glib/tables/mozilla/marvin/backgr_index-expected.txt:
* LayoutTests/platform/gtk/fast/lists/dynamic-marker-crash-expected.txt:
* LayoutTests/platform/ios-18/fast/lists/dynamic-marker-crash-expected.txt:
* LayoutTests/platform/ios/css1/basic/contextual_selectors-expected.txt:
* LayoutTests/platform/ios/css1/box_properties/border_bottom-expected.txt:
* LayoutTests/platform/ios/css1/box_properties/border_left-expected.txt:
* LayoutTests/platform/ios/css1/box_properties/border_right_inline-expected.txt:
* LayoutTests/platform/ios/css1/box_properties/border_top-expected.txt:
* LayoutTests/platform/ios/css1/cascade/cascade_order-expected.txt:
* LayoutTests/platform/ios/css1/pseudo/anchor-expected.txt:
* LayoutTests/platform/ios/css2.1/t0805-c5518-brdr-t-01-e-expected.txt:
* LayoutTests/platform/ios/css2.1/t0805-c5520-brdr-b-01-e-expected.txt:
* 
LayoutTests/platform/ios/editing/execCommand/create-list-with-hr-expected.txt: 
Copied from LayoutTests/editing/execCommand/create-list-with-hr-expected.txt.
* 
LayoutTests/platform/ios/fast/css-generated-content/table-row-group-with-before-expected.txt:
 Copied from 
LayoutTests/fast/css-generated-content/table-row-group-with-before-expected.txt.
* 
LayoutTests/platform/ios/fast/css-generated-content/table-row-with-before-expected.txt:
 Copied from 
LayoutTests/fast/css-generated-content/table-row-with-before-expected.txt.
* 
LayoutTests/platform/ios/fast/css-generated-content/table-with-before-expected.txt:
 Copied from 
LayoutTests/fast/css-generated-content/table-with-before-expected.txt.
* LayoutTests/platform/ios/fast/css/empty-pseudo-class-expected.txt:
* LayoutTests/platform/ios/fast/css/first-child-pseudo-class-expected.txt:
* LayoutTests/platform/ios/fast/css/first-of-type-pseudo-class-expected.txt:
* LayoutTests/platform/ios/fast/css/last-child-pseudo-class-expected.txt:
* LayoutTests/platform/ios/fast/css/last-of-type-pseudo-class-expected.txt:
* LayoutTests/platform/ios/fast/css/only-child-pseudo-class-expected.txt:
* LayoutTests/platform/ios/fast/css/only-of-type-pseudo-class-expected.txt:
* LayoutTests/platform/ios/fast/doctypes/002-expected.txt:
* LayoutTests/platform/ios/fast/forms/form-hides-table-expected.txt:
* LayoutTests/platform/ios/fast/lists/001-expected.txt:
* LayoutTests/platform/ios/fast/lists/001-vertical-expected.txt:
* LayoutTests/platform/ios/fast/lists/006-vertical-expected.txt:
* LayoutTests/platform/ios/fast/lists/dynamic-marker-crash-expected.txt:
* LayoutTests/platform/ios/fast/lists/ordered-list-with-no-ol-tag-expected.txt:
* LayoutTests/platform/ios/fast/text-autosizing/ios/lists-expected.txt:
* 
LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-lists/list-and-writing-mode-001-expected.txt:
 Removed.
* LayoutTests/platform/ios/tables/mozilla/marvin/backgr_index-expected.txt:
* 
LayoutTests/platform/mac-sequoia-wk2/fast/lists/dynamic-marker-crash-expected.txt:
* LayoutTests/platform/mac-wk2/fast/lists/dynamic-marker-crash-expected.txt:
* LayoutTests/platform/mac/css1/basic/contextual_selectors-expected.txt:
* LayoutTests/platform/mac/css1/box_properties/border_bottom-expected.txt:
* LayoutTests/platform/mac/css1/box_properties/border_left-expected.txt:
* LayoutTests/platform/mac/css1/box_properties/border_right_inline-expected.txt:
* LayoutTests/platform/mac/css1/box_properties/border_top-expected.txt:
* LayoutTests/platform/mac/css1/cascade/cascade_order-expected.txt:
* LayoutTests/platform/mac/css1/pseudo/anchor-expected.txt:
* LayoutTests/platform/mac/css2.1/t0805-c5518-brdr-t-01-e-expected.txt:
* LayoutTests/platform/mac/css2.1/t0805-c5520-brdr-b-01-e-expected.txt:
* LayoutTests/platform/mac/fast/css/empty-pseudo-class-expected.txt:
* LayoutTests/platform/mac/fast/css/first-child-pseudo-class-expected.txt:
* LayoutTests/platform/mac/fast/css/first-of-type-pseudo-class-expected.txt:
* LayoutTests/platform/mac/fast/css/last-child-pseudo-class-expected.txt:
* LayoutTests/platform/mac/fast/css/last-of-type-pseudo-class-expected.txt:
* LayoutTests/platform/mac/fast/css/only-child-pseudo-class-expected.txt:
* LayoutTests/platform/mac/fast/css/only-of-type-pseudo-class-expected.txt:
* LayoutTests/platform/mac/fast/doctypes/002-expected.txt:
* LayoutTests/platform/mac/fast/forms/form-hides-table-expected.txt:
* LayoutTests/platform/mac/fast/lists/001-expected.txt:
* LayoutTests/platform/mac/fast/lists/001-vertical-expected.txt:
* LayoutTests/platform/mac/fast/lists/006-vertical-expected.txt:
* LayoutTests/platform/mac/fast/lists/dynamic-marker-crash-expected.txt:
* LayoutTests/platform/mac/fast/lists/ordered-list-with-no-ol-tag-expected.txt:
* LayoutTests/platform/mac/fast/text-autosizing/ios/lists-expected.txt:
* LayoutTests/platform/mac/tables/mozilla/marvin/backgr_index-expected.txt:
* LayoutTests/platform/wpe/fast/lists/dynamic-marker-crash-expected.txt:

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



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

Reply via email to