Commit 8bc76a5b authored by Aleks Totic's avatar Aleks Totic Committed by Commit Bot

[LayoutNG] Store inline-cb in OOFPositionedDescendant

Part 2 of inline containing block patch.
Stores inline-cb on NGOutOfFlowPositionedDescendant

Bug: 740993
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: Ib3ed1dfe654f691f38a2ee0069177bc78fca51ce
Reviewed-on: https://chromium-review.googlesource.com/804994
Commit-Queue: Aleks Totic <atotic@chromium.org>
Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521576}
parent 104d947c
...@@ -228,7 +228,8 @@ void NGInlineLayoutAlgorithm::PlaceItems( ...@@ -228,7 +228,8 @@ void NGInlineLayoutAlgorithm::PlaceItems(
NGBlockNode node(ToLayoutBox(item.GetLayoutObject())); NGBlockNode node(ToLayoutBox(item.GetLayoutObject()));
container_builder_.AddInlineOutOfFlowChildCandidate( container_builder_.AddInlineOutOfFlowChildCandidate(
node, NGLogicalOffset(position, LayoutUnit()), node, NGLogicalOffset(position, LayoutUnit()),
line_info->BaseDirection()); line_info->BaseDirection(),
box_states_->ContainingLayoutObjectForAbsolutePositionObjects());
continue; continue;
} else { } else {
continue; continue;
...@@ -688,7 +689,7 @@ unsigned NGInlineLayoutAlgorithm::PositionLeadingItems( ...@@ -688,7 +689,7 @@ unsigned NGInlineLayoutAlgorithm::PositionLeadingItems(
item.Type() == NGInlineItem::kOutOfFlowPositioned) { item.Type() == NGInlineItem::kOutOfFlowPositioned) {
NGBlockNode node(ToLayoutBox(item.GetLayoutObject())); NGBlockNode node(ToLayoutBox(item.GetLayoutObject()));
container_builder_.AddInlineOutOfFlowChildCandidate( container_builder_.AddInlineOutOfFlowChildCandidate(
node, NGLogicalOffset(), Style().Direction()); node, NGLogicalOffset(), Style().Direction(), nullptr);
} }
// Abort if we've found something that makes this a non-empty inline. // Abort if we've found something that makes this a non-empty inline.
......
...@@ -585,6 +585,9 @@ void NGLineBreaker::HandleOpenTag(const NGInlineItem& item, ...@@ -585,6 +585,9 @@ void NGLineBreaker::HandleOpenTag(const NGInlineItem& item,
line_.should_create_line_box |= item_result->needs_box_when_empty; line_.should_create_line_box |= item_result->needs_box_when_empty;
} }
} }
item_result->needs_box_when_empty |=
style.CanContainAbsolutePositionObjects() ||
style.CanContainFixedPositionObjects();
SetCurrentStyle(style); SetCurrentStyle(style);
MoveToNextOf(item); MoveToNextOf(item);
} }
......
...@@ -125,12 +125,15 @@ NGContainerFragmentBuilder& ...@@ -125,12 +125,15 @@ NGContainerFragmentBuilder&
NGContainerFragmentBuilder::AddInlineOutOfFlowChildCandidate( NGContainerFragmentBuilder::AddInlineOutOfFlowChildCandidate(
NGBlockNode child, NGBlockNode child,
const NGLogicalOffset& child_offset, const NGLogicalOffset& child_offset,
TextDirection line_direction) { TextDirection line_direction,
LayoutObject* inline_container) {
DCHECK(child); DCHECK(child);
oof_positioned_candidates_.push_back(NGOutOfFlowPositionedCandidate( oof_positioned_candidates_.push_back(NGOutOfFlowPositionedCandidate(
NGOutOfFlowPositionedDescendant{ NGOutOfFlowPositionedDescendant(
child, NGStaticPosition::Create(GetWritingMode(), line_direction, child,
NGPhysicalOffset())}, NGStaticPosition::Create(GetWritingMode(), line_direction,
NGPhysicalOffset()),
inline_container),
child_offset, line_direction)); child_offset, line_direction));
child.SaveStaticOffsetForLegacy(child_offset); child.SaveStaticOffsetForLegacy(child_offset);
......
...@@ -98,7 +98,8 @@ class CORE_EXPORT NGContainerFragmentBuilder : public NGBaseFragmentBuilder { ...@@ -98,7 +98,8 @@ class CORE_EXPORT NGContainerFragmentBuilder : public NGBaseFragmentBuilder {
NGContainerFragmentBuilder& AddInlineOutOfFlowChildCandidate( NGContainerFragmentBuilder& AddInlineOutOfFlowChildCandidate(
NGBlockNode, NGBlockNode,
const NGLogicalOffset& child_line_offset, const NGLogicalOffset& child_line_offset,
TextDirection line_direction); TextDirection line_direction,
LayoutObject* inline_container);
NGContainerFragmentBuilder& AddOutOfFlowDescendant( NGContainerFragmentBuilder& AddOutOfFlowDescendant(
NGOutOfFlowPositionedDescendant); NGOutOfFlowPositionedDescendant);
......
...@@ -25,6 +25,14 @@ namespace blink { ...@@ -25,6 +25,14 @@ namespace blink {
struct CORE_EXPORT NGOutOfFlowPositionedDescendant { struct CORE_EXPORT NGOutOfFlowPositionedDescendant {
NGBlockNode node; NGBlockNode node;
NGStaticPosition static_position; NGStaticPosition static_position;
LayoutObject* inline_container;
NGOutOfFlowPositionedDescendant(
NGBlockNode node_param,
NGStaticPosition static_position_param,
LayoutObject* inline_container_param = nullptr)
: node(node_param),
static_position(static_position_param),
inline_container(inline_container_param) {}
}; };
} // namespace blink } // namespace blink
......
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