Closed Bug 2021726 Opened 2 months ago Closed 2 months ago

[wpt-sync] Sync PR 58344 - Fix hit-test z-offset computation for layers without CSS transforms in preserve-3d

Categories

(Core :: Web Painting, task, P4)

task

Tracking

()

RESOLVED FIXED
150 Branch
Tracking Status
firefox150 --- fixed

People

(Reporter: wpt-sync, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

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

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

Perry <perryuwang@gmail.com> wrote:

Fix hit-test z-offset computation for layers without CSS transforms in preserve-3d

When computing z-offset for depth ordering in a preserve-3d context,
IsHitCandidateForDepthOrder was called with local_transform_state, which
is derived from container_transform_state by applying the layer's local
2D paint offset. This caused two problems:

  1. For layers that are not direct children of the transform container
    element, CreateLocalTransformState calls Flatten(), which resets
    accumulated_transform_ to identity, causing ComputeZOffset to return
    0 instead of the correct z value.

  2. For direct children, the extra 2D translate operations added to
    local_transform_state introduce floating-point rounding differences
    compared to sibling layers that went through Flatten(), causing
    incorrect depth ordering between coplanar descendants.

The correct transform state for computing a layer's z-depth relative to
its containing flattening layer is container_transform_state itself,
since layers without their own CSS transforms are coplanar with the
transform container and their z-depth is fully determined by the
container's accumulated transform.

Bug: 464173566
Change-Id: Ib07c40e4239bacc6ff741408ca7d9fcf1332f91b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7442380
Reviewed-by: Philip Rogers \<pdr@chromium.org>
Commit-Queue: Perry \<perryuwang@gmail.com>
Cr-Commit-Position: refs/heads/main@{#1595858}

Component: web-platform-tests → Web Painting
Product: Testing → Core

CI Results

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

Total 909 tests

Status Summary

Firefox

OK : 1[GitHub] 104[Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview, Gecko-linux2404-64-debug, Gecko-linux2404-64-opt, Gecko-windows11-32-24h2-debug, Gecko-windows11-32-24h2-opt, Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt]
PASS : 1[GitHub] 22[Gecko-linux2204-64-wayland-debug, Gecko-linux2204-64-wayland-opt] 5267[Gecko-windows11-32-24h2-debug, Gecko-windows11-32-24h2-opt] 6035[Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview] 6040[Gecko-linux2404-64-debug, Gecko-linux2404-64-opt] 6041[Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt]
FAIL : 211[Gecko-windows11-32-24h2-debug, Gecko-windows11-32-24h2-opt] 220[Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt] 221[Gecko-linux2404-64-debug, Gecko-linux2404-64-opt] 226[Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview]

Chrome

TIMEOUT: 1
ERROR : 1

Safari

OK : 1
PASS : 1

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /css/css-transforms/3d-point-mapping-2-transforminterop.html [wpt.fyi]
    • More point mapping through 3D transform hierarchies, hittesting box12): FAIL [Gecko-linux2404-64-debug, Gecko-linux2404-64-opt], PASS [Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview, Gecko-windows11-32-24h2-debug, Gecko-windows11-32-24h2-opt, Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt]
  • /css/css-transforms/3d-point-mapping-origins.html [wpt.fyi]
    • Point mapping through 3D transforms with origins, hittesting top-right-blue): FAIL
    • Point mapping through 3D transforms with origins, hittesting bottom-left-medium-gray): FAIL [Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview], PASS [Gecko-linux2404-64-debug, Gecko-linux2404-64-opt, Gecko-windows11-32-24h2-debug, Gecko-windows11-32-24h2-opt, Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt]
    • Point mapping through 3D transforms with origins, hittesting bottom-left-blue): FAIL [Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview], PASS [Gecko-linux2404-64-debug, Gecko-linux2404-64-opt, Gecko-windows11-32-24h2-debug, Gecko-windows11-32-24h2-opt, Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt]
    • Point mapping through 3D transforms with origins, hittesting bottom-right-medium-gray): FAIL [Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview, Gecko-linux2404-64-debug, Gecko-linux2404-64-opt], PASS [Gecko-windows11-32-24h2-debug, Gecko-windows11-32-24h2-opt, Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt]
  • /css/css-transforms/transform-with-sign-function.html [wpt.fyi]
    • skew(calc(sign(1em - 1px) * 2deg), calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to skew(2deg, 2deg): FAIL
    • skewX(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to skewX(2deg): FAIL
    • skewY(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to skewY(2deg): FAIL
    • matrix(calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2)) should be used-value-equivalent to matrix(2, 2, 2, 2, 2, 2): FAIL
    • matrix3d(calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2),calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2)) should be used-value-equivalent to matrix3d(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2): FAIL
    • rotate(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotate(2deg): FAIL
    • rotateX(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotateX(2deg): FAIL
    • rotateY(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotateY(2deg): FAIL
    • rotateZ(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotateZ(2deg): FAIL
    • calc(sign(1em - 1px) * 2) calc(sign(1em - 1px) * 2) calc(sign(1em - 1px) * 2) should be used-value-equivalent to 2 2 2: FAIL
    • calc(sign(1em - 1px) * 2) calc(sign(1em - 1px) * 2) calc(sign(1em - 1px) * 2) calc(sign(1em - 1px) * 2deg) should be used-value-equivalent to 2 2 2 2deg: FAIL
  • /css/css-transforms/animation/rotate-interpolation-math-functions-tentative.html [wpt.fyi]
    • CSS Transitions: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (-1) should be [20deg]: FAIL
    • CSS Transitions: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0) should be [100deg]: FAIL
    • CSS Transitions: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0.125) should be [110deg]: FAIL
    • CSS Transitions: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0.875) should be [170deg]: FAIL
    • CSS Transitions: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (1) should be [180deg]: FAIL
    • CSS Transitions: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (2) should be [260deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (-1) should be [20deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0) should be [100deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0.125) should be [110deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0.875) should be [170deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (1) should be [180deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (2) should be [260deg]: FAIL
    • CSS Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (-1) should be [20deg]: FAIL
    • CSS Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0) should be [100deg]: FAIL
    • CSS Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0.125) should be [110deg]: FAIL
    • CSS Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0.875) should be [170deg]: FAIL
    • CSS Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (1) should be [180deg]: FAIL
    • CSS Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (2) should be [260deg]: FAIL
    • Web Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (-1) should be [20deg]: FAIL
    • Web Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0) should be [100deg]: FAIL
    • Web Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0.125) should be [110deg]: FAIL
    • Web Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (0.875) should be [170deg]: FAIL
    • Web Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (1) should be [180deg]: FAIL
    • Web Animations: property <rotate> from [100deg] to [calc(sign(20rem - 20px) * 180deg)] at (2) should be [260deg]: FAIL
    • CSS Transitions: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (-1) should be [20deg]: FAIL
    • CSS Transitions: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0) should be [100deg]: FAIL
    • CSS Transitions: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0.125) should be [110deg]: FAIL
    • CSS Transitions: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0.875) should be [170deg]: FAIL
    • CSS Transitions: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (1) should be [180deg]: FAIL
    • CSS Transitions: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (2) should be [260deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (-1) should be [20deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0) should be [100deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0.125) should be [110deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0.875) should be [170deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (1) should be [180deg]: FAIL
    • CSS Transitions with transition: all: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (2) should be [260deg]: FAIL
    • CSS Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (-1) should be [20deg]: FAIL
    • CSS Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0) should be [100deg]: FAIL
    • CSS Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0.125) should be [110deg]: FAIL
    • CSS Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0.875) should be [170deg]: FAIL
    • CSS Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (1) should be [180deg]: FAIL
    • CSS Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (2) should be [260deg]: FAIL
    • Web Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (-1) should be [20deg]: FAIL
    • Web Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0) should be [100deg]: FAIL
    • Web Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0.125) should be [110deg]: FAIL
    • Web Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (0.875) should be [170deg]: FAIL
    • Web Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (1) should be [180deg]: FAIL
    • Web Animations: property <rotate> from [calc(sign(20rem - 20px) * 100deg)] to [calc(progress(10rem, 20px, 100px) * 180deg)] at (2) should be [260deg]: FAIL
  • /css/css-transforms/animation/scale-animation-math-functions-tentative.html [wpt.fyi]
    • CSS Transitions: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (-1) should be [20]: FAIL
    • CSS Transitions: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0) should be [100]: FAIL
    • CSS Transitions: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0.125) should be [110]: FAIL
    • CSS Transitions: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0.875) should be [170]: FAIL
    • CSS Transitions: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (1) should be [180]: FAIL
    • CSS Transitions: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (2) should be [260]: FAIL
    • CSS Transitions with transition: all: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (-1) should be [20]: FAIL
    • CSS Transitions with transition: all: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0) should be [100]: FAIL
    • CSS Transitions with transition: all: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0.125) should be [110]: FAIL
    • CSS Transitions with transition: all: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0.875) should be [170]: FAIL
    • CSS Transitions with transition: all: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (1) should be [180]: FAIL
    • CSS Transitions with transition: all: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (2) should be [260]: FAIL
    • CSS Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (-1) should be [20]: FAIL
    • CSS Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0) should be [100]: FAIL
    • CSS Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0.125) should be [110]: FAIL
    • CSS Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0.875) should be [170]: FAIL
    • CSS Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (1) should be [180]: FAIL
    • CSS Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (2) should be [260]: FAIL
    • Web Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (-1) should be [20]: FAIL
    • Web Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0) should be [100]: FAIL
    • Web Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0.125) should be [110]: FAIL
    • Web Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (0.875) should be [170]: FAIL
    • Web Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (1) should be [180]: FAIL
    • Web Animations: property <scale> from [100] to [calc(sign(20rem - 20px) * 180)] at (2) should be [260]: FAIL
    • CSS Transitions: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (-1) should be [20]: FAIL
    • CSS Transitions: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0) should be [100]: FAIL
    • CSS Transitions: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0.125) should be [110]: FAIL
    • CSS Transitions: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0.875) should be [170]: FAIL
    • CSS Transitions: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (1) should be [180]: FAIL
    • CSS Transitions: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (2) should be [260]: FAIL
    • CSS Transitions with transition: all: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (-1) should be [20]: FAIL
    • CSS Transitions with transition: all: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0) should be [100]: FAIL
    • CSS Transitions with transition: all: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0.125) should be [110]: FAIL
    • CSS Transitions with transition: all: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0.875) should be [170]: FAIL
    • CSS Transitions with transition: all: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (1) should be [180]: FAIL
    • CSS Transitions with transition: all: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (2) should be [260]: FAIL
    • CSS Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (-1) should be [20]: FAIL
    • CSS Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0) should be [100]: FAIL
    • CSS Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0.125) should be [110]: FAIL
    • CSS Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0.875) should be [170]: FAIL
    • CSS Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (1) should be [180]: FAIL
    • CSS Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (2) should be [260]: FAIL
    • Web Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (-1) should be [20]: FAIL
    • Web Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0) should be [100]: FAIL
    • Web Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0.125) should be [110]: FAIL
    • Web Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (0.875) should be [170]: FAIL
    • Web Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (1) should be [180]: FAIL
    • Web Animations: property <scale> from [calc(sign(20rem - 20px) * 100)] to [calc(progress(10rem, 20px, 100px) * 180)] at (2) should be [260]: FAIL
  • /css/css-transforms/animation/transform-interpolation-007.html [wpt.fyi]
    • CSS Transitions: property <transform> from [matrix3d(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)] to [matrix(3, 0, 0, 3, 0, 0)] at (-0.3) should be [matrix(3, 0, 0, 3, 0, 0)]: FAIL
    • CSS Transitions: property <transform> from [matrix3d(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)] to [matrix(3, 0, 0, 3, 0, 0)] at (0) should be [matrix(3, 0, 0, 3, 0, 0)]: FAIL
    • CSS Transitions: property <transform> from [matrix3d(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)] to [matrix(3, 0, 0, 3, 0, 0)] at (0.3) should be [matrix(3, 0, 0, 3, 0, 0)]: FAIL
    • CSS Transitions with transition: all: property <transform> from [matrix3d(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)] to [matrix(3, 0, 0, 3, 0, 0)] at (-0.3) should be [matrix(3, 0, 0, 3, 0, 0)]: FAIL
    • CSS Transitions with transition: all: property <transform> from [matrix3d(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)] to [matrix(3, 0, 0, 3, 0, 0)] at (0) should be [matrix(3, 0, 0, 3, 0, 0)]: FAIL
    • CSS Transitions with transition: all: property <transform> from [matrix3d(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)] to [matrix(3, 0, 0, 3, 0, 0)] at (0.3) should be [matrix(3, 0, 0, 3, 0, 0)]: FAIL
  • /css/css-transforms/animation/transform-interpolation-computed-value.html [wpt.fyi]
    • Interpolation between translateX(0px) and translateX(50px) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translateX(0px) and translateX(50px) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translateX(0%) and translateX(50%) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translateX(0%) and translateX(50%) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translateY(0%) and translateX(50%) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translateY(0%) and translateX(50%) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translateX(50px) and translateY(50px) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translateX(50px) and translateY(50px) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translateX(50px) and translateZ(50px) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translateX(50px) and translateZ(50px) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translateZ(50px) and translateX(50px) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translateZ(50px) and translateX(50px) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translateZ(-50px) and translateZ(50px) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translateZ(-50px) and translateZ(50px) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translate(0%) and translate(50%) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translate(0%) and translate(50%) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translate(50%) and translate(100%, 50%) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translate(50%) and translate(100%, 50%) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translate(0%, 50%) and translate(50%, 100%) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translate(0%, 50%) and translate(50%, 100%) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translate3d(0,0,-50px) and translateZ(50px) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translate3d(0,0,-50px) and translateZ(50px) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translate(50px, 0px) and translate(100px, 0px) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translate(50px, 0px) and translate(100px, 0px) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between translate(50px, -50px) and translate(100px, 50px) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between translate(50px, -50px) and translate(100px, 50px) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between rotate(30deg) and rotate(90deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between rotate(30deg) and rotate(90deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between rotateZ(30deg) and rotateZ(90deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between rotateZ(30deg) and rotateZ(90deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between rotate(0deg) and rotateZ(90deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between rotate(0deg) and rotateZ(90deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between rotateX(0deg) and rotateX(90deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between rotateX(0deg) and rotateX(90deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between rotate(0deg) and rotateX(90deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between rotate(0deg) and rotateX(90deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scale(1) and scale(2) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scale(1) and scale(2) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scale(1, 3) and scale(2) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scale(1, 3) and scale(2) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scaleX(1) and scaleX(2) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scaleX(1) and scaleX(2) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scaleY(1) and scaleY(2) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scaleY(1) and scaleY(2) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scaleZ(1) and scaleZ(2) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scaleZ(1) and scaleZ(2) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scaleX(2) and scaleY(2) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scaleX(2) and scaleY(2) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scaleX(2) and scaleY(3) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scaleX(2) and scaleY(3) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scaleZ(1) and scale(2) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scaleZ(1) and scale(2) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scale(1, 2) and scale(3, 4) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scale(1, 2) and scale(3, 4) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scale3d(1, 2, 3) and scale3d(4, 5, 6) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scale3d(1, 2, 3) and scale3d(4, 5, 6) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scale3d(1, 2, 3) and scale(4, 5) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scale3d(1, 2, 3) and scale(4, 5) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between scale(1, 2) and scale3d(3, 4, 5) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between scale(1, 2) and scale3d(3, 4, 5) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between skewX(0deg) and skewX(60deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between skewX(0deg) and skewX(60deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between skewX(0deg) and skewX(90deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between skewX(0deg) and skewX(90deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between skewX(0deg) and skewX(180deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between skewX(0deg) and skewX(180deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between skew(0deg, 0deg) and skew(60deg, 60deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between skew(0deg, 0deg) and skew(60deg, 60deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between skew(45deg, 0deg) and skew(0deg, 45deg) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between skew(45deg, 0deg) and skew(0deg, 45deg) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between perspective(10px) and perspective(2.5px) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between perspective(10px) and perspective(2.5px) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between perspective(10px) and perspective(none) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between perspective(10px) and perspective(none) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between perspective(none) and perspective(none) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between perspective(none) and perspective(none) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between matrix(2, 0, 0, 2, 10, 30) and matrix(4, 0, 0, 6, 14, 10) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between matrix(2, 0, 0, 2, 10, 30) and matrix(4, 0, 0, 6, 14, 10) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between matrix3d(1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 5, 10, 4, 1) and matrix3d(3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, -11, 2, 2, 1) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between matrix3d(1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 0, 5, 10, 4, 1) and matrix3d(3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, -11, 2, 2, 1) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
    • Interpolation between matrix3d(1, 0, 0, 3, 0, 1, 0, 2, 0, 0, 1, 8, 0, 0, 0, 1) and matrix3d(1, 0, 0, 5, 0, 1, 0, 8, 0, 0, 1, 14, 0, 0, 0, 1) gives the correct computed value halfway according to computedStyleMap.: FAIL
    • Interpolation between matrix3d(1, 0, 0, 3, 0, 1, 0, 2, 0, 0, 1, 8, 0, 0, 0, 1) and matrix3d(1, 0, 0, 5, 0, 1, 0, 8, 0, 0, 1, 14, 0, 0, 0, 1) gives the correct computed value halfway according to computedStyleMap with zoom active.: FAIL
  • /css/css-transforms/animation/transform-interpolation-inline-value.html [wpt.fyi]
    • Interpolation between translateY(0%) and translateX(50%) gives the correct computed value halfway according to commitStyles.: FAIL
    • Interpolation between translateX(50px) and translateY(50px) gives the correct computed value halfway according to commitStyles.: FAIL
    • Interpolation between rotate(0deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles.: FAIL
    • Interpolation between scaleX(2) and scaleY(2) gives the correct computed value halfway according to commitStyles.: FAIL
    • Interpolation between scaleX(2) and scaleY(3) gives the correct computed value halfway according to commitStyles.: FAIL
  • /css/css-transforms/parsing/transform-valid.html [wpt.fyi]
    • e.style['transform'] = "scaleX(7)" should set the property value: FAIL
    • e.style['transform'] = "scaleX(720%)" should set the property value: FAIL
    • e.style['transform'] = "scaleY(-8)" should set the property value: FAIL
    • e.style['transform'] = "scaleY(-85%)" should set the property value: FAIL
    • e.style['transform'] = "scaleZ(4)" should set the property value: FAIL
    • e.style['transform'] = "scaleZ(25%)" should set the property value: FAIL
    • e.style['transform'] = "skewX(0)" should set the property value: FAIL
    • e.style['transform'] = "skewX(90deg)" should set the property value: FAIL
    • e.style['transform'] = "skewY(0)" should set the property value: FAIL
    • e.style['transform'] = "skewY(-90deg)" should set the property value: FAIL
  • /css/css-transforms/backface-visibility-hidden-003.html [wpt.fyi]: FAIL
  • /css/css-transforms/backface-visibility-hidden-004.html [wpt.fyi]: FAIL
  • /css/css-transforms/backface-visibility-hidden-animated-002.html [wpt.fyi]: FAIL [Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview, Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt], PASS [Gecko-linux2404-64-debug, Gecko-linux2404-64-opt]
  • /css/css-transforms/skew-test1.html [wpt.fyi]: FAIL
  • /css/css-transforms/transform-iframe-scroll-position.html [wpt.fyi]: FAIL
  • /css/css-transforms/transform-input-002.html [wpt.fyi]: FAIL [Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview], PASS [Gecko-linux2404-64-debug, Gecko-linux2404-64-opt, Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt]
  • /css/css-transforms/transform-input-013.html [wpt.fyi]: FAIL [Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview], PASS [Gecko-linux2404-64-debug, Gecko-linux2404-64-opt, Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt]
  • /css/css-transforms/transform-input-019.html [wpt.fyi]: FAIL [Gecko-android-em-14-x86_64-debug-geckoview, Gecko-android-em-14-x86_64-lite-opt-geckoview, Gecko-android-em-14-x86_64-opt-geckoview], PASS [Gecko-linux2404-64-debug, Gecko-linux2404-64-opt, Gecko-windows11-64-24h2-debug, Gecko-windows11-64-24h2-opt]
  • /css/css-transforms/transform-table-009.html [wpt.fyi]: FAIL
  • /css/css-transforms/transform-table-010.html [wpt.fyi]: FAIL
  • /css/css-transforms/transform-table-011.html [wpt.fyi]: FAIL
  • /css/css-transforms/animation/translate-animation-on-svg.html [wpt.fyi]: FAIL
Pushed by wptsync@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/3998cb2666c9 https://hg.mozilla.org/integration/autoland/rev/d96ec525598e [wpt PR 58344] - Fix hit-test z-offset computation for layers without CSS transforms in preserve-3d, a=testonly
Status: NEW → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → 150 Branch
You need to log in before you can comment on or make changes to this bug.