Use border box or layout overflow rect for layout shift tracking #24762
Conversation
The review process for this patch is being conducted in the Chromium project. |
f7d27ab
to
f3e8996
a2ff6a8
to
a815dca
This CL addresses the following issues of layout shift tracking: - Changed visual overflows triggered layout shift report (originally filed as crbug.com/1090763). - Descendant layout overflows were not included in ancestor's layout shift report. - Unnecessary descendant layout shift report. - Slow visual rect calculation for LayoutInline and LayoutText. It includes the following changes - Track LayoutBoxes and LayoutTexts only. - Track both old and new starting points and visual representations instead of using location of visual rects as starting points. - For a LayoutBox, the local visual representation is the layout overflow rect if the LayoutBox has layout overflow and doesn't clip overflow. Otherwise use the border box rect. - For a LayoutText, suppose its shift causes shift of all contents in containing block logically below the LayoutText, and use that part of visual representation of the containing block as the visual representation of the shift. - Map both local starting points and local visual representations to the initial containing block and viewport. This has the following benefits: - More accurate starting points and visual representations, conforming to the specs; - Better performance by * avoiding unnecessary layout shift reports of descendants * avoiding slow LayoutInline and LayoutText visual rect calculation. - sizeof(LayoutObject) is reduced by 16 bytes because now we use the previous geometry data in LayoutBoxes for paint invalidation. Bug: 1108622 Change-Id: I7ebb4e250e7ca2a03b4dadea50034e300e55ad84 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2319538 Reviewed-by: Steve Kobes <skobes@chromium.org> Reviewed-by: Koji Ishii <kojii@chromium.org> Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/heads/master@{#793806}
a815dca
to
e0858e8
0f1dddc
into
master
22 checks passed
22 checks passed
Azure Pipelines (affected tests without changes: Safari Technology Preview)
affected tests without changes: Safari Technology Preview succeeded
Details
Azure Pipelines (affected tests: Safari Technology Preview)
affected tests: Safari Technology Preview succeeded
Details
Azure Pipelines (wpt.fyi hook: safari-preview-affected-tests)
wpt.fyi hook: safari-preview-affected-tests succeeded
Details
Azure Pipelines (wpt.fyi hook: safari-preview-affected-tests-without-changes)
wpt.fyi hook: safari-preview-affected-tests-without-changes succeeded
Details
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
This CL addresses the following issues of layout shift tracking:
(originally filed as crbug.com/1090763).
shift report.
It includes the following changes
instead of using location of visual rects as starting points.
overflow rect if the LayoutBox has layout overflow and doesn't clip
overflow. Otherwise use the border box rect.
in containing block logically below the LayoutText, and use that
part of visual representation of the containing block as the visual
representation of the shift.
the initial containing block and viewport.
This has the following benefits:
to the specs;
previous geometry data in LayoutBoxes for paint invalidation.
Bug: 1108622
Change-Id: I7ebb4e250e7ca2a03b4dadea50034e300e55ad84
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2319538
Reviewed-by: Steve Kobes <skobes@chromium.org>
Reviewed-by: Koji Ishii <kojii@chromium.org>
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#793806}