Changeset 289732 in webkit
- Timestamp:
- Feb 14, 2022 6:03:06 AM (5 months ago)
- Location:
- trunk
- Files:
-
- 13 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt (modified) (19 diffs)
-
LayoutTests/compositing/layer-creation/translate-scale-animation-overlap-expected.txt (modified) (19 diffs)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/list-interpolation-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-003-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/animation/KeyframeEffect.cpp (modified) (1 diff)
-
Source/WebCore/platform/graphics/GraphicsLayer.cpp (modified) (1 diff)
-
Source/WebCore/platform/graphics/transforms/TransformOperations.cpp (modified) (2 diffs)
-
Source/WebCore/platform/graphics/transforms/TransformOperations.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r289727 r289732 1 2022-02-14 Martin Robinson <mrobinson@webkit.org> 2 3 Animation from "scale()" to "scale() translate()" does not yield the expected result 4 https://bugs.webkit.org/show_bug.cgi?id=222595 5 <rdar://problem/74926700> 6 7 Reviewed by Simon Fraser. 8 9 * compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt: 10 * compositing/layer-creation/translate-scale-animation-overlap-expected.txt: 11 1 12 2022-02-13 Fujii Hironori <Hironori.Fujii@sony.com> 2 13 -
trunk/LayoutTests/compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt
r244800 r289732 6 6 (bounds 800.00 600.00) 7 7 (contentsOpaque 1) 8 (children 7838 (children 800 9 9 (GraphicsLayer 10 10 (offsetFromRenderer width=-14 height=-14) … … 15 15 ) 16 16 (GraphicsLayer 17 (position 20.00 30.00)18 (bounds 4.00 4.00)19 (contentsOpaque 1)20 )21 (GraphicsLayer22 17 (position 30.00 30.00) 23 18 (bounds 4.00 4.00) … … 245 240 ) 246 241 (GraphicsLayer 247 (position 20.00 40.00) 242 (position 480.00 30.00) 243 (bounds 4.00 4.00) 244 (contentsOpaque 1) 245 ) 246 (GraphicsLayer 247 (position 490.00 30.00) 248 248 (bounds 4.00 4.00) 249 249 (contentsOpaque 1) … … 475 475 ) 476 476 (GraphicsLayer 477 (position 20.00 50.00) 477 (position 480.00 40.00) 478 (bounds 4.00 4.00) 479 (contentsOpaque 1) 480 ) 481 (GraphicsLayer 482 (position 490.00 40.00) 478 483 (bounds 4.00 4.00) 479 484 (contentsOpaque 1) … … 705 710 ) 706 711 (GraphicsLayer 707 (position 20.00 60.00) 712 (position 480.00 50.00) 713 (bounds 4.00 4.00) 714 (contentsOpaque 1) 715 ) 716 (GraphicsLayer 717 (position 490.00 50.00) 708 718 (bounds 4.00 4.00) 709 719 (contentsOpaque 1) … … 935 945 ) 936 946 (GraphicsLayer 937 (position 20.00 70.00) 947 (position 480.00 60.00) 948 (bounds 4.00 4.00) 949 (contentsOpaque 1) 950 ) 951 (GraphicsLayer 952 (position 490.00 60.00) 938 953 (bounds 4.00 4.00) 939 954 (contentsOpaque 1) … … 1165 1180 ) 1166 1181 (GraphicsLayer 1167 (position 20.00 80.00) 1182 (position 480.00 70.00) 1183 (bounds 4.00 4.00) 1184 (contentsOpaque 1) 1185 ) 1186 (GraphicsLayer 1187 (position 490.00 70.00) 1168 1188 (bounds 4.00 4.00) 1169 1189 (contentsOpaque 1) … … 1395 1415 ) 1396 1416 (GraphicsLayer 1397 (position 20.00 90.00) 1417 (position 480.00 80.00) 1418 (bounds 4.00 4.00) 1419 (contentsOpaque 1) 1420 ) 1421 (GraphicsLayer 1422 (position 490.00 80.00) 1398 1423 (bounds 4.00 4.00) 1399 1424 (contentsOpaque 1) … … 1625 1650 ) 1626 1651 (GraphicsLayer 1627 (position 20.00 100.00) 1652 (position 480.00 90.00) 1653 (bounds 4.00 4.00) 1654 (contentsOpaque 1) 1655 ) 1656 (GraphicsLayer 1657 (position 490.00 90.00) 1628 1658 (bounds 4.00 4.00) 1629 1659 (contentsOpaque 1) … … 1855 1885 ) 1856 1886 (GraphicsLayer 1857 (position 20.00 110.00) 1887 (position 480.00 100.00) 1888 (bounds 4.00 4.00) 1889 (contentsOpaque 1) 1890 ) 1891 (GraphicsLayer 1892 (position 490.00 100.00) 1858 1893 (bounds 4.00 4.00) 1859 1894 (contentsOpaque 1) … … 2085 2120 ) 2086 2121 (GraphicsLayer 2087 (position 20.00 120.00) 2122 (position 480.00 110.00) 2123 (bounds 4.00 4.00) 2124 (contentsOpaque 1) 2125 ) 2126 (GraphicsLayer 2127 (position 490.00 110.00) 2088 2128 (bounds 4.00 4.00) 2089 2129 (contentsOpaque 1) … … 2315 2355 ) 2316 2356 (GraphicsLayer 2317 (position 20.00 130.00) 2357 (position 480.00 120.00) 2358 (bounds 4.00 4.00) 2359 (contentsOpaque 1) 2360 ) 2361 (GraphicsLayer 2362 (position 490.00 120.00) 2318 2363 (bounds 4.00 4.00) 2319 2364 (contentsOpaque 1) … … 2545 2590 ) 2546 2591 (GraphicsLayer 2547 (position 20.00 140.00) 2592 (position 480.00 130.00) 2593 (bounds 4.00 4.00) 2594 (contentsOpaque 1) 2595 ) 2596 (GraphicsLayer 2597 (position 490.00 130.00) 2548 2598 (bounds 4.00 4.00) 2549 2599 (contentsOpaque 1) … … 2775 2825 ) 2776 2826 (GraphicsLayer 2777 (position 20.00 150.00) 2827 (position 480.00 140.00) 2828 (bounds 4.00 4.00) 2829 (contentsOpaque 1) 2830 ) 2831 (GraphicsLayer 2832 (position 490.00 140.00) 2778 2833 (bounds 4.00 4.00) 2779 2834 (contentsOpaque 1) … … 3005 3060 ) 3006 3061 (GraphicsLayer 3007 (position 20.00 160.00) 3062 (position 480.00 150.00) 3063 (bounds 4.00 4.00) 3064 (contentsOpaque 1) 3065 ) 3066 (GraphicsLayer 3067 (position 490.00 150.00) 3008 3068 (bounds 4.00 4.00) 3009 3069 (contentsOpaque 1) … … 3235 3295 ) 3236 3296 (GraphicsLayer 3237 (position 20.00 170.00) 3297 (position 480.00 160.00) 3298 (bounds 4.00 4.00) 3299 (contentsOpaque 1) 3300 ) 3301 (GraphicsLayer 3302 (position 490.00 160.00) 3238 3303 (bounds 4.00 4.00) 3239 3304 (contentsOpaque 1) … … 3465 3530 ) 3466 3531 (GraphicsLayer 3467 (position 20.00 180.00) 3532 (position 480.00 170.00) 3533 (bounds 4.00 4.00) 3534 (contentsOpaque 1) 3535 ) 3536 (GraphicsLayer 3537 (position 490.00 170.00) 3468 3538 (bounds 4.00 4.00) 3469 3539 (contentsOpaque 1) … … 3695 3765 ) 3696 3766 (GraphicsLayer 3697 (position 20.00 190.00) 3767 (position 480.00 180.00) 3768 (bounds 4.00 4.00) 3769 (contentsOpaque 1) 3770 ) 3771 (GraphicsLayer 3772 (position 490.00 180.00) 3698 3773 (bounds 4.00 4.00) 3699 3774 (contentsOpaque 1) … … 3921 3996 (GraphicsLayer 3922 3997 (position 470.00 190.00) 3998 (bounds 4.00 4.00) 3999 (contentsOpaque 1) 4000 ) 4001 (GraphicsLayer 4002 (position 480.00 190.00) 4003 (bounds 4.00 4.00) 4004 (contentsOpaque 1) 4005 ) 4006 (GraphicsLayer 4007 (position 490.00 190.00) 3923 4008 (bounds 4.00 4.00) 3924 4009 (contentsOpaque 1) -
trunk/LayoutTests/compositing/layer-creation/translate-scale-animation-overlap-expected.txt
r256095 r289732 6 6 (bounds 800.00 600.00) 7 7 (contentsOpaque 1) 8 (children 6858 (children 739 9 9 (GraphicsLayer 10 10 (offsetFromRenderer width=-14 height=-14) … … 205 205 ) 206 206 (GraphicsLayer 207 (position 420.00 30.00) 208 (bounds 4.00 4.00) 209 (contentsOpaque 1) 210 ) 211 (GraphicsLayer 212 (position 430.00 30.00) 213 (bounds 4.00 4.00) 214 (contentsOpaque 1) 215 ) 216 (GraphicsLayer 217 (position 440.00 30.00) 218 (bounds 4.00 4.00) 219 (contentsOpaque 1) 220 ) 221 (GraphicsLayer 207 222 (position 40.00 40.00) 208 223 (bounds 4.00 4.00) … … 395 410 ) 396 411 (GraphicsLayer 412 (position 420.00 40.00) 413 (bounds 4.00 4.00) 414 (contentsOpaque 1) 415 ) 416 (GraphicsLayer 417 (position 430.00 40.00) 418 (bounds 4.00 4.00) 419 (contentsOpaque 1) 420 ) 421 (GraphicsLayer 422 (position 440.00 40.00) 423 (bounds 4.00 4.00) 424 (contentsOpaque 1) 425 ) 426 (GraphicsLayer 397 427 (position 40.00 50.00) 398 428 (bounds 4.00 4.00) … … 585 615 ) 586 616 (GraphicsLayer 617 (position 420.00 50.00) 618 (bounds 4.00 4.00) 619 (contentsOpaque 1) 620 ) 621 (GraphicsLayer 622 (position 430.00 50.00) 623 (bounds 4.00 4.00) 624 (contentsOpaque 1) 625 ) 626 (GraphicsLayer 627 (position 440.00 50.00) 628 (bounds 4.00 4.00) 629 (contentsOpaque 1) 630 ) 631 (GraphicsLayer 587 632 (position 40.00 60.00) 588 633 (bounds 4.00 4.00) … … 775 820 ) 776 821 (GraphicsLayer 822 (position 420.00 60.00) 823 (bounds 4.00 4.00) 824 (contentsOpaque 1) 825 ) 826 (GraphicsLayer 827 (position 430.00 60.00) 828 (bounds 4.00 4.00) 829 (contentsOpaque 1) 830 ) 831 (GraphicsLayer 832 (position 440.00 60.00) 833 (bounds 4.00 4.00) 834 (contentsOpaque 1) 835 ) 836 (GraphicsLayer 777 837 (position 40.00 70.00) 778 838 (bounds 4.00 4.00) … … 965 1025 ) 966 1026 (GraphicsLayer 1027 (position 420.00 70.00) 1028 (bounds 4.00 4.00) 1029 (contentsOpaque 1) 1030 ) 1031 (GraphicsLayer 1032 (position 430.00 70.00) 1033 (bounds 4.00 4.00) 1034 (contentsOpaque 1) 1035 ) 1036 (GraphicsLayer 1037 (position 440.00 70.00) 1038 (bounds 4.00 4.00) 1039 (contentsOpaque 1) 1040 ) 1041 (GraphicsLayer 967 1042 (position 40.00 80.00) 968 1043 (bounds 4.00 4.00) … … 1155 1230 ) 1156 1231 (GraphicsLayer 1232 (position 420.00 80.00) 1233 (bounds 4.00 4.00) 1234 (contentsOpaque 1) 1235 ) 1236 (GraphicsLayer 1237 (position 430.00 80.00) 1238 (bounds 4.00 4.00) 1239 (contentsOpaque 1) 1240 ) 1241 (GraphicsLayer 1242 (position 440.00 80.00) 1243 (bounds 4.00 4.00) 1244 (contentsOpaque 1) 1245 ) 1246 (GraphicsLayer 1157 1247 (position 40.00 90.00) 1158 1248 (bounds 4.00 4.00) … … 1345 1435 ) 1346 1436 (GraphicsLayer 1437 (position 420.00 90.00) 1438 (bounds 4.00 4.00) 1439 (contentsOpaque 1) 1440 ) 1441 (GraphicsLayer 1442 (position 430.00 90.00) 1443 (bounds 4.00 4.00) 1444 (contentsOpaque 1) 1445 ) 1446 (GraphicsLayer 1447 (position 440.00 90.00) 1448 (bounds 4.00 4.00) 1449 (contentsOpaque 1) 1450 ) 1451 (GraphicsLayer 1347 1452 (position 40.00 100.00) 1348 1453 (bounds 4.00 4.00) … … 1535 1640 ) 1536 1641 (GraphicsLayer 1642 (position 420.00 100.00) 1643 (bounds 4.00 4.00) 1644 (contentsOpaque 1) 1645 ) 1646 (GraphicsLayer 1647 (position 430.00 100.00) 1648 (bounds 4.00 4.00) 1649 (contentsOpaque 1) 1650 ) 1651 (GraphicsLayer 1652 (position 440.00 100.00) 1653 (bounds 4.00 4.00) 1654 (contentsOpaque 1) 1655 ) 1656 (GraphicsLayer 1537 1657 (position 40.00 110.00) 1538 1658 (bounds 4.00 4.00) … … 1725 1845 ) 1726 1846 (GraphicsLayer 1847 (position 420.00 110.00) 1848 (bounds 4.00 4.00) 1849 (contentsOpaque 1) 1850 ) 1851 (GraphicsLayer 1852 (position 430.00 110.00) 1853 (bounds 4.00 4.00) 1854 (contentsOpaque 1) 1855 ) 1856 (GraphicsLayer 1857 (position 440.00 110.00) 1858 (bounds 4.00 4.00) 1859 (contentsOpaque 1) 1860 ) 1861 (GraphicsLayer 1727 1862 (position 40.00 120.00) 1728 1863 (bounds 4.00 4.00) … … 1915 2050 ) 1916 2051 (GraphicsLayer 2052 (position 420.00 120.00) 2053 (bounds 4.00 4.00) 2054 (contentsOpaque 1) 2055 ) 2056 (GraphicsLayer 2057 (position 430.00 120.00) 2058 (bounds 4.00 4.00) 2059 (contentsOpaque 1) 2060 ) 2061 (GraphicsLayer 2062 (position 440.00 120.00) 2063 (bounds 4.00 4.00) 2064 (contentsOpaque 1) 2065 ) 2066 (GraphicsLayer 1917 2067 (position 40.00 130.00) 1918 2068 (bounds 4.00 4.00) … … 2105 2255 ) 2106 2256 (GraphicsLayer 2257 (position 420.00 130.00) 2258 (bounds 4.00 4.00) 2259 (contentsOpaque 1) 2260 ) 2261 (GraphicsLayer 2262 (position 430.00 130.00) 2263 (bounds 4.00 4.00) 2264 (contentsOpaque 1) 2265 ) 2266 (GraphicsLayer 2267 (position 440.00 130.00) 2268 (bounds 4.00 4.00) 2269 (contentsOpaque 1) 2270 ) 2271 (GraphicsLayer 2107 2272 (position 40.00 140.00) 2108 2273 (bounds 4.00 4.00) … … 2295 2460 ) 2296 2461 (GraphicsLayer 2462 (position 420.00 140.00) 2463 (bounds 4.00 4.00) 2464 (contentsOpaque 1) 2465 ) 2466 (GraphicsLayer 2467 (position 430.00 140.00) 2468 (bounds 4.00 4.00) 2469 (contentsOpaque 1) 2470 ) 2471 (GraphicsLayer 2472 (position 440.00 140.00) 2473 (bounds 4.00 4.00) 2474 (contentsOpaque 1) 2475 ) 2476 (GraphicsLayer 2297 2477 (position 40.00 150.00) 2298 2478 (bounds 4.00 4.00) … … 2485 2665 ) 2486 2666 (GraphicsLayer 2667 (position 420.00 150.00) 2668 (bounds 4.00 4.00) 2669 (contentsOpaque 1) 2670 ) 2671 (GraphicsLayer 2672 (position 430.00 150.00) 2673 (bounds 4.00 4.00) 2674 (contentsOpaque 1) 2675 ) 2676 (GraphicsLayer 2677 (position 440.00 150.00) 2678 (bounds 4.00 4.00) 2679 (contentsOpaque 1) 2680 ) 2681 (GraphicsLayer 2487 2682 (position 40.00 160.00) 2488 2683 (bounds 4.00 4.00) … … 2675 2870 ) 2676 2871 (GraphicsLayer 2872 (position 420.00 160.00) 2873 (bounds 4.00 4.00) 2874 (contentsOpaque 1) 2875 ) 2876 (GraphicsLayer 2877 (position 430.00 160.00) 2878 (bounds 4.00 4.00) 2879 (contentsOpaque 1) 2880 ) 2881 (GraphicsLayer 2882 (position 440.00 160.00) 2883 (bounds 4.00 4.00) 2884 (contentsOpaque 1) 2885 ) 2886 (GraphicsLayer 2677 2887 (position 40.00 170.00) 2678 2888 (bounds 4.00 4.00) … … 2865 3075 ) 2866 3076 (GraphicsLayer 3077 (position 420.00 170.00) 3078 (bounds 4.00 4.00) 3079 (contentsOpaque 1) 3080 ) 3081 (GraphicsLayer 3082 (position 430.00 170.00) 3083 (bounds 4.00 4.00) 3084 (contentsOpaque 1) 3085 ) 3086 (GraphicsLayer 3087 (position 440.00 170.00) 3088 (bounds 4.00 4.00) 3089 (contentsOpaque 1) 3090 ) 3091 (GraphicsLayer 2867 3092 (position 40.00 180.00) 2868 3093 (bounds 4.00 4.00) … … 3055 3280 ) 3056 3281 (GraphicsLayer 3282 (position 420.00 180.00) 3283 (bounds 4.00 4.00) 3284 (contentsOpaque 1) 3285 ) 3286 (GraphicsLayer 3287 (position 430.00 180.00) 3288 (bounds 4.00 4.00) 3289 (contentsOpaque 1) 3290 ) 3291 (GraphicsLayer 3292 (position 440.00 180.00) 3293 (bounds 4.00 4.00) 3294 (contentsOpaque 1) 3295 ) 3296 (GraphicsLayer 3057 3297 (position 40.00 190.00) 3058 3298 (bounds 4.00 4.00) … … 3245 3485 ) 3246 3486 (GraphicsLayer 3487 (position 420.00 190.00) 3488 (bounds 4.00 4.00) 3489 (contentsOpaque 1) 3490 ) 3491 (GraphicsLayer 3492 (position 430.00 190.00) 3493 (bounds 4.00 4.00) 3494 (contentsOpaque 1) 3495 ) 3496 (GraphicsLayer 3497 (position 440.00 190.00) 3498 (bounds 4.00 4.00) 3499 (contentsOpaque 1) 3500 ) 3501 (GraphicsLayer 3247 3502 (position 40.00 200.00) 3248 3503 (bounds 4.00 4.00) … … 3431 3686 (GraphicsLayer 3432 3687 (position 410.00 200.00) 3688 (bounds 4.00 4.00) 3689 (contentsOpaque 1) 3690 ) 3691 (GraphicsLayer 3692 (position 420.00 200.00) 3693 (bounds 4.00 4.00) 3694 (contentsOpaque 1) 3695 ) 3696 (GraphicsLayer 3697 (position 430.00 200.00) 3698 (bounds 4.00 4.00) 3699 (contentsOpaque 1) 3700 ) 3701 (GraphicsLayer 3702 (position 440.00 200.00) 3433 3703 (bounds 4.00 4.00) 3434 3704 (contentsOpaque 1) -
trunk/LayoutTests/imported/w3c/ChangeLog
r289722 r289732 1 2022-02-14 Martin Robinson <mrobinson@webkit.org> 2 3 Animation from "scale()" to "scale() translate()" does not yield the expected result 4 https://bugs.webkit.org/show_bug.cgi?id=222595 5 <rdar://problem/74926700> 6 7 Reviewed by Simon Fraser. 8 9 * web-platform-tests/css/css-transforms/animation/list-interpolation-expected.txt: Mark tests as passing. 10 * web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt: 11 * web-platform-tests/css/css-transforms/animation/transform-interpolation-003-expected.txt: 12 1 13 2022-02-13 Matt Woodrow <mattwoodrow@apple.com> 2 14 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/list-interpolation-expected.txt
r289032 r289732 12 12 PASS CSS Animations: property <transform> from [translate(200px) rotate(720deg)] to [none] at (0.25) should be [translate(150px) rotate(540deg)] 13 13 PASS Web Animations: property <transform> from [translate(200px) rotate(720deg)] to [none] at (0.25) should be [translate(150px) rotate(540deg)] 14 FAIL CSS Transitions: property <transform> from [translate(100px)] to [translate(200px) rotate(720deg)] at (0.25) should be [translate(125px) rotate(180deg)] assert_equals: expected "matrix ( - 1 , 0 , 0 , - 1 , 125 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 125 , 0 ) " 15 FAIL CSS Transitions with transition: all: property <transform> from [translate(100px)] to [translate(200px) rotate(720deg)] at (0.25) should be [translate(125px) rotate(180deg)] assert_equals: expected "matrix ( - 1 , 0 , 0 , - 1 , 125 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 125 , 0 ) " 16 FAIL CSS Animations: property <transform> from [translate(100px)] to [translate(200px) rotate(720deg)] at (0.25) should be [translate(125px) rotate(180deg)] assert_equals: expected "matrix ( - 1 , 0 , 0 , - 1 , 125 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 125 , 0 ) " 17 FAIL Web Animations: property <transform> from [translate(100px)] to [translate(200px) rotate(720deg)] at (0.25) should be [translate(125px) rotate(180deg)] assert_equals: expected "matrix ( - 1 , 0 , 0 , - 1 , 125 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 125 , 0 ) " 18 FAIL CSS Transitions: property <transform> from [translate(100px) rotate(720deg)] to [translate(200px)] at (0.25) should be [translate(125px) rotate(540deg)] assert_equals: expected "matrix ( - 1 , 0 , 0 , - 1 , 125 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 125 , 0 ) " 19 FAIL CSS Transitions with transition: all: property <transform> from [translate(100px) rotate(720deg)] to [translate(200px)] at (0.25) should be [translate(125px) rotate(540deg)] assert_equals: expected "matrix ( - 1 , 0 , 0 , - 1 , 125 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 125 , 0 ) " 20 FAIL CSS Animations: property <transform> from [translate(100px) rotate(720deg)] to [translate(200px)] at (0.25) should be [translate(125px) rotate(540deg)] assert_equals: expected "matrix ( - 1 , 0 , 0 , - 1 , 125 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 125 , 0 ) " 21 FAIL Web Animations: property <transform> from [translate(100px) rotate(720deg)] to [translate(200px)] at (0.25) should be [translate(125px) rotate(540deg)] assert_equals: expected "matrix ( - 1 , 0 , 0 , - 1 , 125 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 125 , 0 ) " 14 PASS CSS Transitions: property <transform> from [translate(100px)] to [translate(200px) rotate(720deg)] at (0.25) should be [translate(125px) rotate(180deg)] 15 PASS CSS Transitions with transition: all: property <transform> from [translate(100px)] to [translate(200px) rotate(720deg)] at (0.25) should be [translate(125px) rotate(180deg)] 16 PASS CSS Animations: property <transform> from [translate(100px)] to [translate(200px) rotate(720deg)] at (0.25) should be [translate(125px) rotate(180deg)] 17 PASS Web Animations: property <transform> from [translate(100px)] to [translate(200px) rotate(720deg)] at (0.25) should be [translate(125px) rotate(180deg)] 18 PASS CSS Transitions: property <transform> from [translate(100px) rotate(720deg)] to [translate(200px)] at (0.25) should be [translate(125px) rotate(540deg)] 19 PASS CSS Transitions with transition: all: property <transform> from [translate(100px) rotate(720deg)] to [translate(200px)] at (0.25) should be [translate(125px) rotate(540deg)] 20 PASS CSS Animations: property <transform> from [translate(100px) rotate(720deg)] to [translate(200px)] at (0.25) should be [translate(125px) rotate(540deg)] 21 PASS Web Animations: property <transform> from [translate(100px) rotate(720deg)] to [translate(200px)] at (0.25) should be [translate(125px) rotate(540deg)] 22 22 PASS CSS Transitions: property <transform> from [scale(2) rotate(360deg) translate(100px) matrix(1, 0, 0, 1, 100, 0) skew(0deg)] to [scale(3) rotate(1080deg) translate(200px) matrix(1, 0, 0, 1, 0, 200) skew(720deg)] at (0.25) should be [scale(2.25) rotate(540deg) translate(125px) matrix(1, 0, 0, 1, 75, 50) skew(180deg)] 23 23 PASS CSS Transitions with transition: all: property <transform> from [scale(2) rotate(360deg) translate(100px) matrix(1, 0, 0, 1, 100, 0) skew(0deg)] to [scale(3) rotate(1080deg) translate(200px) matrix(1, 0, 0, 1, 0, 200) skew(720deg)] at (0.25) should be [scale(2.25) rotate(540deg) translate(125px) matrix(1, 0, 0, 1, 75, 50) skew(180deg)] -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt
r289032 r289732 72 72 PASS Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] 73 73 PASS Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(3) perspective(666.6666666666666px)] 74 FAIL CSS Transitions: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(2)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0.002, 0, 0, 0, 1)" [0.002] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)" [0] expected a number less than 0.00001 but got 2000.0000000000002 74 PASS CSS Transitions: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(2)] 75 75 PASS CSS Transitions: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0) should be [scaleZ(2)] 76 76 PASS CSS Transitions: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0.5) should be [scaleZ(2) perspective(1000px)] 77 77 PASS CSS Transitions: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] 78 78 PASS CSS Transitions: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(2) perspective(250px)] 79 FAIL CSS Transitions with transition: all: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(2)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0.002, 0, 0, 0, 1)" [0.002] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)" [0] expected a number less than 0.00001 but got 2000.0000000000002 79 PASS CSS Transitions with transition: all: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(2)] 80 80 PASS CSS Transitions with transition: all: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0) should be [scaleZ(2)] 81 81 PASS CSS Transitions with transition: all: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0.5) should be [scaleZ(2) perspective(1000px)] 82 82 PASS CSS Transitions with transition: all: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] 83 83 PASS CSS Transitions with transition: all: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(2) perspective(250px)] 84 FAIL CSS Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(2)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0.002, 0, 0, 0, 1)" [0.002] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)" [0] expected a number less than 0.00001 but got 2000.0000000000002 84 PASS CSS Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(2)] 85 85 PASS CSS Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0) should be [scaleZ(2)] 86 86 PASS CSS Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0.5) should be [scaleZ(2) perspective(1000px)] 87 87 PASS CSS Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] 88 88 PASS CSS Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(2) perspective(250px)] 89 FAIL Web Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(2)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0.002, 0, 0, 0, 1)" [0.002] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)" [0] expected a number less than 0.00001 but got 2000.0000000000002 89 PASS Web Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(2)] 90 90 PASS Web Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0) should be [scaleZ(2)] 91 91 PASS Web Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0.5) should be [scaleZ(2) perspective(1000px)] -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-003-expected.txt
r267650 r289732 24 24 PASS Web Animations: property <transform> from [skewX(10rad) scaleZ(1)] to [skewX(20rad) scaleZ(2)] at (1) should be [skewX(20rad) scaleZ(2)] 25 25 PASS Web Animations: property <transform> from [skewX(10rad) scaleZ(1)] to [skewX(20rad) scaleZ(2)] at (2) should be [skewX(30rad) scaleZ(3)] 26 FAIL CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (-1) should be [skewX(0rad) scaleZ(0)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , - 0.94 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) " 26 PASS CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (-1) should be [skewX(0rad) scaleZ(0)] 27 27 PASS CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0) should be [skewX(10rad) scaleZ(1)] 28 FAIL CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 0.07 , 1 , 0 , 0 , 0 , 0 , 1.25 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 1.05 , 1 , 0 , 0 , 0 , 0 , 1.25 , 0 , 0 , 0 , 0 , 1 ) " 29 FAIL CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 4.45 , 1 , 0 , 0 , 0 , 0 , 1.75 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 1.84 , 1 , 0 , 0 , 0 , 0 , 1.75 , 0 , 0 , 0 , 0 , 1 ) " 28 PASS CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)] 29 PASS CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)] 30 30 PASS CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (1) should be [skewX(20rad) scaleZ(2)] 31 FAIL CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (2) should be [skewX(30rad) scaleZ(3)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 6.41 , 1 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 3.83 , 1 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 1 ) " 32 FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (-1) should be [skewX(0rad) scaleZ(0)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , - 0.94 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) " 31 PASS CSS Transitions: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (2) should be [skewX(30rad) scaleZ(3)] 32 PASS CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (-1) should be [skewX(0rad) scaleZ(0)] 33 33 PASS CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0) should be [skewX(10rad) scaleZ(1)] 34 FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 0.07 , 1 , 0 , 0 , 0 , 0 , 1.25 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 1.05 , 1 , 0 , 0 , 0 , 0 , 1.25 , 0 , 0 , 0 , 0 , 1 ) " 35 FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 4.45 , 1 , 0 , 0 , 0 , 0 , 1.75 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 1.84 , 1 , 0 , 0 , 0 , 0 , 1.75 , 0 , 0 , 0 , 0 , 1 ) " 34 PASS CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)] 35 PASS CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)] 36 36 PASS CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (1) should be [skewX(20rad) scaleZ(2)] 37 FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (2) should be [skewX(30rad) scaleZ(3)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 6.41 , 1 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 3.83 , 1 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 1 ) " 38 FAIL CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (-1) should be [skewX(0rad) scaleZ(0)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , - 0.94 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) " 37 PASS CSS Transitions with transition: all: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (2) should be [skewX(30rad) scaleZ(3)] 38 PASS CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (-1) should be [skewX(0rad) scaleZ(0)] 39 39 PASS CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0) should be [skewX(10rad) scaleZ(1)] 40 FAIL CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 0.07 , 1 , 0 , 0 , 0 , 0 , 1.25 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 1.05 , 1 , 0 , 0 , 0 , 0 , 1.25 , 0 , 0 , 0 , 0 , 1 ) " 41 FAIL CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 4.45 , 1 , 0 , 0 , 0 , 0 , 1.75 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 1.84 , 1 , 0 , 0 , 0 , 0 , 1.75 , 0 , 0 , 0 , 0 , 1 ) " 40 PASS CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)] 41 PASS CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)] 42 42 PASS CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (1) should be [skewX(20rad) scaleZ(2)] 43 FAIL CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (2) should be [skewX(30rad) scaleZ(3)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 6.41 , 1 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 3.83 , 1 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 1 ) " 44 FAIL Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (-1) should be [skewX(0rad) scaleZ(0)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , - 0.94 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) " 43 PASS CSS Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (2) should be [skewX(30rad) scaleZ(3)] 44 PASS Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (-1) should be [skewX(0rad) scaleZ(0)] 45 45 PASS Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0) should be [skewX(10rad) scaleZ(1)] 46 FAIL Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 0.07 , 1 , 0 , 0 , 0 , 0 , 1.25 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 1.05 , 1 , 0 , 0 , 0 , 0 , 1.25 , 0 , 0 , 0 , 0 , 1 ) " 47 FAIL Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 4.45 , 1 , 0 , 0 , 0 , 0 , 1.75 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 1.84 , 1 , 0 , 0 , 0 , 0 , 1.75 , 0 , 0 , 0 , 0 , 1 ) " 46 PASS Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)] 47 PASS Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)] 48 48 PASS Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (1) should be [skewX(20rad) scaleZ(2)] 49 FAIL Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (2) should be [skewX(30rad) scaleZ(3)] assert_equals: expected "matrix3d ( 1 , 0 , 0 , 0 , - 6.41 , 1 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 1 ) " but got "matrix3d ( 1 , 0 , 0 , 0 , 3.83 , 1 , 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 , 1 ) " 49 PASS Web Animations: property <transform> from [skewX(10rad)] to [skewX(20rad) scaleZ(2)] at (2) should be [skewX(30rad) scaleZ(3)] 50 50 PASS CSS Transitions: property <transform> from [scaleZ(3) perspective(400px)] to [scaleZ(4) skewX(1rad) perspective(500px)] at (-1) should be [scaleZ(2) matrix3d(1, 0, 0, 0, -1.55741, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)] 51 51 PASS CSS Transitions: property <transform> from [scaleZ(3) perspective(400px)] to [scaleZ(4) skewX(1rad) perspective(500px)] at (0) should be [scaleZ(3) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)] -
trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt
r287924 r289732 217 217 PASS transform: rotate and translate 218 218 PASS transform: translate and rotate 219 FAIL transform: extend shorter list (from) assert_approx_equals: expected matrix(-1, 0, 0, -1, -50, 0) but got matrix(1, 0, 0, 1, 50, 0): The value should be matrix(-1, 0, 0, -1, -50, 0) at 500ms but got matrix(1, 0, 0, 1, 50, 0) expected -1 +/- 0.0001 but got 1 220 FAIL transform: extend shorter list (to) assert_approx_equals: expected matrix(-1, 0, 0, -1, -50, 0) but got matrix(1, 0, 0, 1, 50, 0): The value should be matrix(-1, 0, 0, -1, -50, 0) at 500ms but got matrix(1, 0, 0, 1, 50, 0) expected -1 +/- 0.0001 but got 1 219 PASS transform: extend shorter list (from) 220 PASS transform: extend shorter list (to) 221 221 PASS transform: mismatch order of translate and rotate 222 222 PASS transform: matrix -
trunk/Source/WebCore/ChangeLog
r289731 r289732 1 2022-02-14 Martin Robinson <mrobinson@webkit.org> 2 3 Animation from "scale()" to "scale() translate()" does not yield the expected result 4 https://bugs.webkit.org/show_bug.cgi?id=222595 5 <rdar://problem/74926700> 6 7 Reviewed by Simon Fraser. 8 9 No new tests. This is covered by existing WPT tests. 10 11 When blending two transform lists, where one list is longer than the other, extending the 12 shorter list with identity transform functions. This is the behavior specified in the 13 CSS Transforms Module Level 2 specification. 14 15 * animation/KeyframeEffect.cpp: 16 (WebCore::KeyframeEffect::checkForMatchingTransformFunctionLists): Instead of checking each frame 17 against the first keyframe, collect a list of shared transform primitives and check that each 18 list has the same number of compatible primitives or a prefix of compatible primitives and is 19 shorter. 20 * platform/graphics/GraphicsLayer.cpp: 21 (WebCore::GraphicsLayer::getSharedPrimitivesForTransformKeyframes): When the transform operation 22 lists have different sizes, don't always return false. Instead check that the parts that do exist 23 have matching primitives. 24 * platform/graphics/transforms/TransformOperations.cpp: 25 (WebCore::TransformOperations::operationsMatch const): Only check the transformations in 26 the shared list size. 27 (WebCore::TransformOperations::blendByMatchingOperations const): Properly handle when one of the 28 two operations is null instead of just the toOperation. 29 1 30 2022-02-14 Alejandro G. Castro <alex@igalia.com> 2 31 -
trunk/Source/WebCore/animation/KeyframeEffect.cpp
r289598 r289732 939 939 return; 940 940 941 // Empty transforms match anything, so find the first non-empty entry as the reference. 942 size_t numKeyframes = m_blendingKeyframes.size(); 943 size_t firstNonEmptyTransformKeyframeIndex = numKeyframes; 944 945 for (size_t i = 0; i < numKeyframes; ++i) { 946 const KeyframeValue& currentKeyframe = m_blendingKeyframes[i]; 947 if (currentKeyframe.style()->transform().operations().size()) { 948 firstNonEmptyTransformKeyframeIndex = i; 949 break; 950 } 951 } 952 953 // All of the frames have an empty list of transform operations, so they match. 954 if (firstNonEmptyTransformKeyframeIndex == numKeyframes) { 955 m_transformFunctionListsMatch = true; 956 return; 957 } 958 959 const TransformOperations* firstVal = &m_blendingKeyframes[firstNonEmptyTransformKeyframeIndex].style()->transform(); 960 for (size_t i = firstNonEmptyTransformKeyframeIndex + 1; i < numKeyframes; ++i) { 961 const KeyframeValue& currentKeyframe = m_blendingKeyframes[i]; 962 const TransformOperations* val = ¤tKeyframe.style()->transform(); 963 964 // An empty transform list matches anything. 965 if (val->operations().isEmpty()) 966 continue; 967 968 if (!firstVal->operationsMatch(*val)) 941 Vector<TransformOperation::OperationType> sharedPrimitives; 942 sharedPrimitives.reserveInitialCapacity(m_blendingKeyframes[0].style()->transform().operations().size()); 943 944 for (const auto& keyframe : m_blendingKeyframes) { 945 if (!keyframe.style()->transform().updateSharedPrimitives(sharedPrimitives)) 969 946 return; 970 947 } -
trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp
r289032 r289732 734 734 sharedPrimitives.reserveInitialCapacity(operationsAt(valueList, 0).size()); 735 735 736 // Find a list of transform primitives for the given TransformOperations which are compatible with the primitives737 // stored in sharedPrimitives. The results are written back into sharedPrimitives. This returns false if any element738 // of TransformOperation does not have a shared primitive, otherwise it returns true.739 auto updateSharedPrimitives = [&](const TransformOperations& operations) {740 // Empty transform lists are implicitly a list of identity transforms.741 if (!operations.size())742 return true;743 744 // If we have seen a non-empty list already and this list's size doesn't match, then we can't use shared745 // primitives. FIXME: This should handle prefix matches and then fall back to matrix interpolation for the rest746 // of the list.747 // See: https://bugs.webkit.org/show_bug.cgi?id=235757748 if (sharedPrimitives.size() && sharedPrimitives.size() != operations.size())749 return false;750 751 for (size_t i = 0; i < operations.size(); ++i) {752 const auto* operation = operations.at(i);753 754 // If we haven't seen an operation at this index before, we can simply use our primitive type.755 if (i >= sharedPrimitives.size()) {756 ASSERT(i == sharedPrimitives.size());757 sharedPrimitives.append(operation->primitiveType());758 continue;759 }760 761 if (auto sharedPrimitive = operation->sharedPrimitiveType(sharedPrimitives[i]))762 sharedPrimitives[i] = *sharedPrimitive;763 else764 return false;765 }766 767 return true;768 };769 770 736 for (size_t i = 0; i < valueList.size(); ++i) { 771 const TransformOperations& operations = operationsAt(valueList, i); 772 if (!updateSharedPrimitives(operations)) 737 if (!operationsAt(valueList, i).updateSharedPrimitives(sharedPrimitives)) 773 738 return false; 774 739 } -
trunk/Source/WebCore/platform/graphics/transforms/TransformOperations.cpp
r289599 r289732 53 53 bool TransformOperations::operationsMatch(const TransformOperations& other) const 54 54 { 55 size_t numOperations = operations().size(); 56 // If the sizes of the function lists don't match, the lists don't match 57 if (numOperations != other.operations().size()) 58 return false; 59 60 // If the types of each function are not the same, the lists don't match 61 for (size_t i = 0; i < numOperations; ++i) { 55 // If functions at the same index don't share a blending primitive, the lists don't match. 56 // When the lists are different sizes, the missing functions in the shorter list are treated 57 // as identity functions. 58 size_t minimumLength = std::min(operations().size(), other.operations().size()); 59 for (size_t i = 0; i < minimumLength; ++i) { 62 60 if (!operations()[i]->sharedPrimitiveType(other.operations()[i].get())) 63 61 return false; 64 62 } 63 return true; 64 } 65 66 bool TransformOperations::updateSharedPrimitives(Vector<TransformOperation::OperationType>& sharedPrimitives) const 67 { 68 for (size_t i = 0; i < operations().size(); ++i) { 69 const auto* operation = at(i); 70 71 // If we haven't seen an operation at this index before, we can simply use our primitive type. 72 if (i >= sharedPrimitives.size()) { 73 ASSERT(i == sharedPrimitives.size()); 74 sharedPrimitives.append(operation->primitiveType()); 75 continue; 76 } 77 78 if (auto sharedPrimitive = operation->sharedPrimitiveType(sharedPrimitives[i])) 79 sharedPrimitives[i] = *sharedPrimitive; 80 else { 81 // FIXME: This should handle prefix matches and then fall back to matrix interpolation for the rest 82 // of the list. See: https://bugs.webkit.org/show_bug.cgi?id=235757 83 return false; 84 } 85 } 86 65 87 return true; 66 88 } … … 91 113 if (fromOperation && toOperation && !fromOperation->sharedPrimitiveType(toOperation.get())) 92 114 return blendByUsingMatrixInterpolation(from, context, boxSize); 93 RefPtr<TransformOperation> blendedOperation = toOperation ? toOperation->blend(fromOperation.get(), context) : (fromOperation ? RefPtr<TransformOperation>(fromOperation->blend(nullptr, context, true)) : nullptr); 94 if (blendedOperation) 95 result.operations().append(blendedOperation); 96 else { 97 auto identityOperation = IdentityTransformOperation::create(); 98 if (context.progress > 0.5) 99 result.operations().append(toOperation ? toOperation : WTFMove(identityOperation)); 100 else 101 result.operations().append(fromOperation ? fromOperation : WTFMove(identityOperation)); 102 } 115 116 RefPtr<TransformOperation> blendedOperation; 117 if (fromOperation && toOperation) 118 blendedOperation = toOperation->blend(fromOperation.get(), context); 119 else if (!fromOperation) 120 blendedOperation = toOperation->blend(nullptr, 1 - context.progress, true); 121 else if (!toOperation) 122 blendedOperation = fromOperation->blend(nullptr, context, true); 123 124 // We should have exited early above if the fromOperation and toOperation didn't share a transform 125 // function primitive, so blending the two operations should always yield a result. 126 ASSERT(blendedOperation); 127 result.operations().append(blendedOperation); 103 128 } 104 129 -
trunk/Source/WebCore/platform/graphics/transforms/TransformOperations.h
r289599 r289732 72 72 73 73 bool operationsMatch(const TransformOperations&) const; 74 75 // Find a list of transform primitives for the given TransformOperations which are compatible with the primitives 76 // stored in sharedPrimitives. The results are written back into sharedPrimitives. This returns false if any element 77 // of TransformOperation does not have a shared primitive, otherwise it returns true. 78 bool updateSharedPrimitives(Vector<TransformOperation::OperationType>& sharedPrimitives) const; 74 79 75 80 void clear()
Note: See TracChangeset
for help on using the changeset viewer.