Commit 25c4de5e authored by Ian Kilpatrick's avatar Ian Kilpatrick Committed by Commit Bot

[LayoutNG] Fix rtl flip for out-of-flow positioned objects in lineboxes.

This changes the rtl flip calculation. Before it was using the wrong
line_offset, and the static position of abs-pos were getting shifted
with the text-alignment (which shouldn't be occuring).

This using the appropriate line-offset, and corrects the rtl flip
calculation.

Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
Change-Id: I93a45e196682ee1a940fe81b4c43f67e19fe6bb3
Bug: 636993
Reviewed-on: https://chromium-review.googlesource.com/1153219Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578742}
parent e3c0a22b
...@@ -510,7 +510,6 @@ crbug.com/591099 fast/css-intrinsic-dimensions/fixed-height-stf-img-inline-child ...@@ -510,7 +510,6 @@ crbug.com/591099 fast/css-intrinsic-dimensions/fixed-height-stf-img-inline-child
crbug.com/591099 fast/css-intrinsic-dimensions/height-positioned.html [ Failure ] crbug.com/591099 fast/css-intrinsic-dimensions/height-positioned.html [ Failure ]
crbug.com/807708 fast/css-intrinsic-dimensions/width-avoid-floats.html [ Failure ] crbug.com/807708 fast/css-intrinsic-dimensions/width-avoid-floats.html [ Failure ]
crbug.com/591099 fast/css/absolute-inline-alignment-2.html [ Pass ] crbug.com/591099 fast/css/absolute-inline-alignment-2.html [ Pass ]
crbug.com/591099 fast/css/bug4860-absolute-block-child-does-not-inherit-alignment.html [ Failure ]
crbug.com/591099 fast/css/case-transform.html [ Failure ] crbug.com/591099 fast/css/case-transform.html [ Failure ]
crbug.com/591099 fast/css/focus-ring-continuations.html [ Failure ] crbug.com/591099 fast/css/focus-ring-continuations.html [ Failure ]
crbug.com/714962 fast/css/focus-ring-recursive-continuations.html [ Failure ] crbug.com/714962 fast/css/focus-ring-recursive-continuations.html [ Failure ]
...@@ -529,7 +528,6 @@ crbug.com/591099 fast/events/wheel/mainthread-touchpad-fling-latching.html [ Pas ...@@ -529,7 +528,6 @@ crbug.com/591099 fast/events/wheel/mainthread-touchpad-fling-latching.html [ Pas
crbug.com/591099 fast/events/wheel/wheel-scroll-latching-on-scrollbar.html [ Pass ] crbug.com/591099 fast/events/wheel/wheel-scroll-latching-on-scrollbar.html [ Pass ]
crbug.com/591099 fast/forms/text-control-intrinsic-widths.html [ Pass Timeout ] crbug.com/591099 fast/forms/text-control-intrinsic-widths.html [ Pass Timeout ]
crbug.com/591099 fast/inline-block/vertical-align-top-and-bottom-2.html [ Failure ] crbug.com/591099 fast/inline-block/vertical-align-top-and-bottom-2.html [ Failure ]
crbug.com/591099 fast/inline/absolute-positioned-block-in-centred-block.html [ Failure ]
crbug.com/714962 fast/inline/continuation-outlines-with-layers-2.html [ Failure ] crbug.com/714962 fast/inline/continuation-outlines-with-layers-2.html [ Failure ]
crbug.com/591099 fast/inline/continuation-outlines-with-layers.html [ Failure ] crbug.com/591099 fast/inline/continuation-outlines-with-layers.html [ Failure ]
crbug.com/591099 fast/inline/continuation-outlines.html [ Failure ] crbug.com/591099 fast/inline/continuation-outlines.html [ Failure ]
......
...@@ -452,20 +452,21 @@ void NGInlineLayoutAlgorithm::PlaceOutOfFlowObjects( ...@@ -452,20 +452,21 @@ void NGInlineLayoutAlgorithm::PlaceOutOfFlowObjects(
// If a block-level box appears in the middle of a line, move the static // If a block-level box appears in the middle of a line, move the static
// position to where the next block will be placed. // position to where the next block will be placed.
if (!box->StyleRef().IsOriginalDisplayInlineType()) { if (!box->StyleRef().IsOriginalDisplayInlineType()) {
LayoutUnit line_offset = line_info.BfcOffset().line_offset - LayoutUnit inline_offset = container_builder_.BfcLineOffset() -
ConstraintSpace().BfcOffset().line_offset; ConstraintSpace().BfcOffset().line_offset;
// Flip the inline_offset if we are in RTL.
if (IsRtl(line_direction)) { if (IsRtl(line_direction)) {
LayoutUnit container_inline_size = LayoutUnit container_inline_size =
ConstraintSpace().AvailableSize().inline_size; ConstraintSpace().AvailableSize().inline_size;
LayoutUnit line_end_offset = line_offset + line_info.AvailableWidth(); inline_offset = container_inline_size - inline_offset + inline_size;
line_offset = container_inline_size - line_end_offset;
} }
line_offset += line_info.TextIndent(); inline_offset += line_info.TextIndent();
// We need to subtract the line offset, in order to ignore // We need to subtract the line offset, in order to ignore
// floats and text-indent. // floats and text-indent.
static_offset.inline_offset = -line_offset; static_offset.inline_offset = -inline_offset;
if (child.offset.inline_offset && !line_box_metrics.IsEmpty()) if (child.offset.inline_offset && !line_box_metrics.IsEmpty())
static_offset.block_offset = line_box_metrics.LineHeight(); static_offset.block_offset = line_box_metrics.LineHeight();
......
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