Title: [258985] trunk
Revision
258985
Author
simon.fra...@apple.com
Date
2020-03-25 09:19:00 -0700 (Wed, 25 Mar 2020)

Log Message

REGRESSION (r251385): box-shadow interferes with backdrop-filter
https://bugs.webkit.org/show_bug.cgi?id=208070
<rdar://problem/59683152>

Reviewed by Dean Jackson.

Source/WebCore:

updateClippingStrategy() compares the rounded rect passed in with the geometry
of the first layer argument, so the rect needs to have a zero origin. We do
the same computation in GraphicsLayerCA::updateContentsRects().

Test: compositing/filters/backdrop-filter-rect.html

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateBackdropFiltersRect):

LayoutTests:

* compositing/filters/backdrop-filter-rect-expected.html: Added.
* compositing/filters/backdrop-filter-rect.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (258984 => 258985)


--- trunk/LayoutTests/ChangeLog	2020-03-25 15:59:15 UTC (rev 258984)
+++ trunk/LayoutTests/ChangeLog	2020-03-25 16:19:00 UTC (rev 258985)
@@ -1,3 +1,14 @@
+2020-03-25  Simon Fraser  <simon.fra...@apple.com>
+
+        REGRESSION (r251385): box-shadow interferes with backdrop-filter
+        https://bugs.webkit.org/show_bug.cgi?id=208070
+        <rdar://problem/59683152>
+
+        Reviewed by Dean Jackson.
+
+        * compositing/filters/backdrop-filter-rect-expected.html: Added.
+        * compositing/filters/backdrop-filter-rect.html: Added.
+
 2020-03-25  Truitt Savell  <tsav...@apple.com>
 
         [ios] svg/custom/object-sizing-explicit-width.xhtml is flaky failure

Added: trunk/LayoutTests/compositing/filters/backdrop-filter-rect-expected.html (0 => 258985)


--- trunk/LayoutTests/compositing/filters/backdrop-filter-rect-expected.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/filters/backdrop-filter-rect-expected.html	2020-03-25 16:19:00 UTC (rev 258985)
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+    img {
+        background-color: green;
+        height: 500px;
+        width: 500px;
+    }
+
+    .backdrop {
+        position: absolute;
+        height: 200px;
+        width: 200px;
+        left: 140px;
+        top: 140px;
+        background-color: rgba(0, 0, 0, 0.2);
+        -webkit-backdrop-filter: saturate(0);
+    }
+    
+    .extender {
+        position: absolute;
+        height: 20px;
+        width: 20px;
+        top: 40px;
+        left: 40px;
+        background-color: blue;
+    }
+}
+</style>
+</head>
+<body>
+	<img>
+    <div class="extender"></div>
+	<div class="backdrop"></div>
+</body>
+</html>

Added: trunk/LayoutTests/compositing/filters/backdrop-filter-rect.html (0 => 258985)


--- trunk/LayoutTests/compositing/filters/backdrop-filter-rect.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/filters/backdrop-filter-rect.html	2020-03-25 16:19:00 UTC (rev 258985)
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+    img {
+        background-color: green;
+        height: 500px;
+        width: 500px;
+    }
+
+    .backdrop {
+        position: absolute;
+        height: 200px;
+        width: 200px;
+        left: 140px;
+        top: 140px;
+        background-color: rgba(0, 0, 0, 0.2);
+        -webkit-backdrop-filter: saturate(0);
+    }
+    
+    .extender {
+        position: absolute;
+        height: 20px;
+        width: 20px;
+        top: -100px;
+        left: -100px;
+        background-color: blue;
+    }
+}
+</style>
+</head>
+<body>
+	<img>
+	<div class="backdrop">
+	    <div class="extender"></div>
+	</div>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (258984 => 258985)


--- trunk/Source/WebCore/ChangeLog	2020-03-25 15:59:15 UTC (rev 258984)
+++ trunk/Source/WebCore/ChangeLog	2020-03-25 16:19:00 UTC (rev 258985)
@@ -1,3 +1,20 @@
+2020-03-25  Simon Fraser  <simon.fra...@apple.com>
+
+        REGRESSION (r251385): box-shadow interferes with backdrop-filter
+        https://bugs.webkit.org/show_bug.cgi?id=208070
+        <rdar://problem/59683152>
+
+        Reviewed by Dean Jackson.
+
+        updateClippingStrategy() compares the rounded rect passed in with the geometry
+        of the first layer argument, so the rect needs to have a zero origin. We do
+        the same computation in GraphicsLayerCA::updateContentsRects().
+
+        Test: compositing/filters/backdrop-filter-rect.html
+
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::updateBackdropFiltersRect):
+
 2020-03-25  Wenson Hsieh  <wenson_hs...@apple.com>
 
         Avoid querying pasteboard strings while dragging content over a potential drop target

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


--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2020-03-25 15:59:15 UTC (rev 258984)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2020-03-25 16:19:00 UTC (rev 258985)
@@ -2276,7 +2276,9 @@
     m_backdropLayer->setBounds(contentBounds);
     m_backdropLayer->setPosition(m_backdropFiltersRect.rect().location());
 
-    updateClippingStrategy(*m_backdropLayer, m_backdropClippingLayer, m_backdropFiltersRect);
+    auto backdropRectRelativeToBackdropLayer = m_backdropFiltersRect;
+    backdropRectRelativeToBackdropLayer.setLocation({ });
+    updateClippingStrategy(*m_backdropLayer, m_backdropClippingLayer, backdropRectRelativeToBackdropLayer);
 
     if (m_layerClones) {
         for (auto& clone : m_layerClones->backdropLayerClones) {
@@ -2288,7 +2290,7 @@
             RefPtr<PlatformCALayer> backdropClippingLayerClone = m_layerClones->backdropClippingLayerClones.get(cloneID);
 
             bool hadBackdropClippingLayer = backdropClippingLayerClone;
-            updateClippingStrategy(*backdropCloneLayer, backdropClippingLayerClone, m_backdropFiltersRect);
+            updateClippingStrategy(*backdropCloneLayer, backdropClippingLayerClone, backdropRectRelativeToBackdropLayer);
 
             if (!backdropClippingLayerClone)
                 m_layerClones->backdropClippingLayerClones.remove(cloneID);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to