Title: [278376] trunk
Revision
278376
Author
grao...@webkit.org
Date
2021-06-02 14:51:18 -0700 (Wed, 02 Jun 2021)

Log Message

REGRESSION (r275227): Check boxes on V-Safe site flicker when selected
https://bugs.webkit.org/show_bug.cgi?id=226549
<rdar://problem/77722651>

Reviewed by Simon Fraser.

Source/WebCore:

When checking equality for StyleCachedImage, check whether the backing CSSImageValue is equal even if the pointer is different.

Test: webanimations/background-image-css-variable-no-transition.html

* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::operator== const):

LayoutTests:

Check that a background-image set to a CSS variable doesn't yield a transition when another style property changes.

* webanimations/background-image-css-variable-no-transition-expected.txt: Added.
* webanimations/background-image-css-variable-no-transition.html: Added.
* webanimations/empty-keyframes-crash.html: motify this existing test which relie on the buggy behavior to trigger
a transition.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (278375 => 278376)


--- trunk/LayoutTests/ChangeLog	2021-06-02 21:47:22 UTC (rev 278375)
+++ trunk/LayoutTests/ChangeLog	2021-06-02 21:51:18 UTC (rev 278376)
@@ -1,3 +1,18 @@
+2021-06-02  Antoine Quint  <grao...@webkit.org>
+
+        REGRESSION (r275227): Check boxes on V-Safe site flicker when selected
+        https://bugs.webkit.org/show_bug.cgi?id=226549
+        <rdar://problem/77722651>
+
+        Reviewed by Simon Fraser.
+
+        Check that a background-image set to a CSS variable doesn't yield a transition when another style property changes.
+
+        * webanimations/background-image-css-variable-no-transition-expected.txt: Added.
+        * webanimations/background-image-css-variable-no-transition.html: Added.
+        * webanimations/empty-keyframes-crash.html: motify this existing test which relie on the buggy behavior to trigger
+        a transition.
+
 2021-06-02  Sam Weinig  <wei...@apple.com>
 
         Add support for "relative color syntax" for color()

Added: trunk/LayoutTests/webanimations/background-image-css-variable-no-transition-expected.txt (0 => 278376)


--- trunk/LayoutTests/webanimations/background-image-css-variable-no-transition-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/webanimations/background-image-css-variable-no-transition-expected.txt	2021-06-02 21:51:18 UTC (rev 278376)
@@ -0,0 +1,6 @@
+PASS numberOfAnimationsBeforeStyleChange is 0
+PASS numberOfAnimationsAfterStyleChange is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/webanimations/background-image-css-variable-no-transition.html (0 => 278376)


--- trunk/LayoutTests/webanimations/background-image-css-variable-no-transition.html	                        (rev 0)
+++ trunk/LayoutTests/webanimations/background-image-css-variable-no-transition.html	2021-06-02 21:51:18 UTC (rev 278376)
@@ -0,0 +1,39 @@
+<html>
+<head>
+<style>
+
+    :root {
+        --checkbox-icon: url("data:image/svg+xml,%3Csvg width='29' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M27.707.293a.997.997 0 0 0-1.414 0L9 17.586l-7.293-7.293a1 1 0 0 0-1.414 1.414l8 8a.997.997 0 0 0 1.414 0l18-18a.997.997 0 0 0 0-1.414z' fill='black'/%3E%3C/svg%3E");
+    }
+
+    .box {
+        position: absolute;
+        height: 100px;
+        width: 100px;
+        background-repeat: no-repeat;
+        background-position: center;
+        background-size: 90%;
+        background-image: var(--checkbox-icon);
+        transition: 2s linear;
+    }
+
+    body.changed .box {
+        visibility: visible;
+    }
+
+</style>
+<script src=""
+</head>
+<body>
+    <div class="box"></div>
+    <script>
+        const numberOfAnimationsBeforeStyleChange = document.getAnimations().length;
+        shouldBe("numberOfAnimationsBeforeStyleChange", "0");
+
+        document.body.classList.add('changed');
+
+        const numberOfAnimationsAfterStyleChange = document.getAnimations().length;
+        shouldBe("numberOfAnimationsAfterStyleChange", "0");
+    </script>
+</body>
+</html>

Modified: trunk/LayoutTests/webanimations/empty-keyframes-crash.html (278375 => 278376)


--- trunk/LayoutTests/webanimations/empty-keyframes-crash.html	2021-06-02 21:47:22 UTC (rev 278375)
+++ trunk/LayoutTests/webanimations/empty-keyframes-crash.html	2021-06-02 21:51:18 UTC (rev 278376)
@@ -4,8 +4,13 @@
 <style>
 #hr1 {
     transition: 1s;
-    background: url(data:image/gif;base64,);
+    background: black;
 }
+
+#hr1.changed {
+    background: blue;
+}
+
 </style>
 <script>
 
@@ -15,6 +20,7 @@
 function crash() {
     var hr1 = document.getElementById("hr1");
     var hr2 = document.getElementById("hr2");
+    hr1.classList.add("changed");
     document.all[2].appendChild(hr2);
     var animation = document.createElement("hr3").animate({  }, 1);
     var hr1_animation_effect = hr1.getAnimations()[0].effect;

Modified: trunk/Source/WebCore/ChangeLog (278375 => 278376)


--- trunk/Source/WebCore/ChangeLog	2021-06-02 21:47:22 UTC (rev 278375)
+++ trunk/Source/WebCore/ChangeLog	2021-06-02 21:51:18 UTC (rev 278376)
@@ -1,3 +1,18 @@
+2021-06-02  Antoine Quint  <grao...@webkit.org>
+
+        REGRESSION (r275227): Check boxes on V-Safe site flicker when selected
+        https://bugs.webkit.org/show_bug.cgi?id=226549
+        <rdar://problem/77722651>
+
+        Reviewed by Simon Fraser.
+
+        When checking equality for StyleCachedImage, check whether the backing CSSImageValue is equal even if the pointer is different.
+
+        Test: webanimations/background-image-css-variable-no-transition.html
+
+        * rendering/style/StyleCachedImage.cpp:
+        (WebCore::StyleCachedImage::operator== const):
+
 2021-06-02  Jer Noble  <jer.no...@apple.com>
 
         REGRESSION(r276993): 5 TestWebKitAPI.AudioRoutingArbitration (api-tests) are constant failures

Modified: trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp (278375 => 278376)


--- trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp	2021-06-02 21:47:22 UTC (rev 278375)
+++ trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp	2021-06-02 21:51:18 UTC (rev 278376)
@@ -57,7 +57,7 @@
         return true;
     if (m_scaleFactor != otherCached.m_scaleFactor)
         return false;
-    if (m_cssValue.ptr() == otherCached.m_cssValue.ptr())
+    if (m_cssValue.ptr() == otherCached.m_cssValue.ptr() || m_cssValue->equals(otherCached.m_cssValue.get()))
         return true;
     if (m_cachedImage && m_cachedImage == otherCached.m_cachedImage)
         return true;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to