Title: [287815] trunk
Revision
287815
Author
[email protected]
Date
2022-01-08 15:40:38 -0800 (Sat, 08 Jan 2022)

Log Message

Fix some CSS filter interpolation issues
https://bugs.webkit.org/show_bug.cgi?id=235007

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

More passing now.

* web-platform-tests/css/filter-effects/animation/filter-interpolation-002-expected.txt:
* web-platform-tests/css/filter-effects/animation/filter-interpolation-003-expected.txt:
* web-platform-tests/css/filter-effects/animation/filter-interpolation-004-expected.txt:

Source/WebCore:

Ensure that filter values are clamped after animation according to
https://drafts.fxtf.org/filter-effects-1/.

Tested by WPT.

* platform/graphics/filters/FilterOperation.cpp:
(WebCore::BasicColorMatrixFilterOperation::blend):
(WebCore::BasicComponentTransferFilterOperation::blend):
(WebCore::BlurFilterOperation::blend):
(WebCore::DropShadowFilterOperation::blend):

LayoutTests:

imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-004.html no longer asserts.

* TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (287814 => 287815)


--- trunk/LayoutTests/ChangeLog	2022-01-08 22:12:16 UTC (rev 287814)
+++ trunk/LayoutTests/ChangeLog	2022-01-08 23:40:38 UTC (rev 287815)
@@ -1,3 +1,14 @@
+2022-01-08  Simon Fraser  <[email protected]>
+
+        Fix some CSS filter interpolation issues
+        https://bugs.webkit.org/show_bug.cgi?id=235007
+
+        Reviewed by Antoine Quint.
+
+        imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-004.html no longer asserts.
+
+        * TestExpectations:
+
 2022-01-07  Simon Fraser  <[email protected]>
 
         Import css/filter-effects web platform tests

Modified: trunk/LayoutTests/TestExpectations (287814 => 287815)


--- trunk/LayoutTests/TestExpectations	2022-01-08 22:12:16 UTC (rev 287814)
+++ trunk/LayoutTests/TestExpectations	2022-01-08 23:40:38 UTC (rev 287815)
@@ -5046,7 +5046,6 @@
 
 # css/filter-effects
 webkit.org/b/235000 [ Debug ] imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-003.html [ Skip ]
-webkit.org/b/235000 [ Debug ] imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-004.html [ Skip ]
 
 imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-basic-background-color.html [ ImageOnlyFailure ]
 imported/w3c/web-platform-tests/css/filter-effects/backdrop-filter-basic-opacity-2.html [ ImageOnlyFailure ]
@@ -5077,7 +5076,6 @@
 imported/w3c/web-platform-tests/css/filter-effects/css-filters-animation-combined-001.html [ ImageOnlyFailure ]
 imported/w3c/web-platform-tests/css/filter-effects/css-filters-animation-contrast.html [ ImageOnlyFailure ]
 imported/w3c/web-platform-tests/css/filter-effects/css-filters-animation-invert.html [ ImageOnlyFailure ]
-
 imported/w3c/web-platform-tests/css/filter-effects/drop-shadow-clipped-001.html [ ImageOnlyFailure ]
 imported/w3c/web-platform-tests/css/filter-effects/effect-reference-after-001.html [ ImageOnlyFailure ]
 imported/w3c/web-platform-tests/css/filter-effects/effect-reference-delete.html [ ImageOnlyFailure ]

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (287814 => 287815)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2022-01-08 22:12:16 UTC (rev 287814)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2022-01-08 23:40:38 UTC (rev 287815)
@@ -1,3 +1,16 @@
+2022-01-08  Simon Fraser  <[email protected]>
+
+        Fix some CSS filter interpolation issues
+        https://bugs.webkit.org/show_bug.cgi?id=235007
+
+        Reviewed by Antoine Quint.
+
+        More passing now.
+
+        * web-platform-tests/css/filter-effects/animation/filter-interpolation-002-expected.txt:
+        * web-platform-tests/css/filter-effects/animation/filter-interpolation-003-expected.txt:
+        * web-platform-tests/css/filter-effects/animation/filter-interpolation-004-expected.txt:
+
 2022-01-07  Simon Fraser  <[email protected]>
 
         Import css/filter-effects web platform tests

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-002-expected.txt (287814 => 287815)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-002-expected.txt	2022-01-08 22:12:16 UTC (rev 287814)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-002-expected.txt	2022-01-08 23:40:38 UTC (rev 287815)
@@ -1,23 +1,23 @@
 
-FAIL CSS Transitions: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (-0.5) should be [opacity(1) hue-rotate(-90deg)] assert_equals: expected "opacity ( 1 ) hue - rotate ( - 90deg ) " but got "opacity ( 1.25 ) hue - rotate ( - 90deg ) "
+PASS CSS Transitions: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (-0.5) should be [opacity(1) hue-rotate(-90deg)]
 PASS CSS Transitions: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0) should be [opacity(1) hue-rotate(0deg)]
 PASS CSS Transitions: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0.25) should be [opacity(0.875) hue-rotate(45deg)]
 PASS CSS Transitions: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0.5) should be [opacity(0.75) hue-rotate(90deg)]
 PASS CSS Transitions: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (1) should be [opacity(0.5) hue-rotate(180deg)]
 PASS CSS Transitions: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (1.5) should be [opacity(0.25) hue-rotate(270deg)]
-FAIL CSS Transitions with transition: all: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (-0.5) should be [opacity(1) hue-rotate(-90deg)] assert_equals: expected "opacity ( 1 ) hue - rotate ( - 90deg ) " but got "opacity ( 1.25 ) hue - rotate ( - 90deg ) "
+PASS CSS Transitions with transition: all: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (-0.5) should be [opacity(1) hue-rotate(-90deg)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0) should be [opacity(1) hue-rotate(0deg)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0.25) should be [opacity(0.875) hue-rotate(45deg)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0.5) should be [opacity(0.75) hue-rotate(90deg)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (1) should be [opacity(0.5) hue-rotate(180deg)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (1.5) should be [opacity(0.25) hue-rotate(270deg)]
-FAIL CSS Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (-0.5) should be [opacity(1) hue-rotate(-90deg)] assert_equals: expected "opacity ( 1 ) hue - rotate ( - 90deg ) " but got "opacity ( 1.25 ) hue - rotate ( - 90deg ) "
+PASS CSS Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (-0.5) should be [opacity(1) hue-rotate(-90deg)]
 PASS CSS Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0) should be [opacity(1) hue-rotate(0deg)]
 PASS CSS Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0.25) should be [opacity(0.875) hue-rotate(45deg)]
 PASS CSS Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0.5) should be [opacity(0.75) hue-rotate(90deg)]
 PASS CSS Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (1) should be [opacity(0.5) hue-rotate(180deg)]
 PASS CSS Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (1.5) should be [opacity(0.25) hue-rotate(270deg)]
-FAIL Web Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (-0.5) should be [opacity(1) hue-rotate(-90deg)] assert_equals: expected "opacity ( 1 ) hue - rotate ( - 90deg ) " but got "opacity ( 1.25 ) hue - rotate ( - 90deg ) "
+PASS Web Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (-0.5) should be [opacity(1) hue-rotate(-90deg)]
 PASS Web Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0) should be [opacity(1) hue-rotate(0deg)]
 PASS Web Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0.25) should be [opacity(0.875) hue-rotate(45deg)]
 PASS Web Animations: property <filter> from [none] to [opacity(0.5) hue-rotate(180deg)] at (0.5) should be [opacity(0.75) hue-rotate(90deg)]

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-003-expected.txt (287814 => 287815)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-003-expected.txt	2022-01-08 22:12:16 UTC (rev 287814)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-003-expected.txt	2022-01-08 23:40:38 UTC (rev 287815)
@@ -1,20 +1,20 @@
 
