Title: [235475] trunk
- Revision
- 235475
- Author
- [email protected]
- Date
- 2018-08-29 12:57:32 -0700 (Wed, 29 Aug 2018)
Log Message
Fix crash when reflections and backdrop filter are combined
https://bugs.webkit.org/show_bug.cgi?id=188504
rdar://problem/43225590
Reviewed by Dan Bates.
Source/WebCore:
GraphicsLayerCA::updateBackdropFiltersRect() was confused about which hash map to modify
when changes to the clipping rect affect whether we make backdrop clipping layers;
we need to add/remove from backdropClippingLayerClones, not backdropLayerClones.
Test: compositing/filters/backdrop-filter-update-rect.html
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateBackdropFiltersRect):
LayoutTests:
* compositing/filters/backdrop-filter-update-rect-expected.txt: Added.
* compositing/filters/backdrop-filter-update-rect.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (235474 => 235475)
--- trunk/LayoutTests/ChangeLog 2018-08-29 19:39:37 UTC (rev 235474)
+++ trunk/LayoutTests/ChangeLog 2018-08-29 19:57:32 UTC (rev 235475)
@@ -1,3 +1,14 @@
+2018-08-28 Simon Fraser <[email protected]>
+
+ Fix crash when reflections and backdrop filter are combined
+ https://bugs.webkit.org/show_bug.cgi?id=188504
+ rdar://problem/43225590
+
+ Reviewed by Dan Bates.
+
+ * compositing/filters/backdrop-filter-update-rect-expected.txt: Added.
+ * compositing/filters/backdrop-filter-update-rect.html: Added.
+
2018-08-29 Ali Juma <[email protected]>
[mac-wk1] Mark three IntersectionObserver web platform tests as flaky
Added: trunk/LayoutTests/compositing/filters/backdrop-filter-update-rect-expected.txt (0 => 235475)
--- trunk/LayoutTests/compositing/filters/backdrop-filter-update-rect-expected.txt (rev 0)
+++ trunk/LayoutTests/compositing/filters/backdrop-filter-update-rect-expected.txt 2018-08-29 19:57:32 UTC (rev 235475)
@@ -0,0 +1,3 @@
+This test should not crash.
+
+box
Added: trunk/LayoutTests/compositing/filters/backdrop-filter-update-rect.html (0 => 235475)
--- trunk/LayoutTests/compositing/filters/backdrop-filter-update-rect.html (rev 0)
+++ trunk/LayoutTests/compositing/filters/backdrop-filter-update-rect.html 2018-08-29 19:57:32 UTC (rev 235475)
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ #box {
+ height: 100px;
+ width: 100px;
+ margin: 10px;
+ -webkit-backdrop-filter: blur(10px);
+ -webkit-box-reflect: below 10px;
+ }
+
+ #box.changed {
+ width: 110px;
+ }
+ </style>
+ <script>
+ if (window.testRunner) {
+ testRunner.waitUntilDone();
+ testRunner.dumpAsText();
+ }
+
+ function doTest()
+ {
+ setTimeout(() => {
+ document.getElementById('box').classList.add('changed');
+
+ if (window.testRunner)
+ testRunner.notifyDone();
+ }, 0);
+ }
+ window.addEventListener('load', doTest, false);
+ </script>
+</head>
+<body>
+ <p>This test should not crash.</p>
+ <div id="box">
+ box
+ </div>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (235474 => 235475)
--- trunk/Source/WebCore/ChangeLog 2018-08-29 19:39:37 UTC (rev 235474)
+++ trunk/Source/WebCore/ChangeLog 2018-08-29 19:57:32 UTC (rev 235475)
@@ -1,3 +1,20 @@
+2018-08-28 Simon Fraser <[email protected]>
+
+ Fix crash when reflections and backdrop filter are combined
+ https://bugs.webkit.org/show_bug.cgi?id=188504
+ rdar://problem/43225590
+
+ Reviewed by Dan Bates.
+
+ GraphicsLayerCA::updateBackdropFiltersRect() was confused about which hash map to modify
+ when changes to the clipping rect affect whether we make backdrop clipping layers;
+ we need to add/remove from backdropClippingLayerClones, not backdropLayerClones.
+
+ Test: compositing/filters/backdrop-filter-update-rect.html
+
+ * platform/graphics/ca/GraphicsLayerCA.cpp:
+ (WebCore::GraphicsLayerCA::updateBackdropFiltersRect):
+
2018-08-29 Jer Noble <[email protected]>
Muted elements do not have their Now Playing status updated when unmuted.
Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (235474 => 235475)
--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp 2018-08-29 19:39:37 UTC (rev 235474)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp 2018-08-29 19:57:32 UTC (rev 235475)
@@ -2186,15 +2186,15 @@
backdropCloneLayer->setPosition(m_backdropFiltersRect.rect().location());
CloneID cloneID = clone.key;
- RefPtr<PlatformCALayer> backdropClippingLayerClone = m_layerClones->backdropLayerClones.get(cloneID);
+ RefPtr<PlatformCALayer> backdropClippingLayerClone = m_layerClones->backdropClippingLayerClones.get(cloneID);
bool hadBackdropClippingLayer = backdropClippingLayerClone;
updateClippingStrategy(*backdropCloneLayer, backdropClippingLayerClone, m_backdropFiltersRect);
if (!backdropClippingLayerClone)
- m_layerClones->backdropLayerClones.remove(cloneID);
+ m_layerClones->backdropClippingLayerClones.remove(cloneID);
else if (backdropClippingLayerClone && !hadBackdropClippingLayer)
- m_layerClones->backdropLayerClones.add(cloneID, backdropClippingLayerClone);
+ m_layerClones->backdropClippingLayerClones.add(cloneID, backdropClippingLayerClone);
}
}
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes