Sync web-platform-tests PR 24840 into mozilla-central (this bug is closed when the sync is complete).
Revert "Use border box or layout overflow rect for layout shift tracking"
This reverts commit 0933392f84b4bb96466bd86c0e814d96f63ba137.
Reason for revert: ASAN/MSAN failures due to "use of uninitialized value"; see e.g. https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8873209606965810848/+/steps/browser_tests/0/logs/Deterministic_failure:_AllForms__x2f_FormStructureBrowserTest.DataDrivenHeuristics__x2f_148__status_FAILURE_/0
Original change's description:
Use border box or layout overflow rect for layout shift tracking
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
- 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.
Reviewed-by: Steve Kobes \<firstname.lastname@example.org>
Reviewed-by: Koji Ishii \<email@example.com>
Commit-Queue: Xianzhu Wang \<firstname.lastname@example.org>
Reviewed-by: Peter Kasting \<email@example.com>
Commit-Queue: Peter Kasting \<firstname.lastname@example.org>