Changeset 282078 in webkit
- Timestamp:
- Sep 7, 2021 4:11:18 AM (11 months ago)
- Location:
- trunk
- Files:
-
- 4 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/TestExpectations (modified) (3 diffs)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/RenderFlexibleBox.cpp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r282075 r282078 1 2021-09-01 Sergio Villar Senin <svillar@igalia.com> 2 3 [css-flexbox] Add support for left & right css-align-3 positional alignment properties 4 https://bugs.webkit.org/show_bug.cgi?id=229756 5 6 Reviewed by Javier Fernandez. 7 8 * TestExpectations: Removed 13 WPT tests that are now passing. 9 1 10 2021-09-07 Rob Buis <rbuis@igalia.com> 2 11 -
trunk/LayoutTests/TestExpectations
r282071 r282078 4140 4140 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-004.html [ ImageOnlyFailure ] 4141 4141 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-fallback-align-content-001.html [ ImageOnlyFailure ] 4142 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-001.html [ ImageOnlyFailure ]4143 4142 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-002.html [ ImageOnlyFailure ] 4144 4143 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-003.html [ ImageOnlyFailure ] … … 4147 4146 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-007.html [ ImageOnlyFailure ] 4148 4147 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-008.html [ ImageOnlyFailure ] 4149 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-rtl-001.html [ ImageOnlyFailure ]4150 4148 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-001.html [ ImageOnlyFailure ] 4151 4149 webkit.org/b/221472 imported/w3c/web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-002.html [ ImageOnlyFailure ] … … 4167 4165 webkit.org/b/221475 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-writing-mode-014.html [ ImageOnlyFailure ] 4168 4166 webkit.org/b/221475 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-writing-mode-015.html [ ImageOnlyFailure ] 4169 4170 # justify-content in flexbox.4171 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-justify-content-horiz-001a.xhtml [ ImageOnlyFailure ]4172 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-justify-content-horiz-001b.xhtml [ ImageOnlyFailure ]4173 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-justify-content-horiz-003.xhtml [ ImageOnlyFailure ]4174 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-justify-content-horiz-005.xhtml [ ImageOnlyFailure ]4175 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-justify-content-horiz-006.xhtml [ ImageOnlyFailure ]4176 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-justify-content-vert-006.xhtml [ ImageOnlyFailure ]4177 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-justify-content-wmvert-001.xhtml [ ImageOnlyFailure ]4178 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox_justifycontent-left-001.html [ ImageOnlyFailure ]4179 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox_justifycontent-left-002.html [ ImageOnlyFailure ]4180 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox_justifycontent-right-001.html [ ImageOnlyFailure ]4181 webkit.org/b/221477 imported/w3c/web-platform-tests/css/css-flexbox/flexbox_justifycontent-right-002.html [ ImageOnlyFailure ]4182 4167 4183 4168 webkit.org/b/221468 imported/w3c/web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-002.xhtml [ ImageOnlyFailure ] -
trunk/Source/WebCore/ChangeLog
r282075 r282078 1 2021-09-01 Sergio Villar Senin <svillar@igalia.com> 2 3 [css-flexbox] Add support for left & right css-align-3 positional alignment properties 4 https://bugs.webkit.org/show_bug.cgi?id=229756 5 6 Reviewed by Javier Fernandez. 7 8 Added support for Left and Right positional alignment properties from 9 https://drafts.csswg.org/css-align-3/#positional-values. These two properties 10 align the flex item to be flush with the alignment container's (the flex line) 11 line-left|right or physical left|right whichever is in the appropriate axis. Note that 12 contrary to start/end which change according to the text direction, left always refer 13 to where ltr text would start and right always refer to where rtl text would start. 14 15 The only caveat is that specs mention that in the case of having orthogonal start<->end and 16 left<->right axis (only happens in column flexboxes) then both left|right behave as start. 17 18 * rendering/RenderFlexibleBox.cpp: 19 (WebCore::initialJustifyContentOffset): 20 (WebCore::alignmentOffset): 21 (WebCore::RenderFlexibleBox::staticMainAxisPositionForPositionedChild): 22 (WebCore::RenderFlexibleBox::alignmentForChild const): 23 (WebCore::RenderFlexibleBox::layoutAndPlaceChildren): 24 (WebCore::RenderFlexibleBox::layoutColumnReverse): 25 1 26 2021-09-07 Rob Buis <rbuis@igalia.com> 2 27 -
trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp
r281840 r282078 38 38 #include "RenderLayer.h" 39 39 #include "RenderLayoutState.h" 40 #include "RenderStyleConstants.h" 40 41 #include "RenderView.h" 41 42 #include <limits> … … 1499 1500 } 1500 1501 1501 static LayoutUnit initialJustifyContentOffset(LayoutUnit availableFreeSpace, ContentPosition justifyContent, ContentDistribution justifyContentDistribution, unsigned numberOfChildren, bool isReversed) 1502 { 1502 static LayoutUnit initialJustifyContentOffset(const RenderStyle& style, LayoutUnit availableFreeSpace, unsigned numberOfChildren, bool isReversed) 1503 { 1504 ContentPosition justifyContent = style.resolvedJustifyContentPosition(contentAlignmentNormalBehavior()); 1505 ContentDistribution justifyContentDistribution = style.resolvedJustifyContentDistribution(contentAlignmentNormalBehavior()); 1506 1507 // First of all resolve Left and Right so we could convert it to their equivalent properties handled bellow. 1508 // If the property's axis is not parallel with either left<->right axis, this value behaves as start. Currently, 1509 // the only case where the property's axis is not parallel with either left<->right axis is in a column flexbox. 1510 // https: //www.w3.org/TR/css-align-3/#valdef-justify-content-left 1511 if ((justifyContent == ContentPosition::Left || justifyContent == ContentPosition::Right) && style.isColumnFlexDirection() && style.isHorizontalWritingMode()) 1512 justifyContent = ContentPosition::Start; 1513 1514 if (justifyContent == ContentPosition::Left) { 1515 if (style.isColumnFlexDirection() && style.isFlippedBlocksWritingMode()) 1516 justifyContent = ContentPosition::End; 1517 else 1518 justifyContent = style.isLeftToRightDirection() ? ContentPosition::Start : ContentPosition::End; 1519 } 1520 if (justifyContent == ContentPosition::Right) { 1521 if (style.isColumnFlexDirection() && !style.isFlippedLinesWritingMode()) 1522 justifyContent = ContentPosition::Start; 1523 else 1524 justifyContent = style.isLeftToRightDirection() ? ContentPosition::End : ContentPosition::Start; 1525 } 1526 ASSERT(justifyContent != ContentPosition::Left); 1527 ASSERT(justifyContent != ContentPosition::Right); 1528 1503 1529 if (justifyContent == ContentPosition::FlexEnd 1504 1530 || (justifyContent == ContentPosition::End && !isReversed) … … 1545 1571 case ItemPosition::Start: 1546 1572 case ItemPosition::End: 1573 case ItemPosition::Left: 1574 case ItemPosition::Right: 1547 1575 ASSERT_NOT_REACHED("%u alignmentForChild should have transformed this position value to something we handle below.", static_cast<uint8_t>(position)); 1548 1576 break; … … 1571 1599 case ItemPosition::SelfStart: 1572 1600 case ItemPosition::SelfEnd: 1573 case ItemPosition::Left:1574 case ItemPosition::Right:1575 1601 // FIXME: Implement last baseline. 1576 1602 break; … … 1590 1616 { 1591 1617 const LayoutUnit availableSpace = mainAxisContentExtent(contentLogicalHeight()) - mainAxisExtentForChild(child); 1592 1593 ContentPosition position = style().resolvedJustifyContentPosition(contentAlignmentNormalBehavior());1594 ContentDistribution distribution = style().resolvedJustifyContentDistribution(contentAlignmentNormalBehavior());1595 1618 auto isReverse = isColumnOrRowReverse(); 1596 LayoutUnit offset = initialJustifyContentOffset( availableSpace, position, distribution, 1, isReverse);1619 LayoutUnit offset = initialJustifyContentOffset(style(), availableSpace, 1, isReverse); 1597 1620 if (isReverse) 1598 1621 offset = availableSpace - offset; … … 1685 1708 ItemPosition align = child.style().resolvedAlignSelf(&style(), selfAlignmentNormalBehavior()).position(); 1686 1709 ASSERT(align != ItemPosition::Auto && align != ItemPosition::Normal); 1710 // Left and Right are only for justify-*. 1711 ASSERT(align != ItemPosition::Left && align != ItemPosition::Right); 1687 1712 1688 1713 if (align == ItemPosition::Baseline && !mainAxisIsChildInlineAxis(child)) … … 1826 1851 void RenderFlexibleBox::layoutAndPlaceChildren(LayoutUnit& crossAxisOffset, Vector<FlexItem>& children, LayoutUnit availableFreeSpace, bool relayoutChildren, Vector<LineContext>& lineContexts, LayoutUnit gapBetweenItems) 1827 1852 { 1828 ContentPosition position = style().resolvedJustifyContentPosition(contentAlignmentNormalBehavior());1829 ContentDistribution distribution = style().resolvedJustifyContentDistribution(contentAlignmentNormalBehavior());1830 1831 1853 LayoutUnit autoMarginOffset = autoMarginOffsetInMainAxis(children, availableFreeSpace); 1832 1854 LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart(); 1833 mainAxisOffset += initialJustifyContentOffset( availableFreeSpace, position, distribution, children.size(), isColumnOrRowReverse());1855 mainAxisOffset += initialJustifyContentOffset(style(), availableFreeSpace, children.size(), isColumnOrRowReverse()); 1834 1856 if (style().flexDirection() == FlexDirection::RowReverse) 1835 1857 mainAxisOffset += isHorizontalFlow() ? verticalScrollbarWidth() : horizontalScrollbarHeight(); … … 1838 1860 LayoutUnit maxAscent, maxDescent; // Used when align-items: baseline. 1839 1861 LayoutUnit maxChildCrossAxisExtent; 1862 ContentDistribution distribution = style().resolvedJustifyContentDistribution(contentAlignmentNormalBehavior()); 1840 1863 bool shouldFlipMainAxis = !isColumnFlow() && !isLeftToRightFlow(); 1841 1864 for (size_t i = 0; i < children.size(); ++i) { … … 1932 1955 void RenderFlexibleBox::layoutColumnReverse(const Vector<FlexItem>& children, LayoutUnit crossAxisOffset, LayoutUnit availableFreeSpace) 1933 1956 { 1934 ContentPosition position = style().resolvedJustifyContentPosition(contentAlignmentNormalBehavior());1935 ContentDistribution distribution = style().resolvedJustifyContentDistribution(contentAlignmentNormalBehavior());1936 1937 1957 // This is similar to the logic in layoutAndPlaceChildren, except we place 1938 1958 // the children starting from the end of the flexbox. We also don't need to 1939 1959 // layout anything since we're just moving the children to a new position. 1940 1960 LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwarePaddingEnd(); 1941 mainAxisOffset -= initialJustifyContentOffset( availableFreeSpace, position, distribution, children.size(), isColumnOrRowReverse());1961 mainAxisOffset -= initialJustifyContentOffset(style(), availableFreeSpace, children.size(), isColumnOrRowReverse()); 1942 1962 mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontalScrollbarHeight(); 1943 1963 1964 ContentDistribution distribution = style().resolvedJustifyContentDistribution(contentAlignmentNormalBehavior()); 1965 1944 1966 for (size_t i = 0; i < children.size(); ++i) { 1945 1967 auto& child = children[i].box;
Note: See TracChangeset
for help on using the changeset viewer.