Title: [207723] trunk
Revision
207723
Author
m...@apple.com
Date
2016-10-22 19:49:41 -0700 (Sat, 22 Oct 2016)

Log Message

Dynamically-added backdrop filter to clip-path'd element with 3D transform renders incorrectly (without clip)
https://bugs.webkit.org/show_bug.cgi?id=163497

Reviewed by Simon Fraser.

Source/WebCore:

Test: css3/filters/backdrop/dynamic-with-clip-path.html

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::ensureStructuralLayer): Added MaskLayerChanged to
  structuralLayerChangeFlags to ensure that the mask layer is updated.

LayoutTests:

Based on the test case from Tim Horton.

* css3/filters/backdrop/dynamic-with-clip-path-expected.html: Added.
* css3/filters/backdrop/dynamic-with-clip-path.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (207722 => 207723)


--- trunk/LayoutTests/ChangeLog	2016-10-23 02:43:48 UTC (rev 207722)
+++ trunk/LayoutTests/ChangeLog	2016-10-23 02:49:41 UTC (rev 207723)
@@ -1,3 +1,15 @@
+2016-10-22  Dan Bernstein  <m...@apple.com>
+
+        Dynamically-added backdrop filter to clip-path'd element with 3D transform renders incorrectly (without clip)
+        https://bugs.webkit.org/show_bug.cgi?id=163497
+
+        Reviewed by Simon Fraser.
+
+        Based on the test case from Tim Horton.
+
+        * css3/filters/backdrop/dynamic-with-clip-path-expected.html: Added.
+        * css3/filters/backdrop/dynamic-with-clip-path.html: Added.
+
 2016-10-22  Simon Fraser  <simon.fra...@apple.com>
 
         Backdrop filter doesn't show if removed then re-added

Added: trunk/LayoutTests/css3/filters/backdrop/dynamic-with-clip-path-expected.html (0 => 207723)


--- trunk/LayoutTests/css3/filters/backdrop/dynamic-with-clip-path-expected.html	                        (rev 0)
+++ trunk/LayoutTests/css3/filters/backdrop/dynamic-with-clip-path-expected.html	2016-10-23 02:49:41 UTC (rev 207723)
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<style>
+    #box {
+        position: absolute;
+        width: 200px;
+        height: 200px;
+        background-color: green;
+    }
+    #filter {
+            position: absolute;
+            width: 200px;
+            height: 200px;
+            transform: translatez(0);
+            -webkit-clip-path: circle(25px at 225px);
+            -webkit-backdrop-filter: invert();
+    }
+</style>
+<div id="box"></div>
+<div id="filter"></div>

Added: trunk/LayoutTests/css3/filters/backdrop/dynamic-with-clip-path.html (0 => 207723)


--- trunk/LayoutTests/css3/filters/backdrop/dynamic-with-clip-path.html	                        (rev 0)
+++ trunk/LayoutTests/css3/filters/backdrop/dynamic-with-clip-path.html	2016-10-23 02:49:41 UTC (rev 207723)
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<style>
+    #box {
+        position: absolute;
+        width: 200px;
+        height: 200px;
+        background-color: green;
+    }
+    #filter {
+        position: absolute;
+        width: 200px;
+        height: 200px;
+        transform: translatez(0);
+        -webkit-clip-path: circle(25px at 225px);
+    }
+    .backdrop {
+        -webkit-backdrop-filter: invert();
+    }
+</style>
+<div id="box"></div>
+<div id="filter"></div>
+<script>
+    if (window.testRunner)
+        testRunner.waitUntilDone();
+    setTimeout(function() {
+        document.getElementById("filter").classList.add("backdrop");
+        if (window.testRunner)
+            testRunner.notifyDone();
+    }, 0);
+</script>

Modified: trunk/Source/WebCore/ChangeLog (207722 => 207723)


--- trunk/Source/WebCore/ChangeLog	2016-10-23 02:43:48 UTC (rev 207722)
+++ trunk/Source/WebCore/ChangeLog	2016-10-23 02:49:41 UTC (rev 207723)
@@ -1,3 +1,16 @@
+2016-10-22  Dan Bernstein  <m...@apple.com>
+
+        Dynamically-added backdrop filter to clip-path'd element with 3D transform renders incorrectly (without clip)
+        https://bugs.webkit.org/show_bug.cgi?id=163497
+
+        Reviewed by Simon Fraser.
+
+        Test: css3/filters/backdrop/dynamic-with-clip-path.html
+
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::ensureStructuralLayer): Added MaskLayerChanged to
+          structuralLayerChangeFlags to ensure that the mask layer is updated.
+
 2016-10-22  Simon Fraser  <simon.fra...@apple.com>
 
         Backdrop filter doesn't show if removed then re-added

Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (207722 => 207723)


--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2016-10-23 02:43:48 UTC (rev 207722)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2016-10-23 02:49:41 UTC (rev 207723)
@@ -2071,6 +2071,7 @@
         | BackfaceVisibilityChanged
         | FiltersChanged
         | BackdropFiltersChanged
+        | MaskLayerChanged
         | OpacityChanged;
 
     if (purpose == NoStructuralLayer) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to