-FAIL CSS Transitions: property <filter> from [none] to [blur(10px)] at (-1) should be [blur(0px)] assert_equals: expected "blur ( 0px ) " but got "blur ( - 10px ) "
+PASS CSS Transitions: property <filter> from [none] to [blur(10px)] at (-1) should be [blur(0px)]
 PASS CSS Transitions: property <filter> from [none] to [blur(10px)] at (0) should be [blur(0px)]
 PASS CSS Transitions: property <filter> from [none] to [blur(10px)] at (0.5) should be [blur(5px)]
 PASS CSS Transitions: property <filter> from [none] to [blur(10px)] at (1) should be [blur(10px)]
 PASS CSS Transitions: property <filter> from [none] to [blur(10px)] at (1.5) should be [blur(15px)]
-FAIL CSS Transitions with transition: all: property <filter> from [none] to [blur(10px)] at (-1) should be [blur(0px)] assert_equals: expected "blur ( 0px ) " but got "blur ( - 10px ) "
+PASS CSS Transitions with transition: all: property <filter> from [none] to [blur(10px)] at (-1) should be [blur(0px)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [blur(10px)] at (0) should be [blur(0px)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [blur(10px)] at (0.5) should be [blur(5px)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [blur(10px)] at (1) should be [blur(10px)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [blur(10px)] at (1.5) should be [blur(15px)]
-FAIL CSS Animations: property <filter> from [none] to [blur(10px)] at (-1) should be [blur(0px)] assert_equals: expected "blur ( 0px ) " but got "blur ( - 10px ) "
+PASS CSS Animations: property <filter> from [none] to [blur(10px)] at (-1) should be [blur(0px)]
 PASS CSS Animations: property <filter> from [none] to [blur(10px)] at (0) should be [blur(0px)]
 PASS CSS Animations: property <filter> from [none] to [blur(10px)] at (0.5) should be [blur(5px)]
 PASS CSS Animations: property <filter> from [none] to [blur(10px)] at (1) should be [blur(10px)]
 PASS CSS Animations: property <filter> from [none] to [blur(10px)] at (1.5) should be [blur(15px)]
-FAIL Web Animations: property <filter> from [none] to [blur(10px)] at (-1) should be [blur(0px)] assert_equals: expected "blur ( 0px ) " but got "blur ( - 10px ) "
+PASS Web Animations: property <filter> from [none] to [blur(10px)] at (-1) should be [blur(0px)]
 PASS Web Animations: property <filter> from [none] to [blur(10px)] at (0) should be [blur(0px)]
 PASS Web Animations: property <filter> from [none] to [blur(10px)] at (0.5) should be [blur(5px)]
 PASS Web Animations: property <filter> from [none] to [blur(10px)] at (1) should be [blur(10px)]
@@ -79,26 +79,26 @@
 PASS Web Animations: property <filter> from [none] to [drop-shadow(20px 10px green)] at (0.5) should be [drop-shadow(10px 5px rgba(0, 128, 0, 0.5))]
 PASS Web Animations: property <filter> from [none] to [drop-shadow(20px 10px green)] at (1) should be [drop-shadow(20px 10px green)]
 PASS Web Animations: property <filter> from [none] to [drop-shadow(20px 10px green)] at (1.5) should be [drop-shadow(30px 15px #00C000)]
-FAIL CSS Transitions: property <filter> from [none] to [grayscale(1)] at (-1) should be [grayscale(0)] assert_equals: expected "grayscale ( 0 ) " but got "grayscale ( - 1 ) "
+PASS CSS Transitions: property <filter> from [none] to [grayscale(1)] at (-1) should be [grayscale(0)]
 PASS CSS Transitions: property <filter> from [none] to [grayscale(1)] at (0) should be [grayscale(0)]
 PASS CSS Transitions: property <filter> from [none] to [grayscale(1)] at (0.5) should be [grayscale(0.5)]
 PASS CSS Transitions: property <filter> from [none] to [grayscale(1)] at (1) should be [grayscale(1)]
-FAIL CSS Transitions: property <filter> from [none] to [grayscale(1)] at (1.5) should be [grayscale(1)] assert_equals: expected "grayscale ( 1 ) " but got "grayscale ( 1.5 ) "
-FAIL CSS Transitions with transition: all: property <filter> from [none] to [grayscale(1)] at (-1) should be [grayscale(0)] assert_equals: expected "grayscale ( 0 ) " but got "grayscale ( - 1 ) "
+PASS CSS Transitions: property <filter> from [none] to [grayscale(1)] at (1.5) should be [grayscale(1)]
+PASS CSS Transitions with transition: all: property <filter> from [none] to [grayscale(1)] at (-1) should be [grayscale(0)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [grayscale(1)] at (0) should be [grayscale(0)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [grayscale(1)] at (0.5) should be [grayscale(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [grayscale(1)] at (1) should be [grayscale(1)]
-FAIL CSS Transitions with transition: all: property <filter> from [none] to [grayscale(1)] at (1.5) should be [grayscale(1)] assert_equals: expected "grayscale ( 1 ) " but got "grayscale ( 1.5 ) "
-FAIL CSS Animations: property <filter> from [none] to [grayscale(1)] at (-1) should be [grayscale(0)] assert_equals: expected "grayscale ( 0 ) " but got "grayscale ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [none] to [grayscale(1)] at (1.5) should be [grayscale(1)]
+PASS CSS Animations: property <filter> from [none] to [grayscale(1)] at (-1) should be [grayscale(0)]
 PASS CSS Animations: property <filter> from [none] to [grayscale(1)] at (0) should be [grayscale(0)]
 PASS CSS Animations: property <filter> from [none] to [grayscale(1)] at (0.5) should be [grayscale(0.5)]
 PASS CSS Animations: property <filter> from [none] to [grayscale(1)] at (1) should be [grayscale(1)]
-FAIL CSS Animations: property <filter> from [none] to [grayscale(1)] at (1.5) should be [grayscale(1)] assert_equals: expected "grayscale ( 1 ) " but got "grayscale ( 1.5 ) "
-FAIL Web Animations: property <filter> from [none] to [grayscale(1)] at (-1) should be [grayscale(0)] assert_equals: expected "grayscale ( 0 ) " but got "grayscale ( - 1 ) "
+PASS CSS Animations: property <filter> from [none] to [grayscale(1)] at (1.5) should be [grayscale(1)]
+PASS Web Animations: property <filter> from [none] to [grayscale(1)] at (-1) should be [grayscale(0)]
 PASS Web Animations: property <filter> from [none] to [grayscale(1)] at (0) should be [grayscale(0)]
 PASS Web Animations: property <filter> from [none] to [grayscale(1)] at (0.5) should be [grayscale(0.5)]
 PASS Web Animations: property <filter> from [none] to [grayscale(1)] at (1) should be [grayscale(1)]
-FAIL Web Animations: property <filter> from [none] to [grayscale(1)] at (1.5) should be [grayscale(1)] assert_equals: expected "grayscale ( 1 ) " but got "grayscale ( 1.5 ) "
+PASS Web Animations: property <filter> from [none] to [grayscale(1)] at (1.5) should be [grayscale(1)]
 PASS CSS Transitions: property <filter> from [none] to [hue-rotate(360deg)] at (-1) should be [hue-rotate(-360deg)]
 PASS CSS Transitions: property <filter> from [none] to [hue-rotate(360deg)] at (0) should be [hue-rotate(0deg)]
 PASS CSS Transitions: property <filter> from [none] to [hue-rotate(360deg)] at (0.5) should be [hue-rotate(180deg)]
@@ -119,26 +119,26 @@
 PASS Web Animations: property <filter> from [none] to [hue-rotate(360deg)] at (0.5) should be [hue-rotate(180deg)]
 PASS Web Animations: property <filter> from [none] to [hue-rotate(360deg)] at (1) should be [hue-rotate(360deg)]
 PASS Web Animations: property <filter> from [none] to [hue-rotate(360deg)] at (1.5) should be [hue-rotate(540deg)]
-FAIL CSS Transitions: property <filter> from [none] to [invert(1)] at (-1) should be [invert(0)] assert_equals: expected "invert ( 0 ) " but got "invert ( - 1 ) "
+PASS CSS Transitions: property <filter> from [none] to [invert(1)] at (-1) should be [invert(0)]
 PASS CSS Transitions: property <filter> from [none] to [invert(1)] at (0) should be [invert(0)]
 PASS CSS Transitions: property <filter> from [none] to [invert(1)] at (0.5) should be [invert(0.5)]
 PASS CSS Transitions: property <filter> from [none] to [invert(1)] at (1) should be [invert(1)]
-FAIL CSS Transitions: property <filter> from [none] to [invert(1)] at (1.5) should be [invert(1)] assert_equals: expected "invert ( 1 ) " but got "invert ( 1.5 ) "
-FAIL CSS Transitions with transition: all: property <filter> from [none] to [invert(1)] at (-1) should be [invert(0)] assert_equals: expected "invert ( 0 ) " but got "invert ( - 1 ) "
+PASS CSS Transitions: property <filter> from [none] to [invert(1)] at (1.5) should be [invert(1)]
+PASS CSS Transitions with transition: all: property <filter> from [none] to [invert(1)] at (-1) should be [invert(0)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [invert(1)] at (0) should be [invert(0)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [invert(1)] at (0.5) should be [invert(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [invert(1)] at (1) should be [invert(1)]
-FAIL CSS Transitions with transition: all: property <filter> from [none] to [invert(1)] at (1.5) should be [invert(1)] assert_equals: expected "invert ( 1 ) " but got "invert ( 1.5 ) "
-FAIL CSS Animations: property <filter> from [none] to [invert(1)] at (-1) should be [invert(0)] assert_equals: expected "invert ( 0 ) " but got "invert ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [none] to [invert(1)] at (1.5) should be [invert(1)]
+PASS CSS Animations: property <filter> from [none] to [invert(1)] at (-1) should be [invert(0)]
 PASS CSS Animations: property <filter> from [none] to [invert(1)] at (0) should be [invert(0)]
 PASS CSS Animations: property <filter> from [none] to [invert(1)] at (0.5) should be [invert(0.5)]
 PASS CSS Animations: property <filter> from [none] to [invert(1)] at (1) should be [invert(1)]
-FAIL CSS Animations: property <filter> from [none] to [invert(1)] at (1.5) should be [invert(1)] assert_equals: expected "invert ( 1 ) " but got "invert ( 1.5 ) "
-FAIL Web Animations: property <filter> from [none] to [invert(1)] at (-1) should be [invert(0)] assert_equals: expected "invert ( 0 ) " but got "invert ( - 1 ) "
+PASS CSS Animations: property <filter> from [none] to [invert(1)] at (1.5) should be [invert(1)]
+PASS Web Animations: property <filter> from [none] to [invert(1)] at (-1) should be [invert(0)]
 PASS Web Animations: property <filter> from [none] to [invert(1)] at (0) should be [invert(0)]
 PASS Web Animations: property <filter> from [none] to [invert(1)] at (0.5) should be [invert(0.5)]
 PASS Web Animations: property <filter> from [none] to [invert(1)] at (1) should be [invert(1)]
-FAIL Web Animations: property <filter> from [none] to [invert(1)] at (1.5) should be [invert(1)] assert_equals: expected "invert ( 1 ) " but got "invert ( 1.5 ) "
+PASS Web Animations: property <filter> from [none] to [invert(1)] at (1.5) should be [invert(1)]
 FAIL CSS Transitions: property <filter> from [opacity(0)] to [none] at (-1) should be [opacity(0)] assert_equals: expected "opacity ( 0 ) " but got "opacity ( - 1 ) "
 PASS CSS Transitions: property <filter> from [opacity(0)] to [none] at (0) should be [opacity(0)]
 PASS CSS Transitions: property <filter> from [opacity(0)] to [none] at (0.5) should be [opacity(0.5)]
@@ -179,26 +179,26 @@
 PASS Web Animations: property <filter> from [saturate(0)] to [none] at (0.5) should be [saturate(0.5)]
 PASS Web Animations: property <filter> from [saturate(0)] to [none] at (1) should be [saturate(1)]
 PASS Web Animations: property <filter> from [saturate(0)] to [none] at (1.5) should be [saturate(1.5)]
-FAIL CSS Transitions: property <filter> from [none] to [sepia(1)] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Transitions: property <filter> from [none] to [sepia(1)] at (-1) should be [sepia(0)]
 PASS CSS Transitions: property <filter> from [none] to [sepia(1)] at (0) should be [sepia(0)]
 PASS CSS Transitions: property <filter> from [none] to [sepia(1)] at (0.5) should be [sepia(0.5)]
 PASS CSS Transitions: property <filter> from [none] to [sepia(1)] at (1) should be [sepia(1)]
-FAIL CSS Transitions: property <filter> from [none] to [sepia(1)] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
-FAIL CSS Transitions with transition: all: property <filter> from [none] to [sepia(1)] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Transitions: property <filter> from [none] to [sepia(1)] at (1.5) should be [sepia(1)]
+PASS CSS Transitions with transition: all: property <filter> from [none] to [sepia(1)] at (-1) should be [sepia(0)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [sepia(1)] at (0) should be [sepia(0)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [sepia(1)] at (0.5) should be [sepia(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [none] to [sepia(1)] at (1) should be [sepia(1)]
-FAIL CSS Transitions with transition: all: property <filter> from [none] to [sepia(1)] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
-FAIL CSS Animations: property <filter> from [none] to [sepia(1)] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [none] to [sepia(1)] at (1.5) should be [sepia(1)]
+PASS CSS Animations: property <filter> from [none] to [sepia(1)] at (-1) should be [sepia(0)]
 PASS CSS Animations: property <filter> from [none] to [sepia(1)] at (0) should be [sepia(0)]
 PASS CSS Animations: property <filter> from [none] to [sepia(1)] at (0.5) should be [sepia(0.5)]
 PASS CSS Animations: property <filter> from [none] to [sepia(1)] at (1) should be [sepia(1)]
-FAIL CSS Animations: property <filter> from [none] to [sepia(1)] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
-FAIL Web Animations: property <filter> from [none] to [sepia(1)] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Animations: property <filter> from [none] to [sepia(1)] at (1.5) should be [sepia(1)]
+PASS Web Animations: property <filter> from [none] to [sepia(1)] at (-1) should be [sepia(0)]
 PASS Web Animations: property <filter> from [none] to [sepia(1)] at (0) should be [sepia(0)]
 PASS Web Animations: property <filter> from [none] to [sepia(1)] at (0.5) should be [sepia(0.5)]
 PASS Web Animations: property <filter> from [none] to [sepia(1)] at (1) should be [sepia(1)]
-FAIL Web Animations: property <filter> from [none] to [sepia(1)] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
+PASS Web Animations: property <filter> from [none] to [sepia(1)] at (1.5) should be [sepia(1)]
 FAIL CSS Transitions: property <filter> from [url("#svgfilter")] to [none] at (-0.3) should be [none] assert_equals: expected "none " but got "url ( \" # svgfilter \" ) "
 FAIL CSS Transitions: property <filter> from [url("#svgfilter")] to [none] at (0) should be [none] assert_equals: expected "none " but got "url ( \" # svgfilter \" ) "
 FAIL CSS Transitions: property <filter> from [url("#svgfilter")] to [none] at (0.3) should be [none] assert_equals: expected "none " but got "url ( \" # svgfilter \" ) "
@@ -255,24 +255,24 @@
 PASS Web Animations: property <filter> from [url("#svgfilter")] to [blur(5px)] at (0.6) should be [blur(5px)]
 PASS Web Animations: property <filter> from [url("#svgfilter")] to [blur(5px)] at (1) should be [blur(5px)]
 PASS Web Animations: property <filter> from [url("#svgfilter")] to [blur(5px)] at (1.5) should be [blur(5px)]
-FAIL CSS Transitions: property <filter> from [initial] to [sepia(1)] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Transitions: property <filter> from [initial] to [sepia(1)] at (-1) should be [sepia(0)]
 PASS CSS Transitions: property <filter> from [initial] to [sepia(1)] at (0) should be [sepia(0)]
 PASS CSS Transitions: property <filter> from [initial] to [sepia(1)] at (0.5) should be [sepia(0.5)]
 PASS CSS Transitions: property <filter> from [initial] to [sepia(1)] at (1) should be [sepia(1)]
-FAIL CSS Transitions: property <filter> from [initial] to [sepia(1)] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
-FAIL CSS Transitions with transition: all: property <filter> from [initial] to [sepia(1)] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Transitions: property <filter> from [initial] to [sepia(1)] at (1.5) should be [sepia(1)]
+PASS CSS Transitions with transition: all: property <filter> from [initial] to [sepia(1)] at (-1) should be [sepia(0)]
 PASS CSS Transitions with transition: all: property <filter> from [initial] to [sepia(1)] at (0) should be [sepia(0)]
 PASS CSS Transitions with transition: all: property <filter> from [initial] to [sepia(1)] at (0.5) should be [sepia(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [initial] to [sepia(1)] at (1) should be [sepia(1)]
-FAIL CSS Transitions with transition: all: property <filter> from [initial] to [sepia(1)] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
-FAIL CSS Animations: property <filter> from [initial] to [sepia(1)] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [initial] to [sepia(1)] at (1.5) should be [sepia(1)]
+PASS CSS Animations: property <filter> from [initial] to [sepia(1)] at (-1) should be [sepia(0)]
 PASS CSS Animations: property <filter> from [initial] to [sepia(1)] at (0) should be [sepia(0)]
 PASS CSS Animations: property <filter> from [initial] to [sepia(1)] at (0.5) should be [sepia(0.5)]
 PASS CSS Animations: property <filter> from [initial] to [sepia(1)] at (1) should be [sepia(1)]
-FAIL CSS Animations: property <filter> from [initial] to [sepia(1)] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
-FAIL Web Animations: property <filter> from [initial] to [sepia(1)] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Animations: property <filter> from [initial] to [sepia(1)] at (1.5) should be [sepia(1)]
+PASS Web Animations: property <filter> from [initial] to [sepia(1)] at (-1) should be [sepia(0)]
 PASS Web Animations: property <filter> from [initial] to [sepia(1)] at (0) should be [sepia(0)]
 PASS Web Animations: property <filter> from [initial] to [sepia(1)] at (0.5) should be [sepia(0.5)]
 PASS Web Animations: property <filter> from [initial] to [sepia(1)] at (1) should be [sepia(1)]
-FAIL Web Animations: property <filter> from [initial] to [sepia(1)] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
+PASS Web Animations: property <filter> from [initial] to [sepia(1)] at (1.5) should be [sepia(1)]
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-004-expected.txt (287814 => 287815)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-004-expected.txt	2022-01-08 22:12:16 UTC (rev 287814)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/animation/filter-interpolation-004-expected.txt	2022-01-08 23:40:38 UTC (rev 287815)
@@ -1,104 +1,104 @@
 
-FAIL CSS Transitions: property <filter> from [blur()] to [blur(10px)] at (-1) should be [blur(0px)] assert_equals: expected "blur ( 0px ) " but got "blur ( - 10px ) "
+PASS CSS Transitions: property <filter> from [blur()] to [blur(10px)] at (-1) should be [blur(0px)]
 PASS CSS Transitions: property <filter> from [blur()] to [blur(10px)] at (0) should be [blur()]
 PASS CSS Transitions: property <filter> from [blur()] to [blur(10px)] at (0.5) should be [blur(5px)]
 PASS CSS Transitions: property <filter> from [blur()] to [blur(10px)] at (1) should be [blur(10px)]
 PASS CSS Transitions: property <filter> from [blur()] to [blur(10px)] at (1.5) should be [blur(15px)]
-FAIL CSS Transitions with transition: all: property <filter> from [blur()] to [blur(10px)] at (-1) should be [blur(0px)] assert_equals: expected "blur ( 0px ) " but got "blur ( - 10px ) "
+PASS CSS Transitions with transition: all: property <filter> from [blur()] to [blur(10px)] at (-1) should be [blur(0px)]
 PASS CSS Transitions with transition: all: property <filter> from [blur()] to [blur(10px)] at (0) should be [blur()]
 PASS CSS Transitions with transition: all: property <filter> from [blur()] to [blur(10px)] at (0.5) should be [blur(5px)]
 PASS CSS Transitions with transition: all: property <filter> from [blur()] to [blur(10px)] at (1) should be [blur(10px)]
 PASS CSS Transitions with transition: all: property <filter> from [blur()] to [blur(10px)] at (1.5) should be [blur(15px)]
-FAIL CSS Animations: property <filter> from [blur()] to [blur(10px)] at (-1) should be [blur(0px)] assert_equals: expected "blur ( 0px ) " but got "blur ( - 10px ) "
+PASS CSS Animations: property <filter> from [blur()] to [blur(10px)] at (-1) should be [blur(0px)]
 PASS CSS Animations: property <filter> from [blur()] to [blur(10px)] at (0) should be [blur()]
 PASS CSS Animations: property <filter> from [blur()] to [blur(10px)] at (0.5) should be [blur(5px)]
 PASS CSS Animations: property <filter> from [blur()] to [blur(10px)] at (1) should be [blur(10px)]
 PASS CSS Animations: property <filter> from [blur()] to [blur(10px)] at (1.5) should be [blur(15px)]
-FAIL Web Animations: property <filter> from [blur()] to [blur(10px)] at (-1) should be [blur(0px)] assert_equals: expected "blur ( 0px ) " but got "blur ( - 10px ) "
+PASS Web Animations: property <filter> from [blur()] to [blur(10px)] at (-1) should be [blur(0px)]
 PASS Web Animations: property <filter> from [blur()] to [blur(10px)] at (0) should be [blur()]
 PASS Web Animations: property <filter> from [blur()] to [blur(10px)] at (0.5) should be [blur(5px)]
 PASS Web Animations: property <filter> from [blur()] to [blur(10px)] at (1) should be [blur(10px)]
 PASS Web Animations: property <filter> from [blur()] to [blur(10px)] at (1.5) should be [blur(15px)]
-FAIL CSS Transitions: property <filter> from [brightness(0)] to [brightness()] at (-1) should be [brightness(0)] assert_equals: expected "brightness ( 0 ) " but got "brightness ( - 1 ) "
+PASS CSS Transitions: property <filter> from [brightness(0)] to [brightness()] at (-1) should be [brightness(0)]
 PASS CSS Transitions: property <filter> from [brightness(0)] to [brightness()] at (0) should be [brightness(0)]
 PASS CSS Transitions: property <filter> from [brightness(0)] to [brightness()] at (0.5) should be [brightness(0.5)]
 PASS CSS Transitions: property <filter> from [brightness(0)] to [brightness()] at (1) should be [brightness()]
 PASS CSS Transitions: property <filter> from [brightness(0)] to [brightness()] at (1.5) should be [brightness(1.5)]
-FAIL CSS Transitions with transition: all: property <filter> from [brightness(0)] to [brightness()] at (-1) should be [brightness(0)] assert_equals: expected "brightness ( 0 ) " but got "brightness ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [brightness(0)] to [brightness()] at (-1) should be [brightness(0)]
 PASS CSS Transitions with transition: all: property <filter> from [brightness(0)] to [brightness()] at (0) should be [brightness(0)]
 PASS CSS Transitions with transition: all: property <filter> from [brightness(0)] to [brightness()] at (0.5) should be [brightness(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [brightness(0)] to [brightness()] at (1) should be [brightness()]
 PASS CSS Transitions with transition: all: property <filter> from [brightness(0)] to [brightness()] at (1.5) should be [brightness(1.5)]
-FAIL CSS Animations: property <filter> from [brightness(0)] to [brightness()] at (-1) should be [brightness(0)] assert_equals: expected "brightness ( 0 ) " but got "brightness ( - 1 ) "
+PASS CSS Animations: property <filter> from [brightness(0)] to [brightness()] at (-1) should be [brightness(0)]
 PASS CSS Animations: property <filter> from [brightness(0)] to [brightness()] at (0) should be [brightness(0)]
 PASS CSS Animations: property <filter> from [brightness(0)] to [brightness()] at (0.5) should be [brightness(0.5)]
 PASS CSS Animations: property <filter> from [brightness(0)] to [brightness()] at (1) should be [brightness()]
 PASS CSS Animations: property <filter> from [brightness(0)] to [brightness()] at (1.5) should be [brightness(1.5)]
-FAIL Web Animations: property <filter> from [brightness(0)] to [brightness()] at (-1) should be [brightness(0)] assert_equals: expected "brightness ( 0 ) " but got "brightness ( - 1 ) "
+PASS Web Animations: property <filter> from [brightness(0)] to [brightness()] at (-1) should be [brightness(0)]
 PASS Web Animations: property <filter> from [brightness(0)] to [brightness()] at (0) should be [brightness(0)]
 PASS Web Animations: property <filter> from [brightness(0)] to [brightness()] at (0.5) should be [brightness(0.5)]
 PASS Web Animations: property <filter> from [brightness(0)] to [brightness()] at (1) should be [brightness()]
 PASS Web Animations: property <filter> from [brightness(0)] to [brightness()] at (1.5) should be [brightness(1.5)]
-FAIL CSS Transitions: property <filter> from [contrast(0)] to [contrast()] at (-1) should be [contrast(0)] assert_equals: expected "contrast ( 0 ) " but got "contrast ( - 1 ) "
+PASS CSS Transitions: property <filter> from [contrast(0)] to [contrast()] at (-1) should be [contrast(0)]
 PASS CSS Transitions: property <filter> from [contrast(0)] to [contrast()] at (0) should be [contrast(0)]
 PASS CSS Transitions: property <filter> from [contrast(0)] to [contrast()] at (0.5) should be [contrast(0.5)]
 PASS CSS Transitions: property <filter> from [contrast(0)] to [contrast()] at (1) should be [contrast()]
 PASS CSS Transitions: property <filter> from [contrast(0)] to [contrast()] at (1.5) should be [contrast(1.5)]
-FAIL CSS Transitions with transition: all: property <filter> from [contrast(0)] to [contrast()] at (-1) should be [contrast(0)] assert_equals: expected "contrast ( 0 ) " but got "contrast ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [contrast(0)] to [contrast()] at (-1) should be [contrast(0)]
 PASS CSS Transitions with transition: all: property <filter> from [contrast(0)] to [contrast()] at (0) should be [contrast(0)]
 PASS CSS Transitions with transition: all: property <filter> from [contrast(0)] to [contrast()] at (0.5) should be [contrast(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [contrast(0)] to [contrast()] at (1) should be [contrast()]
 PASS CSS Transitions with transition: all: property <filter> from [contrast(0)] to [contrast()] at (1.5) should be [contrast(1.5)]
-FAIL CSS Animations: property <filter> from [contrast(0)] to [contrast()] at (-1) should be [contrast(0)] assert_equals: expected "contrast ( 0 ) " but got "contrast ( - 1 ) "
+PASS CSS Animations: property <filter> from [contrast(0)] to [contrast()] at (-1) should be [contrast(0)]
 PASS CSS Animations: property <filter> from [contrast(0)] to [contrast()] at (0) should be [contrast(0)]
 PASS CSS Animations: property <filter> from [contrast(0)] to [contrast()] at (0.5) should be [contrast(0.5)]
 PASS CSS Animations: property <filter> from [contrast(0)] to [contrast()] at (1) should be [contrast()]
 PASS CSS Animations: property <filter> from [contrast(0)] to [contrast()] at (1.5) should be [contrast(1.5)]
-FAIL Web Animations: property <filter> from [contrast(0)] to [contrast()] at (-1) should be [contrast(0)] assert_equals: expected "contrast ( 0 ) " but got "contrast ( - 1 ) "
+PASS Web Animations: property <filter> from [contrast(0)] to [contrast()] at (-1) should be [contrast(0)]
 PASS Web Animations: property <filter> from [contrast(0)] to [contrast()] at (0) should be [contrast(0)]
 PASS Web Animations: property <filter> from [contrast(0)] to [contrast()] at (0.5) should be [contrast(0.5)]
 PASS Web Animations: property <filter> from [contrast(0)] to [contrast()] at (1) should be [contrast()]
 PASS Web Animations: property <filter> from [contrast(0)] to [contrast()] at (1.5) should be [contrast(1.5)]
-FAIL CSS Transitions: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (-1) should be [drop-shadow(-20px -10px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) - 20px - 10px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) - 20px - 10px - 30px ) "
+FAIL CSS Transitions: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (-1) should be [drop-shadow(-20px -10px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) - 20px - 10px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) - 20px - 10px 0px ) "
 FAIL CSS Transitions: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (0) should be [drop-shadow(0px 0px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) 0px 0px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) 0px 0px 0px ) "
 FAIL CSS Transitions: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))] assert_equals: expected "drop - shadow ( rgb ( 0 , 64 , 128 ) 10px 5px 15px ) " but got "drop - shadow ( rgba ( 0 , 128 , 0 , 0.5 ) 10px 5px 15px ) "
 PASS CSS Transitions: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (1) should be [drop-shadow(20px 10px 30px green)]
 PASS CSS Transitions: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))]
-FAIL CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (-1) should be [drop-shadow(-20px -10px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) - 20px - 10px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) - 20px - 10px - 30px ) "
+FAIL CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (-1) should be [drop-shadow(-20px -10px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) - 20px - 10px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) - 20px - 10px 0px ) "
 FAIL CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (0) should be [drop-shadow(0px 0px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) 0px 0px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) 0px 0px 0px ) "
 FAIL CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))] assert_equals: expected "drop - shadow ( rgb ( 0 , 64 , 128 ) 10px 5px 15px ) " but got "drop - shadow ( rgba ( 0 , 128 , 0 , 0.5 ) 10px 5px 15px ) "
 PASS CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (1) should be [drop-shadow(20px 10px 30px green)]
 PASS CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))]
-FAIL CSS Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (-1) should be [drop-shadow(-20px -10px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) - 20px - 10px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) - 20px - 10px - 30px ) "
+FAIL CSS Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (-1) should be [drop-shadow(-20px -10px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) - 20px - 10px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) - 20px - 10px 0px ) "
 FAIL CSS Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (0) should be [drop-shadow(0px 0px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) 0px 0px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) 0px 0px 0px ) "
 FAIL CSS Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))] assert_equals: expected "drop - shadow ( rgb ( 0 , 64 , 128 ) 10px 5px 15px ) " but got "drop - shadow ( rgba ( 0 , 128 , 0 , 0.5 ) 10px 5px 15px ) "
 PASS CSS Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (1) should be [drop-shadow(20px 10px 30px green)]
 PASS CSS Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))]
