Commit 781cef9e authored by Koji Ishii's avatar Koji Ishii Committed by Commit Bot

[FragmentItem] Fix LayoutInline::InvalidateDisplayItemClients

This patch fixes |LayoutInline::InvalidateDisplayItemClients|
to support changes to culled inline boxes in rr729656
<crrev.com/c/1774425>.

Also moves |NGInlineCursor::CurrentDisplayItemClient| to
|NGInlineCursorPosition::GetDisplayItemClient|.

Bug: 982194
Change-Id: Icc4ac6c3c27132473d235b9384c46a4f010b6932
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2016822Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#735354}
parent 9237ba41
......@@ -1761,13 +1761,14 @@ void LayoutInline::InvalidateDisplayItemClients(
}
if (IsInLayoutNGInlineFormattingContext()) {
if (!ShouldCreateBoxFragment())
if (!ShouldCreateBoxFragment() &&
!RuntimeEnabledFeatures::LayoutNGFragmentItemEnabled())
return;
NGInlineCursor cursor;
for (cursor.MoveTo(*this); cursor; cursor.MoveToNextForSameLayoutObject()) {
DCHECK_EQ(cursor.CurrentLayoutObject(), this);
paint_invalidator.InvalidateDisplayItemClient(
*cursor.CurrentDisplayItemClient(), invalidation_reason);
*cursor.Current().GetDisplayItemClient(), invalidation_reason);
}
return;
}
......
......@@ -2480,7 +2480,7 @@ void LayoutText::InvalidateDisplayItemClients(
NGInlineCursor cursor;
for (cursor.MoveTo(*this); cursor; cursor.MoveToNextForSameLayoutObject()) {
paint_invalidator.InvalidateDisplayItemClient(
*cursor.CurrentDisplayItemClient(), invalidation_reason);
*cursor.Current().GetDisplayItemClient(), invalidation_reason);
}
return;
}
......
......@@ -439,11 +439,11 @@ const NGPhysicalBoxFragment* NGInlineCursor::CurrentBoxFragment() const {
return nullptr;
}
const DisplayItemClient* NGInlineCursor::CurrentDisplayItemClient() const {
if (current_.paint_fragment_)
return current_.paint_fragment_;
if (current_.item_)
return current_.item_;
const DisplayItemClient* NGInlineCursorPosition::GetDisplayItemClient() const {
if (paint_fragment_)
return paint_fragment_;
if (item_)
return item_;
NOTREACHED();
return nullptr;
}
......
......@@ -61,6 +61,8 @@ class CORE_EXPORT NGInlineCursorPosition {
NGStyleVariant StyleVariant() const;
const DisplayItemClient* GetDisplayItemClient() const;
private:
const NGPaintFragment* paint_fragment_ = nullptr;
const NGFragmentItem* item_ = nullptr;
......@@ -208,7 +210,6 @@ class CORE_EXPORT NGInlineCursor {
// line.
TextDirection CurrentBaseDirection() const;
const NGPhysicalBoxFragment* CurrentBoxFragment() const;
const DisplayItemClient* CurrentDisplayItemClient() const;
const LayoutObject* CurrentLayoutObject() const;
LayoutObject* CurrentMutableLayoutObject() const;
Node* CurrentNode() const;
......
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