Commit 63293857 authored by Morten Stenshorne's avatar Morten Stenshorne Committed by Commit Bot

[LayoutNG] Correct auto margins and text-align:-webkit-foo

There were two problems:

1. We determined start/end inline margins from the direction of the
child, while we should use that of the containing block.

2. We applied alignment based on text-align:-webkit-{left,right} even if
there was an auto inline-end margin (so that we would override it).
Standard CSS declarations should take precedence over legacy HTML align
attributes (which is where text-align:-webkit-{left,center,right}
typically come from).

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: Ib0a22a6293b4b2b2668d09453db16b42ef9ff258
Reviewed-on: https://chromium-review.googlesource.com/922664
Commit-Queue: Morten Stenshorne <mstensho@chromium.org>
Reviewed-by: default avatarIan Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: default avatarChristian Biesinger <cbiesinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#537291}
parent 9eb4cb3d
...@@ -1057,8 +1057,6 @@ crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-applies-to-005.xht ...@@ -1057,8 +1057,6 @@ crbug.com/591099 external/wpt/css/CSS2/normal-flow/max-width-applies-to-005.xht
crbug.com/591099 external/wpt/css/CSS2/normal-flow/root-box-001.xht [ Failure ] crbug.com/591099 external/wpt/css/CSS2/normal-flow/root-box-001.xht [ Failure ]
crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-007.xht [ Failure Pass ] crbug.com/591099 external/wpt/css/CSS2/positioning/abspos-007.xht [ Failure Pass ]
crbug.com/591099 external/wpt/css/CSS2/positioning/positioning-float-001.xht [ Pass ] crbug.com/591099 external/wpt/css/CSS2/positioning/positioning-float-001.xht [ Pass ]
crbug.com/591099 external/wpt/css/CSS2/positioning/relpos-calcs-004.xht [ Failure ]
crbug.com/591099 external/wpt/css/CSS2/positioning/relpos-calcs-005.xht [ Failure ]
crbug.com/591099 external/wpt/css/CSS2/text/text-decoration-applies-to-015.xht [ Failure ] crbug.com/591099 external/wpt/css/CSS2/text/text-decoration-applies-to-015.xht [ Failure ]
crbug.com/714962 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html [ Failure ] crbug.com/714962 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html [ Failure ]
crbug.com/714962 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html [ Failure ] crbug.com/714962 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html [ Failure ]
...@@ -2064,7 +2062,6 @@ crbug.com/591099 external/wpt/html/infrastructure/urls/resolving-urls/query-enco ...@@ -2064,7 +2062,6 @@ crbug.com/591099 external/wpt/html/infrastructure/urls/resolving-urls/query-enco
crbug.com/591099 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html [ Timeout ] crbug.com/591099 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html [ Timeout ]
crbug.com/591099 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html [ Timeout ] crbug.com/591099 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html [ Timeout ]
crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/flow-content-0/dialog.html [ Failure ] crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/flow-content-0/dialog.html [ Failure ]
crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/flow-content-0/div-align.html [ Failure ]
crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/the-fieldset-element-0/legend-block-formatting-context.html [ Failure ] crbug.com/591099 external/wpt/html/rendering/non-replaced-elements/the-fieldset-element-0/legend-block-formatting-context.html [ Failure ]
crbug.com/591099 external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-auto.html [ Failure ] crbug.com/591099 external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-auto.html [ Failure ]
crbug.com/591099 external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-percentage.html [ Failure ] crbug.com/591099 external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-percentage.html [ Failure ]
...@@ -2386,7 +2383,6 @@ crbug.com/591099 fast/block/margin-collapse/clear-nested-float-more-than-one-pre ...@@ -2386,7 +2383,6 @@ crbug.com/591099 fast/block/margin-collapse/clear-nested-float-more-than-one-pre
crbug.com/591099 fast/block/margin-collapse/webkit-margin-collapse-container.html [ Failure ] crbug.com/591099 fast/block/margin-collapse/webkit-margin-collapse-container.html [ Failure ]
crbug.com/591099 fast/block/margin-collapse/webkit-margin-collapse-separate-position.html [ Failure ] crbug.com/591099 fast/block/margin-collapse/webkit-margin-collapse-separate-position.html [ Failure ]
crbug.com/591099 fast/block/margin-collapse/webkit-margin-collapse-siblings.html [ Failure ] crbug.com/591099 fast/block/margin-collapse/webkit-margin-collapse-siblings.html [ Failure ]
crbug.com/591099 fast/block/margin-left-margin-right-auto.html [ Failure ]
crbug.com/591099 fast/block/over-constrained-auto-margin.html [ Failure ] crbug.com/591099 fast/block/over-constrained-auto-margin.html [ Failure ]
crbug.com/591099 fast/block/positioning/056.html [ Failure ] crbug.com/591099 fast/block/positioning/056.html [ Failure ]
crbug.com/591099 fast/block/positioning/059.html [ Failure ] crbug.com/591099 fast/block/positioning/059.html [ Failure ]
...@@ -2895,8 +2891,6 @@ crbug.com/591099 fast/css/universal-hover-quirk.html [ Failure ] ...@@ -2895,8 +2891,6 @@ crbug.com/591099 fast/css/universal-hover-quirk.html [ Failure ]
crbug.com/591099 fast/css/unknown-pseudo-element-matching.html [ Failure ] crbug.com/591099 fast/css/unknown-pseudo-element-matching.html [ Failure ]
crbug.com/714962 fast/css/user-drag-none.html [ Pass ] crbug.com/714962 fast/css/user-drag-none.html [ Pass ]
crbug.com/591099 fast/css/vertical-align-lengths.html [ Failure ] crbug.com/591099 fast/css/vertical-align-lengths.html [ Failure ]
crbug.com/591099 fast/css/vertical-lr-bfc-auto-margins-beside-float.html [ Failure ]
crbug.com/591099 fast/css/vertical-lr-table-bfc-auto-margins-beside-float.html [ Failure ]
crbug.com/591099 fast/css/vertical-text-overflow-ellipsis-text-align-center.html [ Failure ] crbug.com/591099 fast/css/vertical-text-overflow-ellipsis-text-align-center.html [ Failure ]
crbug.com/591099 fast/css/vertical-text-overflow-ellipsis-text-align-justify.html [ Failure ] crbug.com/591099 fast/css/vertical-text-overflow-ellipsis-text-align-justify.html [ Failure ]
crbug.com/591099 fast/css/vertical-text-overflow-ellipsis-text-align-left.html [ Failure ] crbug.com/591099 fast/css/vertical-text-overflow-ellipsis-text-align-left.html [ Failure ]
...@@ -4790,7 +4784,6 @@ crbug.com/591099 fast/webgl/webgl-composite-modes-tabswitching.html [ Timeout ] ...@@ -4790,7 +4784,6 @@ crbug.com/591099 fast/webgl/webgl-composite-modes-tabswitching.html [ Timeout ]
crbug.com/591099 fast/workers/shared-worker-location.html [ Failure ] crbug.com/591099 fast/workers/shared-worker-location.html [ Failure ]
crbug.com/591099 fast/workers/worker-location.html [ Failure ] crbug.com/591099 fast/workers/worker-location.html [ Failure ]
crbug.com/591099 fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure ] crbug.com/591099 fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure ]
crbug.com/591099 fast/writing-mode/auto-margins-across-boundaries.html [ Failure ]
crbug.com/591099 fast/writing-mode/auto-sizing-orthogonal-flows.html [ Failure ] crbug.com/591099 fast/writing-mode/auto-sizing-orthogonal-flows.html [ Failure ]
crbug.com/714962 fast/writing-mode/background-vertical-lr.html [ Failure ] crbug.com/714962 fast/writing-mode/background-vertical-lr.html [ Failure ]
crbug.com/591099 fast/writing-mode/background-vertical-rl.html [ Failure ] crbug.com/591099 fast/writing-mode/background-vertical-rl.html [ Failure ]
......
...@@ -277,8 +277,6 @@ crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/replaced-in ...@@ -277,8 +277,6 @@ crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/replaced-in
crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-007.xht [ Failure ] crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-007.xht [ Failure ]
crbug.com/704961 [ Mac ] virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-027.xht [ Failure ] crbug.com/704961 [ Mac ] virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-027.xht [ Failure ]
crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-035.xht [ Failure ] crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-035.xht [ Failure ]
crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/relpos-calcs-004.xht [ Failure ]
crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/relpos-calcs-005.xht [ Failure ]
### virtual/layout_ng/fast/block/basic ### virtual/layout_ng/fast/block/basic
crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/basic/011.html [ Failure ] crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/basic/011.html [ Failure ]
...@@ -418,7 +416,6 @@ crbug.com/714962 [ Mac ] virtual/layout_ng/fast/block/float/trailing-float-with- ...@@ -418,7 +416,6 @@ crbug.com/714962 [ Mac ] virtual/layout_ng/fast/block/float/trailing-float-with-
### virtual/layout_ng/fast/writing-mode/ ### virtual/layout_ng/fast/writing-mode/
crbug.com/714962 virtual/layout_ng/fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure ] crbug.com/714962 virtual/layout_ng/fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure ]
crbug.com/714962 virtual/layout_ng/fast/writing-mode/auto-margins-across-boundaries.html [ Failure ]
crbug.com/714962 virtual/layout_ng/fast/writing-mode/auto-sizing-orthogonal-flows.html [ Failure ] crbug.com/714962 virtual/layout_ng/fast/writing-mode/auto-sizing-orthogonal-flows.html [ Failure ]
crbug.com/714962 virtual/layout_ng/fast/writing-mode/background-vertical-lr.html [ Failure ] crbug.com/714962 virtual/layout_ng/fast/writing-mode/background-vertical-lr.html [ Failure ]
crbug.com/714962 virtual/layout_ng/fast/writing-mode/background-vertical-rl.html [ Failure ] crbug.com/714962 virtual/layout_ng/fast/writing-mode/background-vertical-rl.html [ Failure ]
......
...@@ -560,19 +560,37 @@ void ApplyAutoMargins(const ComputedStyle& style, ...@@ -560,19 +560,37 @@ void ApplyAutoMargins(const ComputedStyle& style,
const LayoutUnit used_space = inline_size + margins->InlineSum(); const LayoutUnit used_space = inline_size + margins->InlineSum();
const LayoutUnit available_space = available_inline_size - used_space; const LayoutUnit available_space = available_inline_size - used_space;
if (available_space > LayoutUnit()) { if (available_space > LayoutUnit()) {
if ((style.MarginStart().IsAuto() && style.MarginEnd().IsAuto()) || bool start_auto = style.MarginStartUsing(containing_block_style).IsAuto();
(!style.MarginStart().IsAuto() && !style.MarginEnd().IsAuto() && bool end_auto = style.MarginEndUsing(containing_block_style).IsAuto();
containing_block_style.GetTextAlign() == ETextAlign::kWebkitCenter)) { enum EBlockAlignment { kStart, kCenter, kEnd };
EBlockAlignment alignment;
if (start_auto || end_auto) {
alignment = start_auto ? (end_auto ? kCenter : kEnd) : kStart;
} else {
// If none of the inline margins are auto, look for -webkit- text-align
// values (which are really about block alignment). These are typically
// mapped from the legacy "align" HTML attribute.
switch (containing_block_style.GetTextAlign()) {
case ETextAlign::kWebkitLeft:
alignment =
containing_block_style.IsLeftToRightDirection() ? kStart : kEnd;
break;
case ETextAlign::kWebkitRight:
alignment =
containing_block_style.IsLeftToRightDirection() ? kEnd : kStart;
break;
case ETextAlign::kWebkitCenter:
alignment = kCenter;
break;
default:
alignment = kStart;
break;
}
}
if (alignment == kCenter)
margins->inline_start += available_space / 2; margins->inline_start += available_space / 2;
} else if (style.MarginStart().IsAuto() || else if (alignment == kEnd)
(containing_block_style.IsLeftToRightDirection() &&
containing_block_style.GetTextAlign() ==
ETextAlign::kWebkitRight) ||
(!containing_block_style.IsLeftToRightDirection() &&
containing_block_style.GetTextAlign() ==
ETextAlign::kWebkitLeft)) {
margins->inline_start += available_space; margins->inline_start += available_space;
}
} }
margins->inline_end = margins->inline_end =
available_inline_size - inline_size - margins->inline_start; available_inline_size - inline_size - margins->inline_start;
......
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