Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reland: "[layout] Ensure fragment tree consistency." #25631

Merged
merged 1 commit into from Sep 18, 2020

Conversation

chromium-wpt-export-bot
Copy link
Collaborator

@chromium-wpt-export-bot chromium-wpt-export-bot commented Sep 18, 2020

Original change description:

This patch ensures that we always have a "consistent" fragment-tree (or
rather a portion of a fragment-tree if we have legacy nodes).

Previously it was possible for a fragment-tree to become inconsistent
whenever we performed layout from a subtree root. Now when we layout
from a node like this, we rebuild the "spine" of the tree.

After this change we'll be able to remove most "PostLayout" calls,
except where they are used for building this "consistent" tree.

The first change had two issues.

  1. Cloning a part of the fragment tree which had its layout-objects
    removed from the tree. The fix for this specific issue is to stop
    re-building the spine of the tree when we encounter an object which
    needs layout.
  2. AbstractInlineTextBox holding a stale pointer to an NGFragmentItem.
    The fix for this specific issue is to call:
    DetachAbstractInlineTextBoxesIfNeeded on any NGFragmentItem(s) which
    have an associated LayoutText.

Bug: 1066616
Change-Id: Iade8d4c2e7ae9129863d3b295271da944ffec81e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2418978
Reviewed-by: Koji Ishii <kojii@chromium.org>
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#808453}

Copy link
Collaborator

@wpt-pr-bot wpt-pr-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The review process for this patch is being conducted in the Chromium project.

Original change description:
> This patch ensures that we always have a "consistent" fragment-tree (or
> rather a portion of a fragment-tree if we have legacy nodes).

> Previously it was possible for a fragment-tree to become inconsistent
> whenever we performed layout from a subtree root. Now when we layout
> from a node like this, we rebuild the "spine" of the tree.

> After this change we'll be able to remove most "PostLayout" calls,
> except where they are used for building this "consistent" tree.

The first change had two issues.
1) Cloning a part of the fragment tree which had its layout-objects
   removed from the tree. The fix for this specific issue is to stop
   re-building the spine of the tree when we encounter an object which
   needs layout.
2) AbstractInlineTextBox holding a stale pointer to an NGFragmentItem.
   The fix for this specific issue is to call:
   DetachAbstractInlineTextBoxesIfNeeded on any NGFragmentItem(s) which
   have an associated LayoutText.

Bug: 1066616
Change-Id: Iade8d4c2e7ae9129863d3b295271da944ffec81e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2418978
Reviewed-by: Koji Ishii <kojii@chromium.org>
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#808453}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants