Commit d742f067 authored by Christian Biesinger's avatar Christian Biesinger Committed by Commit Bot

[css-flexbox] Better handle percentages for min-height:auto

We only need to ignore percentages when the flex item has a
definite height; if it doesn't, percentages get treated as
height: auto which is the desired behavior. This fixes the two
regressions that were filed because of this.

Bug: 984606, 981481
Change-Id: I008d9ec316e4ff233eac03ead30f09ed85c4c120
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1705578
Auto-Submit: Christian Biesinger <cbiesinger@chromium.org>
Reviewed-by: default avatarEmil A Eklund <eae@chromium.org>
Commit-Queue: Christian Biesinger <cbiesinger@chromium.org>
Commit-Queue: Emil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#678379}
parent fd628860
...@@ -487,10 +487,11 @@ bool FlexLayoutAlgorithm::ShouldApplyMinSizeAutoForChild( ...@@ -487,10 +487,11 @@ bool FlexLayoutAlgorithm::ShouldApplyMinSizeAutoForChild(
// TODO(crbug.com/927066): We calculate an incorrect intrinsic logical height // TODO(crbug.com/927066): We calculate an incorrect intrinsic logical height
// when percentages are involved, so for now don't apply min-height: auto // when percentages are involved, so for now don't apply min-height: auto
// in such cases. // in such cases. (This is only a problem if the child has a definite height)
const LayoutBlock* child_block = DynamicTo<LayoutBlock>(child); const LayoutBlock* child_block = DynamicTo<LayoutBlock>(child);
if (IsColumnFlow() && child_block && if (IsColumnFlow() && child_block &&
child_block->HasPercentHeightDescendants()) child_block->HasPercentHeightDescendants() &&
child_block->HasDefiniteLogicalHeight())
return false; return false;
return !child.ShouldApplySizeContainment() && return !child.ShouldApplySizeContainment() &&
......
...@@ -2013,6 +2013,7 @@ crbug.com/249112 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/fle ...@@ -2013,6 +2013,7 @@ crbug.com/249112 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/fle
crbug.com/467127 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-008.xht [ Failure ] crbug.com/467127 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-008.xht [ Failure ]
crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-012.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-012.html [ Failure ]
crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-014.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-014.html [ Failure ]
crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-height-flex-items-015.html [ Failure ]
crbug.com/249112 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-width-flex-items-005.xht [ Failure ] crbug.com/249112 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-width-flex-items-005.xht [ Failure ]
crbug.com/249112 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-width-flex-items-007.xht [ Failure ] crbug.com/249112 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-minimum-width-flex-items-007.xht [ Failure ]
crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-order.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-flexbox/flex-order.html [ Failure ]
......
<!DOCTYPE html>
<title>CSS Flexbox: min-height: auto with flex items containing percentage-sized children</title>
<link rel="author" title="Google LLC" href="https://www.google.com/" />
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#min-size-auto" />
<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=981481" />
<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=984606" />
<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
<style>
.flexbox {
display: flex;
width: 100px;
flex-direction: column;
}
.item {
flex-basis: 0;
background: green;
}
.percentage {
height: 100%;
}
.fixed {
height: 100px;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div class="flexbox">
<div class="item">
<div class="percentage"></div>
<div class="fixed"></div>
</div>
</div>
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