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( ...@@ -5361,7 +5361,12 @@ void LayoutBox::ComputePositionedLogicalWidthUsing(
DCHECK(width_size_type == kMinSize || DCHECK(width_size_type == kMinSize ||
width_size_type == kMainOrPreferredSize || !logical_width.IsAuto()); width_size_type == kMainOrPreferredSize || !logical_width.IsAuto());
if (width_size_type == kMinSize && logical_width.IsAuto()) { if (width_size_type == kMinSize && logical_width.IsAuto()) {
// TODO(cbiesinger): Implement for aspect-ratio.
logical_width_value = LayoutUnit(); 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()) { } else if (logical_width.IsIntrinsic()) {
logical_width_value = ComputeIntrinsicLogicalWidthUsing( logical_width_value = ComputeIntrinsicLogicalWidthUsing(
logical_width, container_logical_width) - logical_width, container_logical_width) -
...@@ -5385,7 +5390,9 @@ void LayoutBox::ComputePositionedLogicalWidthUsing( ...@@ -5385,7 +5390,9 @@ void LayoutBox::ComputePositionedLogicalWidthUsing(
const LayoutUnit container_relative_logical_width = const LayoutUnit container_relative_logical_width =
ContainingBlockLogicalWidthForPositioned(container_block, false); 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_left_is_auto = logical_left.IsAuto();
bool logical_right_is_auto = logical_right.IsAuto(); bool logical_right_is_auto = logical_right.IsAuto();
LayoutUnit& margin_logical_left_value = StyleRef().IsLeftToRightDirection() LayoutUnit& margin_logical_left_value = StyleRef().IsLeftToRightDirection()
...@@ -5787,8 +5794,10 @@ void LayoutBox::ComputePositionedLogicalHeightUsing( ...@@ -5787,8 +5794,10 @@ void LayoutBox::ComputePositionedLogicalHeightUsing(
DCHECK(height_size_type == kMinSize || DCHECK(height_size_type == kMinSize ||
height_size_type == kMainOrPreferredSize || height_size_type == kMainOrPreferredSize ||
!logical_height_length.IsAuto()); !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); logical_height_length = Length::Fixed(0);
}
// 'top' and 'bottom' cannot both be 'auto' because 'top would of been // 'top' and 'bottom' cannot both be 'auto' because 'top would of been
// converted to the static position in computePositionedLogicalHeight() // converted to the static position in computePositionedLogicalHeight()
...@@ -5802,7 +5811,9 @@ void LayoutBox::ComputePositionedLogicalHeightUsing( ...@@ -5802,7 +5811,9 @@ void LayoutBox::ComputePositionedLogicalHeightUsing(
LayoutUnit logical_top_value; 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_top_is_auto = logical_top.IsAuto();
bool logical_bottom_is_auto = logical_bottom.IsAuto(); bool logical_bottom_is_auto = logical_bottom.IsAuto();
...@@ -5812,12 +5823,21 @@ void LayoutBox::ComputePositionedLogicalHeightUsing( ...@@ -5812,12 +5823,21 @@ void LayoutBox::ComputePositionedLogicalHeightUsing(
resolved_logical_height = content_logical_height; resolved_logical_height = content_logical_height;
logical_height_is_auto = false; logical_height_is_auto = false;
} else { } else {
if (logical_height_length.IsIntrinsic()) if (logical_height_length.IsIntrinsic()) {
resolved_logical_height = ComputeIntrinsicLogicalContentHeightUsing( resolved_logical_height = ComputeIntrinsicLogicalContentHeightUsing(
logical_height_length, content_logical_height, borders_plus_padding); 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( resolved_logical_height = AdjustContentBoxLogicalHeightForBoxSizing(
ValueForLength(logical_height_length, container_logical_height)); ValueForLength(logical_height_length, container_logical_height));
}
} }
if (!logical_top_is_auto && !logical_height_is_auto && if (!logical_top_is_auto && !logical_height_is_auto &&
......
...@@ -118,16 +118,10 @@ crbug.com/591099 external/wpt/css/css-shapes/shape-outside/supported-shapes/inse ...@@ -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 ] crbug.com/591099 external/wpt/css/css-shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-017.html [ Failure ]
### external/wpt/css/css-sizing/ ### 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-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-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-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-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-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/block-aspect-ratio-028.tentative.html [ Failure ]
crbug.com/1045668 external/wpt/css/css-sizing/aspect-ratio/flex-aspect-ratio-009.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