-FAIL Web Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (-1) should be [drop-shadow(-20px -10px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) - 20px - 10px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) - 20px - 10px - 30px ) "
+FAIL Web Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (-1) should be [drop-shadow(-20px -10px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) - 20px - 10px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) - 20px - 10px 0px ) "
 FAIL Web Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (0) should be [drop-shadow(0px 0px blue)] assert_equals: expected "drop - shadow ( rgb ( 0 , 0 , 255 ) 0px 0px 0px ) " but got "drop - shadow ( rgba ( 0 , 0 , 0 , 0 ) 0px 0px 0px ) "
 FAIL Web Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))] assert_equals: expected "drop - shadow ( rgb ( 0 , 64 , 128 ) 10px 5px 15px ) " but got "drop - shadow ( rgba ( 0 , 128 , 0 , 0.5 ) 10px 5px 15px ) "
 PASS Web Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (1) should be [drop-shadow(20px 10px 30px green)]
 PASS Web Animations: property <filter> from [drop-shadow(0px 0px)] to [drop-shadow(20px 10px 30px green)] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))]
-FAIL CSS Transitions: property <filter> from [grayscale(0)] to [grayscale()] at (-1) should be [grayscale(0)] assert_equals: expected "grayscale ( 0 ) " but got "grayscale ( - 1 ) "
+PASS CSS Transitions: property <filter> from [grayscale(0)] to [grayscale()] at (-1) should be [grayscale(0)]
 PASS CSS Transitions: property <filter> from [grayscale(0)] to [grayscale()] at (0) should be [grayscale(0)]
 PASS CSS Transitions: property <filter> from [grayscale(0)] to [grayscale()] at (0.5) should be [grayscale(0.5)]
 PASS CSS Transitions: property <filter> from [grayscale(0)] to [grayscale()] at (1) should be [grayscale()]
