Commit 0a8d6762 authored by Koji Ishii's avatar Koji Ishii Committed by Commit Bot

[FragmentItem] Fix block offset of InlineContainingBlockMap

Following r741744 <crrev.com/c/2048707>, this patch fixes
the block offset of a positioned object whose containing box
is an inline box in split inlines.

Bug: 982194
Change-Id: I3bcb9d8c6618b315abfddc0fe25284dd5a059a91
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2081718
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: default avatarIan Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#745981}
parent 2fc15b34
......@@ -79,6 +79,7 @@ void GatherInlineContainerFragmentsFromLinebox(
void GatherInlineContainerFragmentsFromItems(
const Vector<std::unique_ptr<NGFragmentItem>>& items,
const PhysicalOffset& box_offset,
NGBoxFragmentBuilder::InlineContainingBlockMap* inline_containing_block_map,
HashMap<const LayoutObject*, LineBoxPair>* containing_linebox_map) {
const NGPhysicalLineBoxFragment* linebox = nullptr;
......@@ -114,6 +115,7 @@ void GatherInlineContainerFragmentsFromItems(
!containing_lineboxes.first);
PhysicalRect fragment_rect = item->RectInContainerBlock();
fragment_rect.offset += box_offset;
if (containing_lineboxes.first == linebox) {
// Unite the start rect with the fragment's rect.
containing_block_geometry->start_fragment_union_rect.Unite(fragment_rect);
......@@ -420,7 +422,7 @@ void NGBoxFragmentBuilder::ComputeInlineContainerGeometry(
GatherInlineContainerFragmentsFromItems(
items_builder_->Items(GetWritingMode(), Direction(),
ToPhysicalSize(Size(), GetWritingMode())),
inline_containing_block_map, &containing_linebox_map);
PhysicalOffset(), inline_containing_block_map, &containing_linebox_map);
return;
}
......@@ -435,12 +437,17 @@ void NGBoxFragmentBuilder::ComputeInlineContainerGeometry(
if (!child.fragment->IsAnonymousBlock())
continue;
const auto* items = To<NGPhysicalBoxFragment>(*child.fragment).Items();
const auto& child_fragment = To<NGPhysicalBoxFragment>(*child.fragment);
const auto* items = child_fragment.Items();
if (!items)
continue;
GatherInlineContainerFragmentsFromItems(
items->Items(), inline_containing_block_map, &containing_linebox_map);
const PhysicalOffset child_offset = child.offset.ConvertToPhysical(
GetWritingMode(), Direction(), ToPhysicalSize(Size(), GetWritingMode()),
child_fragment.Size());
GatherInlineContainerFragmentsFromItems(items->Items(), child_offset,
inline_containing_block_map,
&containing_linebox_map);
}
}
......
......@@ -17,11 +17,9 @@ crbug.com/982194 external/wpt/css/CSS2/floats/floats-rule3-outside-left-002.xht
crbug.com/982194 external/wpt/css/CSS2/floats/floats-rule3-outside-right-002.xht [ Failure ]
crbug.com/982194 external/wpt/css/CSS2/floats/floats-rule7-outside-left-001.xht [ Failure ]
crbug.com/982194 external/wpt/css/CSS2/floats/floats-rule7-outside-right-001.xht [ Failure ]
crbug.com/982194 external/wpt/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html [ Failure ]
crbug.com/982194 external/wpt/css/css-contain/contain-layout-017.html [ Failure ]
crbug.com/982194 external/wpt/css/css-contain/contain-paint-021.html [ Failure ]
crbug.com/982194 external/wpt/css/css-overflow/overflow-inline-transform-relative.html [ Failure ]
crbug.com/982194 external/wpt/css/css-position/position-absolute-in-inline-002.html [ Failure ]
crbug.com/984438 external/wpt/css/css-scroll-snap/snap-at-user-scroll-end-manual.html [ Failure ]
crbug.com/982194 external/wpt/css/css-text-decor/text-decoration-color.html [ Failure ]
crbug.com/949909 external/wpt/css/css-text-decor/text-emphasis-color-001.xht [ Failure ]
......@@ -48,7 +46,6 @@ crbug.com/982194 external/wpt/css/css-writing-modes/inline-table-alignment-003.x
crbug.com/982194 external/wpt/css/css-writing-modes/inline-table-alignment-005.xht [ Failure ]
crbug.com/982194 external/wpt/css/cssom-view/offsetTopLeft-trailing-space-inline.html [ Pass ]
crbug.com/982194 external/wpt/css/csui/text-overflow-002.html [ Failure ]
crbug.com/982194 external/wpt/css/filter-effects/filtered-inline-is-container.html [ Failure ]
crbug.com/846656 external/wpt/css/selectors/focus-visible-002-manual.html [ Pass ]
crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/dependent-builtin.html [ Failure ]
crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/descriptor-fallback-invalid.html [ Failure ]
......@@ -434,7 +431,6 @@ crbug.com/982194 external/wpt/css/css-overflow/webkit-line-clamp-014.html [ Fail
crbug.com/982194 external/wpt/css/css-overflow/webkit-line-clamp-024.html [ Failure ]
crbug.com/982194 external/wpt/css/css-position/position-absolute-center-001.tentative.html [ Failure ]
crbug.com/982194 external/wpt/css/css-position/position-absolute-center-002.tentative.html [ Failure ]
crbug.com/982194 external/wpt/css/css-position/position-sticky-nested-inline.html [ Failure ]
crbug.com/982194 external/wpt/css/css-pseudo/first-letter-exclude-inline-child-marker.html [ Failure ]
crbug.com/982194 external/wpt/css/css-pseudo/first-letter-exclude-inline-marker.html [ Failure ]
crbug.com/982194 external/wpt/css/css-pseudo/first-line-with-before-after.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