Closed Bug 1656700 Opened 1 year ago Closed 1 year ago

[wpt-sync] Sync PR 24843 - Reland "Use border box or layout overflow rect for layout shift tracking"

Categories

(Testing :: web-platform-tests, task, P4)

task

Tracking

(firefox81 fixed)

RESOLVED FIXED
81 Branch
Tracking Status
firefox81 --- fixed

People

(Reporter: mozilla.org, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 24843 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/24843
Details from upstream follow.

Xianzhu Wang <wangxianzhu@chromium.org> wrote:

Reland "Use border box or layout overflow rect for layout shift tracking"

This reverts commit 491b5a9cbe75eb9cdde6e9e0b21e8246f441b086.

Reason for revert: TBD

Original change's description:

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
    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}

TBR=wangxianzhu@chromium.org,skobes@chromium.org,kojii@chromium.org

Change-Id: I590f2abc4a48ba65bdfe7a948ffce00b299f9e06
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1108622
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2333578
Reviewed-by: Peter Kasting \<pkasting@chromium.org>
Commit-Queue: Peter Kasting \<pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#793874}

Not skipping CQ checks because this is a reland.

Bug: 1108622
Change-Id: I253a24799b6d2a3af346d4f65e3889217064b035
Reviewed-on: https://chromium-review.googlesource.com/2333648
WPT-Export-Revision: 0d469d749942ee8ffe06a461ae038bc1d50b3ce7

CI Results

Ran 12 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 3 tests and 1 subtests

Status Summary

Firefox

OK : 3
FAIL: 3

Chrome

OK : 3
FAIL: 3

Safari

OK : 3
FAIL: 3

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

/layout-instability/outline.html: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-debug-geckoview, Gecko-android-em-7.0-x86_64-opt-geckoview, Gecko-linux1804-64-debug, Gecko-linux1804-64-opt, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows10-64-debug, Gecko-windows10-64-opt, Gecko-windows10-64-qr-debug, Gecko-windows10-64-qr-opt, Gecko-windows7-32-debug, Gecko-windows7-32-opt] (Chrome: OK, Safari: OK)
Outline.: FAIL (Chrome: FAIL, Safari: FAIL)
/layout-instability/inline-flow-shift.html: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-debug-geckoview, Gecko-android-em-7.0-x86_64-opt-geckoview, Gecko-linux1804-64-debug, Gecko-linux1804-64-opt, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows10-64-debug, Gecko-windows10-64-opt, Gecko-windows10-64-qr-debug, Gecko-windows10-64-qr-opt, Gecko-windows7-32-debug, Gecko-windows7-32-opt] (Chrome: OK, Safari: OK)
Inline flow movement.: FAIL (Chrome: FAIL, Safari: FAIL)
/layout-instability/inline-flow-shift-vertical-rl.html: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-debug-geckoview, Gecko-android-em-7.0-x86_64-opt-geckoview, Gecko-linux1804-64-debug, Gecko-linux1804-64-opt, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows10-64-debug, Gecko-windows10-64-opt, Gecko-windows10-64-qr-debug, Gecko-windows10-64-qr-opt, Gecko-windows7-32-debug, Gecko-windows7-32-opt] (Chrome: OK, Safari: OK)
Inline flow movement.: FAIL (Chrome: FAIL, Safari: FAIL)

Tests Disabled in Gecko Infrastructure

/layout-instability/outline.html: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-debug-geckoview, Gecko-android-em-7.0-x86_64-opt-geckoview, Gecko-linux1804-64-debug, Gecko-linux1804-64-opt, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows10-64-debug, Gecko-windows10-64-opt, Gecko-windows10-64-qr-debug, Gecko-windows10-64-qr-opt, Gecko-windows7-32-debug, Gecko-windows7-32-opt] (Chrome: OK, Safari: OK)
/layout-instability/inline-flow-shift.html: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-debug-geckoview, Gecko-android-em-7.0-x86_64-opt-geckoview, Gecko-linux1804-64-debug, Gecko-linux1804-64-opt, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows10-64-debug, Gecko-windows10-64-opt, Gecko-windows10-64-qr-debug, Gecko-windows10-64-qr-opt, Gecko-windows7-32-debug, Gecko-windows7-32-opt] (Chrome: OK, Safari: OK)
/layout-instability/inline-flow-shift-vertical-rl.html: OK [GitHub], SKIP [Gecko-android-em-7.0-x86_64-debug-geckoview, Gecko-android-em-7.0-x86_64-opt-geckoview, Gecko-linux1804-64-debug, Gecko-linux1804-64-opt, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows10-64-debug, Gecko-windows10-64-opt, Gecko-windows10-64-qr-debug, Gecko-windows10-64-qr-opt, Gecko-windows7-32-debug, Gecko-windows7-32-opt] (Chrome: OK, Safari: OK)

Pushed by wptsync@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/97bc14daef9e
[wpt PR 24843] - Reland "Use border box or layout overflow rect for layout shift tracking", a=testonly
Pushed by wptsync@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/5eee896e20b4
[wpt PR 24843] - Reland "Use border box or layout overflow rect for layout shift tracking", a=testonly
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 81 Branch
You need to log in before you can comment on or make changes to this bug.