-FAIL CSS Transitions: property <filter> from [grayscale(0)] to [grayscale()] at (1.5) should be [grayscale(1)] assert_equals: expected "grayscale ( 1 ) " but got "grayscale ( 1.5 ) "
-FAIL CSS Transitions with transition: all: property <filter> from [grayscale(0)] to [grayscale()] at (-1) should be [grayscale(0)] assert_equals: expected "grayscale ( 0 ) " but got "grayscale ( - 1 ) "
+PASS CSS Transitions: property <filter> from [grayscale(0)] to [grayscale()] at (1.5) should be [grayscale(1)]
+PASS CSS Transitions with transition: all: property <filter> from [grayscale(0)] to [grayscale()] at (-1) should be [grayscale(0)]
 PASS CSS Transitions with transition: all: property <filter> from [grayscale(0)] to [grayscale()] at (0) should be [grayscale(0)]
 PASS CSS Transitions with transition: all: property <filter> from [grayscale(0)] to [grayscale()] at (0.5) should be [grayscale(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [grayscale(0)] to [grayscale()] at (1) should be [grayscale()]
-FAIL CSS Transitions with transition: all: property <filter> from [grayscale(0)] to [grayscale()] at (1.5) should be [grayscale(1)] assert_equals: expected "grayscale ( 1 ) " but got "grayscale ( 1.5 ) "
-FAIL CSS Animations: property <filter> from [grayscale(0)] to [grayscale()] at (-1) should be [grayscale(0)] assert_equals: expected "grayscale ( 0 ) " but got "grayscale ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [grayscale(0)] to [grayscale()] at (1.5) should be [grayscale(1)]
+PASS CSS Animations: property <filter> from [grayscale(0)] to [grayscale()] at (-1) should be [grayscale(0)]
 PASS CSS Animations: property <filter> from [grayscale(0)] to [grayscale()] at (0) should be [grayscale(0)]
 PASS CSS Animations: property <filter> from [grayscale(0)] to [grayscale()] at (0.5) should be [grayscale(0.5)]
 PASS CSS Animations: property <filter> from [grayscale(0)] to [grayscale()] at (1) should be [grayscale()]
-FAIL CSS Animations: property <filter> from [grayscale(0)] to [grayscale()] at (1.5) should be [grayscale(1)] assert_equals: expected "grayscale ( 1 ) " but got "grayscale ( 1.5 ) "
-FAIL Web Animations: property <filter> from [grayscale(0)] to [grayscale()] at (-1) should be [grayscale(0)] assert_equals: expected "grayscale ( 0 ) " but got "grayscale ( - 1 ) "
+PASS CSS Animations: property <filter> from [grayscale(0)] to [grayscale()] at (1.5) should be [grayscale(1)]
+PASS Web Animations: property <filter> from [grayscale(0)] to [grayscale()] at (-1) should be [grayscale(0)]
 PASS Web Animations: property <filter> from [grayscale(0)] to [grayscale()] at (0) should be [grayscale(0)]
 PASS Web Animations: property <filter> from [grayscale(0)] to [grayscale()] at (0.5) should be [grayscale(0.5)]
 PASS Web Animations: property <filter> from [grayscale(0)] to [grayscale()] at (1) should be [grayscale()]
-FAIL Web Animations: property <filter> from [grayscale(0)] to [grayscale()] at (1.5) should be [grayscale(1)] assert_equals: expected "grayscale ( 1 ) " but got "grayscale ( 1.5 ) "
+PASS Web Animations: property <filter> from [grayscale(0)] to [grayscale()] at (1.5) should be [grayscale(1)]
 PASS CSS Transitions: property <filter> from [hue-rotate()] to [hue-rotate(360deg)] at (-1) should be [hue-rotate(-360deg)]
 PASS CSS Transitions: property <filter> from [hue-rotate()] to [hue-rotate(360deg)] at (0) should be [hue-rotate()]
 PASS CSS Transitions: property <filter> from [hue-rotate()] to [hue-rotate(360deg)] at (0.5) should be [hue-rotate(180deg)]
@@ -119,84 +119,84 @@
 PASS Web Animations: property <filter> from [hue-rotate()] to [hue-rotate(360deg)] at (0.5) should be [hue-rotate(180deg)]
 PASS Web Animations: property <filter> from [hue-rotate()] to [hue-rotate(360deg)] at (1) should be [hue-rotate(360deg)]
 PASS Web Animations: property <filter> from [hue-rotate()] to [hue-rotate(360deg)] at (1.5) should be [hue-rotate(540deg)]
-FAIL CSS Transitions: property <filter> from [invert(0)] to [invert()] at (-1) should be [invert(0)] assert_equals: expected "invert ( 0 ) " but got "invert ( - 1 ) "
+PASS CSS Transitions: property <filter> from [invert(0)] to [invert()] at (-1) should be [invert(0)]
 PASS CSS Transitions: property <filter> from [invert(0)] to [invert()] at (0) should be [invert(0)]
 PASS CSS Transitions: property <filter> from [invert(0)] to [invert()] at (0.5) should be [invert(0.5)]
 PASS CSS Transitions: property <filter> from [invert(0)] to [invert()] at (1) should be [invert()]
-FAIL CSS Transitions: property <filter> from [invert(0)] to [invert()] at (1.5) should be [invert(1)] assert_equals: expected "invert ( 1 ) " but got "invert ( 1.5 ) "
-FAIL CSS Transitions with transition: all: property <filter> from [invert(0)] to [invert()] at (-1) should be [invert(0)] assert_equals: expected "invert ( 0 ) " but got "invert ( - 1 ) "
+PASS CSS Transitions: property <filter> from [invert(0)] to [invert()] at (1.5) should be [invert(1)]
+PASS CSS Transitions with transition: all: property <filter> from [invert(0)] to [invert()] at (-1) should be [invert(0)]
 PASS CSS Transitions with transition: all: property <filter> from [invert(0)] to [invert()] at (0) should be [invert(0)]
 PASS CSS Transitions with transition: all: property <filter> from [invert(0)] to [invert()] at (0.5) should be [invert(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [invert(0)] to [invert()] at (1) should be [invert()]
-FAIL CSS Transitions with transition: all: property <filter> from [invert(0)] to [invert()] at (1.5) should be [invert(1)] assert_equals: expected "invert ( 1 ) " but got "invert ( 1.5 ) "
-FAIL CSS Animations: property <filter> from [invert(0)] to [invert()] at (-1) should be [invert(0)] assert_equals: expected "invert ( 0 ) " but got "invert ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [invert(0)] to [invert()] at (1.5) should be [invert(1)]
+PASS CSS Animations: property <filter> from [invert(0)] to [invert()] at (-1) should be [invert(0)]
 PASS CSS Animations: property <filter> from [invert(0)] to [invert()] at (0) should be [invert(0)]
 PASS CSS Animations: property <filter> from [invert(0)] to [invert()] at (0.5) should be [invert(0.5)]
 PASS CSS Animations: property <filter> from [invert(0)] to [invert()] at (1) should be [invert()]
-FAIL CSS Animations: property <filter> from [invert(0)] to [invert()] at (1.5) should be [invert(1)] assert_equals: expected "invert ( 1 ) " but got "invert ( 1.5 ) "
-FAIL Web Animations: property <filter> from [invert(0)] to [invert()] at (-1) should be [invert(0)] assert_equals: expected "invert ( 0 ) " but got "invert ( - 1 ) "
+PASS CSS Animations: property <filter> from [invert(0)] to [invert()] at (1.5) should be [invert(1)]
+PASS Web Animations: property <filter> from [invert(0)] to [invert()] at (-1) should be [invert(0)]
 PASS Web Animations: property <filter> from [invert(0)] to [invert()] at (0) should be [invert(0)]
 PASS Web Animations: property <filter> from [invert(0)] to [invert()] at (0.5) should be [invert(0.5)]
 PASS Web Animations: property <filter> from [invert(0)] to [invert()] at (1) should be [invert()]
-FAIL Web Animations: property <filter> from [invert(0)] to [invert()] at (1.5) should be [invert(1)] assert_equals: expected "invert ( 1 ) " but got "invert ( 1.5 ) "
-FAIL CSS Transitions: property <filter> from [opacity(0)] to [opacity()] at (-1) should be [opacity(0)] assert_equals: expected "opacity ( 0 ) " but got "opacity ( - 1 ) "
+PASS Web Animations: property <filter> from [invert(0)] to [invert()] at (1.5) should be [invert(1)]
+PASS CSS Transitions: property <filter> from [opacity(0)] to [opacity()] at (-1) should be [opacity(0)]
 PASS CSS Transitions: property <filter> from [opacity(0)] to [opacity()] at (0) should be [opacity(0)]
 PASS CSS Transitions: property <filter> from [opacity(0)] to [opacity()] at (0.5) should be [opacity(0.5)]
 PASS CSS Transitions: property <filter> from [opacity(0)] to [opacity()] at (1) should be [opacity()]
-FAIL CSS Transitions: property <filter> from [opacity(0)] to [opacity()] at (1.5) should be [opacity(1)] assert_equals: expected "opacity ( 1 ) " but got "opacity ( 1.5 ) "
-FAIL CSS Transitions with transition: all: property <filter> from [opacity(0)] to [opacity()] at (-1) should be [opacity(0)] assert_equals: expected "opacity ( 0 ) " but got "opacity ( - 1 ) "
+PASS CSS Transitions: property <filter> from [opacity(0)] to [opacity()] at (1.5) should be [opacity(1)]
+PASS CSS Transitions with transition: all: property <filter> from [opacity(0)] to [opacity()] at (-1) should be [opacity(0)]
 PASS CSS Transitions with transition: all: property <filter> from [opacity(0)] to [opacity()] at (0) should be [opacity(0)]
 PASS CSS Transitions with transition: all: property <filter> from [opacity(0)] to [opacity()] at (0.5) should be [opacity(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [opacity(0)] to [opacity()] at (1) should be [opacity()]
-FAIL CSS Transitions with transition: all: property <filter> from [opacity(0)] to [opacity()] at (1.5) should be [opacity(1)] assert_equals: expected "opacity ( 1 ) " but got "opacity ( 1.5 ) "
-FAIL CSS Animations: property <filter> from [opacity(0)] to [opacity()] at (-1) should be [opacity(0)] assert_equals: expected "opacity ( 0 ) " but got "opacity ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [opacity(0)] to [opacity()] at (1.5) should be [opacity(1)]
+PASS CSS Animations: property <filter> from [opacity(0)] to [opacity()] at (-1) should be [opacity(0)]
 PASS CSS Animations: property <filter> from [opacity(0)] to [opacity()] at (0) should be [opacity(0)]
 PASS CSS Animations: property <filter> from [opacity(0)] to [opacity()] at (0.5) should be [opacity(0.5)]
 PASS CSS Animations: property <filter> from [opacity(0)] to [opacity()] at (1) should be [opacity()]
-FAIL CSS Animations: property <filter> from [opacity(0)] to [opacity()] at (1.5) should be [opacity(1)] assert_equals: expected "opacity ( 1 ) " but got "opacity ( 1.5 ) "
-FAIL Web Animations: property <filter> from [opacity(0)] to [opacity()] at (-1) should be [opacity(0)] assert_equals: expected "opacity ( 0 ) " but got "opacity ( - 1 ) "
+PASS CSS Animations: property <filter> from [opacity(0)] to [opacity()] at (1.5) should be [opacity(1)]
+PASS Web Animations: property <filter> from [opacity(0)] to [opacity()] at (-1) should be [opacity(0)]
 PASS Web Animations: property <filter> from [opacity(0)] to [opacity()] at (0) should be [opacity(0)]
 PASS Web Animations: property <filter> from [opacity(0)] to [opacity()] at (0.5) should be [opacity(0.5)]
 PASS Web Animations: property <filter> from [opacity(0)] to [opacity()] at (1) should be [opacity()]
-FAIL Web Animations: property <filter> from [opacity(0)] to [opacity()] at (1.5) should be [opacity(1)] assert_equals: expected "opacity ( 1 ) " but got "opacity ( 1.5 ) "
-FAIL CSS Transitions: property <filter> from [saturate(0)] to [saturate()] at (-1) should be [saturate(0)] assert_equals: expected "saturate ( 0 ) " but got "saturate ( - 1 ) "
+PASS Web Animations: property <filter> from [opacity(0)] to [opacity()] at (1.5) should be [opacity(1)]
+PASS CSS Transitions: property <filter> from [saturate(0)] to [saturate()] at (-1) should be [saturate(0)]
 PASS CSS Transitions: property <filter> from [saturate(0)] to [saturate()] at (0) should be [saturate(0)]
 PASS CSS Transitions: property <filter> from [saturate(0)] to [saturate()] at (0.5) should be [saturate(0.5)]
 PASS CSS Transitions: property <filter> from [saturate(0)] to [saturate()] at (1) should be [saturate()]
 PASS CSS Transitions: property <filter> from [saturate(0)] to [saturate()] at (1.5) should be [saturate(1.5)]
-FAIL CSS Transitions with transition: all: property <filter> from [saturate(0)] to [saturate()] at (-1) should be [saturate(0)] assert_equals: expected "saturate ( 0 ) " but got "saturate ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [saturate(0)] to [saturate()] at (-1) should be [saturate(0)]
 PASS CSS Transitions with transition: all: property <filter> from [saturate(0)] to [saturate()] at (0) should be [saturate(0)]
 PASS CSS Transitions with transition: all: property <filter> from [saturate(0)] to [saturate()] at (0.5) should be [saturate(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [saturate(0)] to [saturate()] at (1) should be [saturate()]
 PASS CSS Transitions with transition: all: property <filter> from [saturate(0)] to [saturate()] at (1.5) should be [saturate(1.5)]
-FAIL CSS Animations: property <filter> from [saturate(0)] to [saturate()] at (-1) should be [saturate(0)] assert_equals: expected "saturate ( 0 ) " but got "saturate ( - 1 ) "
+PASS CSS Animations: property <filter> from [saturate(0)] to [saturate()] at (-1) should be [saturate(0)]
 PASS CSS Animations: property <filter> from [saturate(0)] to [saturate()] at (0) should be [saturate(0)]
 PASS CSS Animations: property <filter> from [saturate(0)] to [saturate()] at (0.5) should be [saturate(0.5)]
 PASS CSS Animations: property <filter> from [saturate(0)] to [saturate()] at (1) should be [saturate()]
 PASS CSS Animations: property <filter> from [saturate(0)] to [saturate()] at (1.5) should be [saturate(1.5)]
-FAIL Web Animations: property <filter> from [saturate(0)] to [saturate()] at (-1) should be [saturate(0)] assert_equals: expected "saturate ( 0 ) " but got "saturate ( - 1 ) "
+PASS Web Animations: property <filter> from [saturate(0)] to [saturate()] at (-1) should be [saturate(0)]
 PASS Web Animations: property <filter> from [saturate(0)] to [saturate()] at (0) should be [saturate(0)]
 PASS Web Animations: property <filter> from [saturate(0)] to [saturate()] at (0.5) should be [saturate(0.5)]
 PASS Web Animations: property <filter> from [saturate(0)] to [saturate()] at (1) should be [saturate()]
 PASS Web Animations: property <filter> from [saturate(0)] to [saturate()] at (1.5) should be [saturate(1.5)]
-FAIL CSS Transitions: property <filter> from [sepia(0)] to [sepia()] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Transitions: property <filter> from [sepia(0)] to [sepia()] at (-1) should be [sepia(0)]
 PASS CSS Transitions: property <filter> from [sepia(0)] to [sepia()] at (0) should be [sepia(0)]
 PASS CSS Transitions: property <filter> from [sepia(0)] to [sepia()] at (0.5) should be [sepia(0.5)]
 PASS CSS Transitions: property <filter> from [sepia(0)] to [sepia()] at (1) should be [sepia()]
-FAIL CSS Transitions: property <filter> from [sepia(0)] to [sepia()] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
-FAIL CSS Transitions with transition: all: property <filter> from [sepia(0)] to [sepia()] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Transitions: property <filter> from [sepia(0)] to [sepia()] at (1.5) should be [sepia(1)]
+PASS CSS Transitions with transition: all: property <filter> from [sepia(0)] to [sepia()] at (-1) should be [sepia(0)]
 PASS CSS Transitions with transition: all: property <filter> from [sepia(0)] to [sepia()] at (0) should be [sepia(0)]
 PASS CSS Transitions with transition: all: property <filter> from [sepia(0)] to [sepia()] at (0.5) should be [sepia(0.5)]
 PASS CSS Transitions with transition: all: property <filter> from [sepia(0)] to [sepia()] at (1) should be [sepia()]
-FAIL CSS Transitions with transition: all: property <filter> from [sepia(0)] to [sepia()] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
-FAIL CSS Animations: property <filter> from [sepia(0)] to [sepia()] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Transitions with transition: all: property <filter> from [sepia(0)] to [sepia()] at (1.5) should be [sepia(1)]
+PASS CSS Animations: property <filter> from [sepia(0)] to [sepia()] at (-1) should be [sepia(0)]
 PASS CSS Animations: property <filter> from [sepia(0)] to [sepia()] at (0) should be [sepia(0)]
 PASS CSS Animations: property <filter> from [sepia(0)] to [sepia()] at (0.5) should be [sepia(0.5)]
 PASS CSS Animations: property <filter> from [sepia(0)] to [sepia()] at (1) should be [sepia()]
-FAIL CSS Animations: property <filter> from [sepia(0)] to [sepia()] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
-FAIL Web Animations: property <filter> from [sepia(0)] to [sepia()] at (-1) should be [sepia(0)] assert_equals: expected "sepia ( 0 ) " but got "sepia ( - 1 ) "
+PASS CSS Animations: property <filter> from [sepia(0)] to [sepia()] at (1.5) should be [sepia(1)]
+PASS Web Animations: property <filter> from [sepia(0)] to [sepia()] at (-1) should be [sepia(0)]
 PASS Web Animations: property <filter> from [sepia(0)] to [sepia()] at (0) should be [sepia(0)]
 PASS Web Animations: property <filter> from [sepia(0)] to [sepia()] at (0.5) should be [sepia(0.5)]
 PASS Web Animations: property <filter> from [sepia(0)] to [sepia()] at (1) should be [sepia()]
-FAIL Web Animations: property <filter> from [sepia(0)] to [sepia()] at (1.5) should be [sepia(1)] assert_equals: expected "sepia ( 1 ) " but got "sepia ( 1.5 ) "
+PASS Web Animations: property <filter> from [sepia(0)] to [sepia()] at (1.5) should be [sepia(1)]
 

Modified: trunk/Source/WebCore/ChangeLog (287814 => 287815)


--- trunk/Source/WebCore/ChangeLog	2022-01-08 22:12:16 UTC (rev 287814)
+++ trunk/Source/WebCore/ChangeLog	2022-01-08 23:40:38 UTC (rev 287815)
@@ -1,3 +1,21 @@
+2022-01-08  Simon Fraser  <[email protected]>
+
+        Fix some CSS filter interpolation issues
+        https://bugs.webkit.org/show_bug.cgi?id=235007
+
+        Reviewed by Antoine Quint.
+
+        Ensure that filter values are clamped after animation according to
+        https://drafts.fxtf.org/filter-effects-1/.
+
+        Tested by WPT.
+
+        * platform/graphics/filters/FilterOperation.cpp:
+        (WebCore::BasicColorMatrixFilterOperation::blend):
+        (WebCore::BasicComponentTransferFilterOperation::blend):
+        (WebCore::BlurFilterOperation::blend):
+        (WebCore::DropShadowFilterOperation::blend):
+
 2022-01-08  Wenson Hsieh  <[email protected]>
 
         Null pointer crash when calling into `-[WebView close]` in `-webView:didCommitLoadForFrame:`

Modified: trunk/Source/WebCore/platform/graphics/filters/FilterOperation.cpp (287814 => 287815)


--- trunk/Source/WebCore/platform/graphics/filters/FilterOperation.cpp	2022-01-08 22:12:16 UTC (rev 287814)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterOperation.cpp	2022-01-08 23:40:38 UTC (rev 287815)
@@ -85,7 +85,20 @@
         
     const BasicColorMatrixFilterOperation* fromOperation = downcast<BasicColorMatrixFilterOperation>(from);
     double fromAmount = fromOperation ? fromOperation->amount() : passthroughAmount();
-    return BasicColorMatrixFilterOperation::create(WebCore::blend(fromAmount, m_amount, context), m_type);
+    double blendedAmount = WebCore::blend(fromAmount, m_amount, context);
+
+    switch (m_type) {
+    case GRAYSCALE:
+    case SEPIA:
+        blendedAmount = std::clamp(blendedAmount, 0.0, 1.0);
+        break;
+    case SATURATE:
+        blendedAmount = std::max(blendedAmount, 0.0);
+        break;
+    default:
+        break;
+    }
+    return BasicColorMatrixFilterOperation::create(blendedAmount, m_type);
 }
 
 bool BasicColorMatrixFilterOperation::transformColor(SRGBA<float>& color) const
@@ -148,7 +161,21 @@
         
     const BasicComponentTransferFilterOperation* fromOperation = downcast<BasicComponentTransferFilterOperation>(from);
     double fromAmount = fromOperation ? fromOperation->amount() : passthroughAmount();
-    return BasicComponentTransferFilterOperation::create(WebCore::blend(fromAmount, m_amount, context), m_type);
+    double blendedAmount = WebCore::blend(fromAmount, m_amount, context);
+    
+    switch (m_type) {
+    case INVERT:
+    case OPACITY:
+        blendedAmount = std::clamp(blendedAmount, 0.0, 1.0);
+        break;
+    case BRIGHTNESS:
+    case CONTRAST:
+        blendedAmount = std::max(blendedAmount, 0.0);
+        break;
+    default:
+        break;
+    }
+    return BasicComponentTransferFilterOperation::create(blendedAmount, m_type);
 }
 
 bool BasicComponentTransferFilterOperation::transformColor(SRGBA<float>& color) const
@@ -344,7 +371,7 @@
 
     const BlurFilterOperation* fromOperation = downcast<BlurFilterOperation>(from);
     Length fromLength = fromOperation ? fromOperation->m_stdDeviation : Length(lengthType);
-    return BlurFilterOperation::create(WebCore::blend(fromLength, m_stdDeviation, context));
+    return BlurFilterOperation::create(WebCore::blend(fromLength, m_stdDeviation, context, ValueRange::NonNegative));
 }
     
 bool DropShadowFilterOperation::operator==(const FilterOperation& operation) const
@@ -373,7 +400,7 @@
     
     return DropShadowFilterOperation::create(
         WebCore::blend(fromLocation, m_location, context),
-        WebCore::blend(fromStdDeviation, m_stdDeviation, context),
+        std::max(WebCore::blend(fromStdDeviation, m_stdDeviation, context), 0),
         WebCore::blend(fromColor, m_color, context));
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to