Title: [260858] trunk
Revision
260858
Author
[email protected]
Date
2020-04-28 17:12:28 -0700 (Tue, 28 Apr 2020)

Log Message

REGRESSION (r260808): Backdrops on music.apple.com are offset
https://bugs.webkit.org/show_bug.cgi?id=211153
Source/WebCore:

<rdar://problem/62543158>

Reviewed by Zalan Bujtas.

The border-radius code path failed to offset the rounded rect by contentOffsetInCompositingLayer().

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

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateBackdropFiltersGeometry):

LayoutTests:

Reviewed by Zalan Bujtas.

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

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (260857 => 260858)


--- trunk/LayoutTests/ChangeLog	2020-04-29 00:05:58 UTC (rev 260857)
+++ trunk/LayoutTests/ChangeLog	2020-04-29 00:12:28 UTC (rev 260858)
@@ -1,3 +1,13 @@
+2020-04-28  Simon Fraser  <[email protected]>
+
+        REGRESSION (r260808): Backdrops on music.apple.com are offset
+        https://bugs.webkit.org/show_bug.cgi?id=211153
+
+        Reviewed by Zalan Bujtas.
+
+        * compositing/filters/backdrop-filter-rect-border-radius-expected.html: Added.
+        * compositing/filters/backdrop-filter-rect-border-radius.html: Added.
+
 2020-04-28  Noam Rosenthal  <[email protected]>
 
         Implement FCP (first contentful paint)

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


--- trunk/LayoutTests/compositing/filters/backdrop-filter-rect-border-radius-expected.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/filters/backdrop-filter-rect-border-radius-expected.html	2020-04-29 00:12:28 UTC (rev 260858)
@@ -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;
+        border-radius: 5px;
+        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-border-radius.html (0 => 260858)


--- trunk/LayoutTests/compositing/filters/backdrop-filter-rect-border-radius.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/filters/backdrop-filter-rect-border-radius.html	2020-04-29 00:12:28 UTC (rev 260858)
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+    img {
+        background-color: green;
+        height: 500px;
+        width: 500px;
+    }
+
+    .backdrop {
+        position: absolute;
+        height: 200px;
+        width: 200px;
+        left: 140px;
+        top: 140px;
+        border-radius: 5px;
+        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 (260857 => 260858)


--- trunk/Source/WebCore/ChangeLog	2020-04-29 00:05:58 UTC (rev 260857)
+++ trunk/Source/WebCore/ChangeLog	2020-04-29 00:12:28 UTC (rev 260858)
@@ -1,3 +1,18 @@
+2020-04-28  Simon Fraser  <[email protected]>
+
+        REGRESSION (r260808): Backdrops on music.apple.com are offset
+        https://bugs.webkit.org/show_bug.cgi?id=211153
+        <rdar://problem/62543158>
+
+        Reviewed by Zalan Bujtas.
+
+        The border-radius code path failed to offset the rounded rect by contentOffsetInCompositingLayer().
+
+        Test: compositing/filters/backdrop-filter-rect-border-radius.html
+
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateBackdropFiltersGeometry):
+
 2020-04-28  Daniel Bates  <[email protected]>
 
         Modernize EndPointsAdjustmentMode enumeration and fix misspelled enumerator

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (260857 => 260858)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2020-04-29 00:05:58 UTC (rev 260857)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2020-04-29 00:12:28 UTC (rev 260858)
@@ -637,16 +637,19 @@
         return;
 
     auto& renderBox = downcast<RenderBox>(this->renderer());
-    LayoutRect boxRect = renderBox.borderBoxRect();
-    if (renderBox.hasClip())
-        boxRect.intersect(renderBox.clipRect(LayoutPoint(), nullptr));
-    boxRect.move(contentOffsetInCompositingLayer());
 
     FloatRoundedRect backdropFiltersRect;
-    if (renderBox.style().hasBorderRadius() && !renderBox.hasClip())
-        backdropFiltersRect = renderBox.roundedBorderBoxRect().pixelSnappedRoundedRectForPainting(deviceScaleFactor());
-    else
+    if (renderBox.style().hasBorderRadius() && !renderBox.hasClip()) {
+        auto roundedBoxRect = renderBox.roundedBorderBoxRect();
+        roundedBoxRect.move(contentOffsetInCompositingLayer());
+        backdropFiltersRect = roundedBoxRect.pixelSnappedRoundedRectForPainting(deviceScaleFactor());
+    } else {
+        auto boxRect = renderBox.borderBoxRect();
+        if (renderBox.hasClip())
+            boxRect.intersect(renderBox.clipRect(LayoutPoint(), nullptr));
+        boxRect.move(contentOffsetInCompositingLayer());
         backdropFiltersRect = FloatRoundedRect(snapRectToDevicePixels(boxRect, deviceScaleFactor()));
+    }
 
     m_graphicsLayer->setBackdropFiltersRect(backdropFiltersRect);
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to