Commit 35edc4e1 authored by Scott Violet's avatar Scott Violet Committed by Commit Bot

css-flexbox: Make flexbox clamp center alignment to zero for -webkit-box

This matches LayoutDeprecatedFlexibleBox, which uses
ClampToZero() in a couple of places.

BUG=993813
TEST=fast/deprecated-flexbox/002.html

Change-Id: Ib6a9abfbc50759fa7c819046ee4f173bb67ba06c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1809105
Commit-Queue: Scott Violet <sky@chromium.org>
Reviewed-by: default avatarChristian Biesinger <cbiesinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#698987}
parent bdd2b573
...@@ -1227,7 +1227,8 @@ static LayoutUnit AlignmentOffset(LayoutUnit available_free_space, ...@@ -1227,7 +1227,8 @@ static LayoutUnit AlignmentOffset(LayoutUnit available_free_space,
ItemPosition position, ItemPosition position,
LayoutUnit ascent, LayoutUnit ascent,
LayoutUnit max_ascent, LayoutUnit max_ascent,
bool is_wrap_reverse) { bool is_wrap_reverse,
bool is_deprecated_webkit_box) {
switch (position) { switch (position) {
case ItemPosition::kLegacy: case ItemPosition::kLegacy:
case ItemPosition::kAuto: case ItemPosition::kAuto:
...@@ -1248,8 +1249,10 @@ static LayoutUnit AlignmentOffset(LayoutUnit available_free_space, ...@@ -1248,8 +1249,10 @@ static LayoutUnit AlignmentOffset(LayoutUnit available_free_space,
break; break;
case ItemPosition::kFlexEnd: case ItemPosition::kFlexEnd:
return available_free_space; return available_free_space;
case ItemPosition::kCenter: case ItemPosition::kCenter: {
return available_free_space / 2; const LayoutUnit result = (available_free_space / 2);
return is_deprecated_webkit_box ? result.ClampNegativeToZero() : result;
}
case ItemPosition::kBaseline: case ItemPosition::kBaseline:
// FIXME: If we get here in columns, we want the use the descent, except // FIXME: If we get here in columns, we want the use the descent, except
// we currently can't get the ascent/descent of orthogonal children. // we currently can't get the ascent/descent of orthogonal children.
...@@ -1299,7 +1302,8 @@ LayoutUnit LayoutFlexibleBox::StaticCrossAxisPositionForPositionedChild( ...@@ -1299,7 +1302,8 @@ LayoutUnit LayoutFlexibleBox::StaticCrossAxisPositionForPositionedChild(
available_space, available_space,
FlexLayoutAlgorithm::AlignmentForChild(StyleRef(), child.StyleRef()), FlexLayoutAlgorithm::AlignmentForChild(StyleRef(), child.StyleRef()),
LayoutUnit(), LayoutUnit(), LayoutUnit(), LayoutUnit(),
StyleRef().FlexWrap() == EFlexWrap::kWrapReverse); StyleRef().FlexWrap() == EFlexWrap::kWrapReverse,
StyleRef().IsDeprecatedWebkitBox());
} }
LayoutUnit LayoutFlexibleBox::StaticInlinePositionForPositionedChild( LayoutUnit LayoutFlexibleBox::StaticInlinePositionForPositionedChild(
...@@ -1626,7 +1630,8 @@ void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) { ...@@ -1626,7 +1630,8 @@ void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) {
LayoutUnit available_space = flex_item.AvailableAlignmentSpace(); LayoutUnit available_space = flex_item.AvailableAlignmentSpace();
LayoutUnit offset = AlignmentOffset( LayoutUnit offset = AlignmentOffset(
available_space, position, flex_item.MarginBoxAscent(), max_ascent, available_space, position, flex_item.MarginBoxAscent(), max_ascent,
StyleRef().FlexWrap() == EFlexWrap::kWrapReverse); StyleRef().FlexWrap() == EFlexWrap::kWrapReverse,
StyleRef().IsDeprecatedWebkitBox());
AdjustAlignmentForChild(*flex_item.box, offset); AdjustAlignmentForChild(*flex_item.box, offset);
if (position == ItemPosition::kBaseline && if (position == ItemPosition::kBaseline &&
StyleRef().FlexWrap() == EFlexWrap::kWrapReverse) { StyleRef().FlexWrap() == EFlexWrap::kWrapReverse) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment