Commit 048a97c9 authored by Christian Biesinger's avatar Christian Biesinger Committed by Commit Bot

[AspectRatio] Support abspos in legacy layout

R=ikilpatrick@chromium.org, mstensho@chromium.org

Bug: 1083010
Change-Id: I0fd5bd70b2a1ce8017d4499c525b382ed8066c24
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2403840
Commit-Queue: Christian Biesinger <cbiesinger@chromium.org>
Auto-Submit: Christian Biesinger <cbiesinger@chromium.org>
Reviewed-by: default avatarMorten Stenshorne <mstensho@chromium.org>
Cr-Commit-Position: refs/heads/master@{#806152}
parent 6e9065b2
......@@ -5361,7 +5361,12 @@ void LayoutBox::ComputePositionedLogicalWidthUsing(
DCHECK(width_size_type == kMinSize ||
width_size_type == kMainOrPreferredSize || !logical_width.IsAuto());
if (width_size_type == kMinSize && logical_width.IsAuto()) {
// TODO(cbiesinger): Implement for aspect-ratio.
logical_width_value = LayoutUnit();
} else if (width_size_type == kMainOrPreferredSize &&
logical_width.IsAuto() &&
ComputeLogicalWidthFromAspectRatio(&logical_width_value)) {
// We're good.
} else if (logical_width.IsIntrinsic()) {
logical_width_value = ComputeIntrinsicLogicalWidthUsing(
logical_width, container_logical_width) -
......@@ -5385,7 +5390,9 @@ void LayoutBox::ComputePositionedLogicalWidthUsing(
const LayoutUnit container_relative_logical_width =
ContainingBlockLogicalWidthForPositioned(container_block, false);
bool logical_width_is_auto = logical_width.IsAuto();
// If we are using aspect-ratio, the width is effectively not auto.
bool logical_width_is_auto =
logical_width.IsAuto() && !ShouldComputeLogicalWidthFromAspectRatio();
bool logical_left_is_auto = logical_left.IsAuto();
bool logical_right_is_auto = logical_right.IsAuto();
LayoutUnit& margin_logical_left_value = StyleRef().IsLeftToRightDirection()
......@@ -5787,8 +5794,10 @@ void LayoutBox::ComputePositionedLogicalHeightUsing(
DCHECK(height_size_type == kMinSize ||
height_size_type == kMainOrPreferredSize ||
!logical_height_length.IsAuto());
if (height_size_type == kMinSize && logical_height_length.IsAuto())
if (height_size_type == kMinSize && logical_height_length.IsAuto()) {
// TODO(cbiesinger): Implement for aspect-ratio.
logical_height_length = Length::Fixed(0);
}
// 'top' and 'bottom' cannot both be 'auto' because 'top would of been
// converted to the static position in computePositionedLogicalHeight()
......@@ -5802,7 +5811,9 @@ void LayoutBox::ComputePositionedLogicalHeightUsing(
LayoutUnit logical_top_value;
bool logical_height_is_auto = logical_height_length.IsAuto();
bool from_aspect_ratio = ShouldComputeLogicalHeightFromAspectRatio();
bool logical_height_is_auto =
logical_height_length.IsAuto() && !from_aspect_ratio;
bool logical_top_is_auto = logical_top.IsAuto();
bool logical_bottom_is_auto = logical_bottom.IsAuto();
......@@ -5812,13 +5823,22 @@ void LayoutBox::ComputePositionedLogicalHeightUsing(
resolved_logical_height = content_logical_height;
logical_height_is_auto = false;
} else {
if (logical_height_length.IsIntrinsic())
if (logical_height_length.IsIntrinsic()) {
resolved_logical_height = ComputeIntrinsicLogicalContentHeightUsing(
logical_height_length, content_logical_height, borders_plus_padding);
else
} else if (from_aspect_ratio) {
NGBoxStrut border_padding(BorderStart() + ComputedCSSPaddingStart(),
BorderEnd() + ComputedCSSPaddingEnd(),
BorderBefore() + ComputedCSSPaddingBefore(),
BorderAfter() + ComputedCSSPaddingAfter());
resolved_logical_height = BlockSizeFromAspectRatio(
border_padding, *StyleRef().LogicalAspectRatio(),
StyleRef().BoxSizing(), LogicalWidth());
} else {
resolved_logical_height = AdjustContentBoxLogicalHeightForBoxSizing(
ValueForLength(logical_height_length, container_logical_height));
}
}
if (!logical_top_is_auto && !logical_height_is_auto &&
!logical_bottom_is_auto) {
......
......@@ -118,16 +118,10 @@ crbug.com/591099 external/wpt/css/css-shapes/shape-outside/supported-shapes/inse
crbug.com/591099 external/wpt/css/css-shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-017.html [ Failure ]
### external/wpt/css/css-sizing/
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-001.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-003.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-004.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-005.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-006.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-007.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-008.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-009.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-010.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/abspos-011.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-024.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/block-aspect-ratio-028.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-009.tentative.html [ Failure ]
......
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