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,
ItemPosition position,
LayoutUnit ascent,
LayoutUnit max_ascent,
bool is_wrap_reverse) {
bool is_wrap_reverse,
bool is_deprecated_webkit_box) {
switch (position) {
case ItemPosition::kLegacy:
case ItemPosition::kAuto:
......@@ -1248,8 +1249,10 @@ static LayoutUnit AlignmentOffset(LayoutUnit available_free_space,
break;
case ItemPosition::kFlexEnd:
return available_free_space;
case ItemPosition::kCenter:
return available_free_space / 2;
case ItemPosition::kCenter: {
const LayoutUnit result = (available_free_space / 2);
return is_deprecated_webkit_box ? result.ClampNegativeToZero() : result;
}
case ItemPosition::kBaseline:
// 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.
......@@ -1299,7 +1302,8 @@ LayoutUnit LayoutFlexibleBox::StaticCrossAxisPositionForPositionedChild(
available_space,
FlexLayoutAlgorithm::AlignmentForChild(StyleRef(), child.StyleRef()),
LayoutUnit(), LayoutUnit(),
StyleRef().FlexWrap() == EFlexWrap::kWrapReverse);
StyleRef().FlexWrap() == EFlexWrap::kWrapReverse,
StyleRef().IsDeprecatedWebkitBox());
}
LayoutUnit LayoutFlexibleBox::StaticInlinePositionForPositionedChild(
......@@ -1626,7 +1630,8 @@ void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) {
LayoutUnit available_space = flex_item.AvailableAlignmentSpace();
LayoutUnit offset = AlignmentOffset(
available_space, position, flex_item.MarginBoxAscent(), max_ascent,
StyleRef().FlexWrap() == EFlexWrap::kWrapReverse);
StyleRef().FlexWrap() == EFlexWrap::kWrapReverse,
StyleRef().IsDeprecatedWebkitBox());
AdjustAlignmentForChild(*flex_item.box, offset);
if (position == ItemPosition::kBaseline &&
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