Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4c9ed164dcfcefd7d01ba15fe89a9e267072a846
      
https://github.com/WebKit/WebKit/commit/4c9ed164dcfcefd7d01ba15fe89a9e267072a846
  Author: Elika Etemad <fantasai.b...@inkedblade.net>
  Date:   2023-12-09 (Sat, 09 Dec 2023)

  Changed paths:
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-001-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-001-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-001.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-002-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-002.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-003-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-003.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-004-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-004.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-005-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-005.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-006-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-006.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-007-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-007.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-008-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-008.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-009-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-009.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-010-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-010.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-011-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-011.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-010-aligned-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-010-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-010-unaligned-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-010.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-020-aligned-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-020-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-020-unaligned-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-020.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-010-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-010-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-010.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-020-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-overflow-000-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-overflow-000-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-overflow-000.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-simple-height-change-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-simple-height-change.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-table-cell-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-table-cell.html
    A 
LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-table-cell-expected.txt
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h
    M Source/WebCore/rendering/FloatingObjects.cpp
    M Source/WebCore/rendering/FloatingObjects.h
    M Source/WebCore/rendering/RenderBlockFlow.cpp
    M Source/WebCore/rendering/RenderBlockFlow.h
    M Source/WebCore/rendering/RenderElement.cpp
    M Source/WebCore/rendering/RenderLineBoxList.cpp
    M Source/WebCore/rendering/RenderLineBoxList.h
    M Source/WebCore/rendering/style/StyleContentAlignmentData.cpp
    M Source/WebCore/rendering/style/StyleContentAlignmentData.h

  Log Message:
  -----------
  Implement align-content on block containers
https://bugs.webkit.org/show_bug.cgi?id=266085
rdar://114740670

Reviewed by Alan Baradlay.

Implements 'align-content' on block containers by shifting the contents
of RenderBlockFlow if there is extra space after sizing. See
  https://www.w3.org/TR/css-align/#distribution-block

Alignment is not supported if the box is fragmented.

To support this, adds methods for shifting content in the block axis to:
- FloatingObjects
- legacy RenderLineBoxList
- modern LineLayout

Also implements the requirement that non-normal 'align-content' values
establish a new formatting context.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-001-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-001-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-001.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-002.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-003.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-004.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-005.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-006.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-007.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-008.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-009.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-010.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-011.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-010-aligned-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-010-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-010-unaligned-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-010.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-020-aligned-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-020-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-020-unaligned-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-content-020.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-010-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-010-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-010.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-020-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-020-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-break-overflow-020.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-overflow-000-expected.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-overflow-000-ref.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-overflow-000.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-block-simple-height-change.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-align/blocks/align-content-table-cell.html:
 Added.
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::shiftLinesBy): Implement shifting line 
boxes and their contents.
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h: Add 
API to shift line boxes and their contents.
* Source/WebCore/rendering/FloatingObjects.cpp:
(WebCore::FloatingObjects::shiftFloatsBy): Implement shifting floats while 
avoiding side-effects.
* Source/WebCore/rendering/FloatingObjects.h: Add APIs for shifting all floats 
by a fixed amount.
* Source/WebCore/rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutBlock): Shift for align-content, trigger 
abspos reflow if shifted.
(WebCore::RenderBlockFlow::shiftForAlignContent): Implement method to shift 
content per align-content.
* Source/WebCore/rendering/RenderBlockFlow.h: Add shiftForAlignContent()
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::createsNewFormattingContext const): Establish new 
formatting context.
* Source/WebCore/rendering/RenderLineBoxList.cpp:
(WebCore::RenderLineBoxList::shiftLinesBy): Implement method to shift lines by 
delta.
* Source/WebCore/rendering/RenderLineBoxList.h: Add API to shift lines by delta.
* Source/WebCore/rendering/style/StyleContentAlignmentData.cpp:
(WebCore::StyleContentAlignmentData::isStartward const): Add convenience method 
for 'start'-equivalent values.
(WebCore::StyleContentAlignmentData::isEndward const): Add convenience method 
for 'end'-equivalent values.
(WebCore::StyleContentAlignmentData::isCentered const): Add convenience method 
for 'center'-equivalent values.
* Source/WebCore/rendering/style/StyleContentAlignmentData.h:
(WebCore::StyleContentAlignmentData::isNormal const): Add convenience method to 
correctly check for 'normal'.

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to