Title: [252285] tags/Safari-609.1.10.1
- Revision
- 252285
- Author
- alanc...@apple.com
- Date
- 2019-11-08 16:51:54 -0800 (Fri, 08 Nov 2019)
Log Message
Cherry-pick r252070. rdar://problem/56559648
Content can disappear with a combination of <video> with controls and clipping
https://bugs.webkit.org/show_bug.cgi?id=203834
Source/WebCore:
rdar://problem/56559648
Reviewed by Zalan Bujtas.
<video> with controls triggered a bug where a backing-sharing layer also claimed
that it didn't need any backing store. RenderLayerCompositor::requiresOwnBackingStore()
could early-return with 'false' if a layer had an indirect compositing reason of "Clipping",
while also backing-sharing. We need to check for backing-sharing first.
Test: compositing/shared-backing/clipping-and-shared-backing.html
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::setBackingSharingLayers):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
LayoutTests:
Reviewed by Zalan Bujtas.
* compositing/shared-backing/clipping-and-shared-backing-expected.html: Added.
* compositing/shared-backing/clipping-and-shared-backing.html: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@252070 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Modified Paths
Added Paths
Diff
Modified: tags/Safari-609.1.10.1/LayoutTests/ChangeLog (252284 => 252285)
--- tags/Safari-609.1.10.1/LayoutTests/ChangeLog 2019-11-09 00:51:50 UTC (rev 252284)
+++ tags/Safari-609.1.10.1/LayoutTests/ChangeLog 2019-11-09 00:51:54 UTC (rev 252285)
@@ -1,5 +1,49 @@
2019-11-07 Alan Coon <alanc...@apple.com>
+ Cherry-pick r252070. rdar://problem/56559648
+
+ Content can disappear with a combination of <video> with controls and clipping
+ https://bugs.webkit.org/show_bug.cgi?id=203834
+ Source/WebCore:
+
+ rdar://problem/56559648
+
+ Reviewed by Zalan Bujtas.
+
+ <video> with controls triggered a bug where a backing-sharing layer also claimed
+ that it didn't need any backing store. RenderLayerCompositor::requiresOwnBackingStore()
+ could early-return with 'false' if a layer had an indirect compositing reason of "Clipping",
+ while also backing-sharing. We need to check for backing-sharing first.
+
+ Test: compositing/shared-backing/clipping-and-shared-backing.html
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::setBackingSharingLayers):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
+
+ LayoutTests:
+
+ Reviewed by Zalan Bujtas.
+
+ * compositing/shared-backing/clipping-and-shared-backing-expected.html: Added.
+ * compositing/shared-backing/clipping-and-shared-backing.html: Added.
+
+
+ git-svn-id: https://svn.webkit.org/repository/webkit/trunk@252070 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+ 2019-11-05 Simon Fraser <simon.fra...@apple.com>
+
+ Content can disappear with a combination of <video> with controls and clipping
+ https://bugs.webkit.org/show_bug.cgi?id=203834
+
+ Reviewed by Zalan Bujtas.
+
+ * compositing/shared-backing/clipping-and-shared-backing-expected.html: Added.
+ * compositing/shared-backing/clipping-and-shared-backing.html: Added.
+
+2019-11-07 Alan Coon <alanc...@apple.com>
+
Cherry-pick r252051. rdar://problem/56080440
[iOS] Update fast/forms/ios/file-upload-panel.html test and results
Added: tags/Safari-609.1.10.1/LayoutTests/compositing/shared-backing/clipping-and-shared-backing-expected.html (0 => 252285)
--- tags/Safari-609.1.10.1/LayoutTests/compositing/shared-backing/clipping-and-shared-backing-expected.html (rev 0)
+++ tags/Safari-609.1.10.1/LayoutTests/compositing/shared-backing/clipping-and-shared-backing-expected.html 2019-11-09 00:51:54 UTC (rev 252285)
@@ -0,0 +1,42 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->
+<html>
+<head>
+ <style>
+ .wrapper {
+ overflow-x: hidden;
+ margin: 20px 50px;
+ }
+
+ .video {
+ width: 300px;
+ height: 100px;
+ will-change: transform;
+ }
+
+ .obscurer {
+ position: absolute;
+ top: 18px;
+ left: 48px;
+ width: 320px;
+ height: 120px;
+ background-color: gray;
+ }
+
+ .test {
+ position: relative;
+ width: 100%;
+ height: 300px;
+ background-color: green;
+ }
+ </style>
+</head>
+<body>
+ <section class="wrapper">
+ <div class="video"></div>
+ <div class="test">Some text here</div>
+ </section>
+ <!--Hide the video; we just want its side-effects -->
+ <div class="obscurer"></div>
+
+</body>
+</html>
Added: tags/Safari-609.1.10.1/LayoutTests/compositing/shared-backing/clipping-and-shared-backing.html (0 => 252285)
--- tags/Safari-609.1.10.1/LayoutTests/compositing/shared-backing/clipping-and-shared-backing.html (rev 0)
+++ tags/Safari-609.1.10.1/LayoutTests/compositing/shared-backing/clipping-and-shared-backing.html 2019-11-09 00:51:54 UTC (rev 252285)
@@ -0,0 +1,59 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ internal:AsyncOverflowScrollingEnabled=true ] -->
+<html>
+<head>
+ <style>
+ .wrapper {
+ overflow-x: hidden;
+ margin: 20px 50px;
+ }
+
+ video {
+ display: block;
+ width: 300px;
+ height: 100px;
+ }
+
+ .obscurer {
+ position: absolute;
+ top: 18px;
+ left: 48px;
+ width: 320px;
+ height: 120px;
+ background-color: gray;
+ }
+
+ .test {
+ position: relative;
+ width: 100%;
+ height: 300px;
+ background-color: green;
+ }
+ </style>
+ <script src=""
+ <script src=""
+ <script>
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ function setupTest()
+ {
+ var video = document.getElementsByTagName('video')[0];
+ setupVideo(video, '../resources/video', null, () => {
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ }
+
+ window.addEventListener('load', setupTest, false);
+ </script>
+</head>
+<body>
+ <section class="wrapper">
+ <video ></video>
+ <div class="test">Some text here</div>
+ </section>
+ <!--Hide the video; we just want its side-effects -->
+ <div class="obscurer"></div>
+
+</body>
+</html>
Modified: tags/Safari-609.1.10.1/Source/WebCore/ChangeLog (252284 => 252285)
--- tags/Safari-609.1.10.1/Source/WebCore/ChangeLog 2019-11-09 00:51:50 UTC (rev 252284)
+++ tags/Safari-609.1.10.1/Source/WebCore/ChangeLog 2019-11-09 00:51:54 UTC (rev 252285)
@@ -1,5 +1,59 @@
2019-11-07 Alan Coon <alanc...@apple.com>
+ Cherry-pick r252070. rdar://problem/56559648
+
+ Content can disappear with a combination of <video> with controls and clipping
+ https://bugs.webkit.org/show_bug.cgi?id=203834
+ Source/WebCore:
+
+ rdar://problem/56559648
+
+ Reviewed by Zalan Bujtas.
+
+ <video> with controls triggered a bug where a backing-sharing layer also claimed
+ that it didn't need any backing store. RenderLayerCompositor::requiresOwnBackingStore()
+ could early-return with 'false' if a layer had an indirect compositing reason of "Clipping",
+ while also backing-sharing. We need to check for backing-sharing first.
+
+ Test: compositing/shared-backing/clipping-and-shared-backing.html
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::setBackingSharingLayers):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
+
+ LayoutTests:
+
+ Reviewed by Zalan Bujtas.
+
+ * compositing/shared-backing/clipping-and-shared-backing-expected.html: Added.
+ * compositing/shared-backing/clipping-and-shared-backing.html: Added.
+
+
+ git-svn-id: https://svn.webkit.org/repository/webkit/trunk@252070 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+ 2019-11-05 Simon Fraser <simon.fra...@apple.com>
+
+ Content can disappear with a combination of <video> with controls and clipping
+ https://bugs.webkit.org/show_bug.cgi?id=203834
+ rdar://problem/56559648
+
+ Reviewed by Zalan Bujtas.
+
+ <video> with controls triggered a bug where a backing-sharing layer also claimed
+ that it didn't need any backing store. RenderLayerCompositor::requiresOwnBackingStore()
+ could early-return with 'false' if a layer had an indirect compositing reason of "Clipping",
+ while also backing-sharing. We need to check for backing-sharing first.
+
+ Test: compositing/shared-backing/clipping-and-shared-backing.html
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::setBackingSharingLayers):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
+
+2019-11-07 Alan Coon <alanc...@apple.com>
+
Cherry-pick r252059. rdar://problem/56889717
http/tests/media/track-in-band-hls-metadata.html sometimes crashes after r251626
Modified: tags/Safari-609.1.10.1/Source/WebCore/rendering/RenderLayerBacking.cpp (252284 => 252285)
--- tags/Safari-609.1.10.1/Source/WebCore/rendering/RenderLayerBacking.cpp 2019-11-09 00:51:50 UTC (rev 252284)
+++ tags/Safari-609.1.10.1/Source/WebCore/rendering/RenderLayerBacking.cpp 2019-11-09 00:51:54 UTC (rev 252285)
@@ -294,8 +294,11 @@
clearBackingSharingLayerProviders(m_backingSharingLayers);
- if (sharingLayers != m_backingSharingLayers)
+ if (sharingLayers != m_backingSharingLayers) {
+ if (sharingLayers.size())
+ setRequiresOwnBackingStore(true);
setContentsNeedDisplay(); // This could be optimized to only repaint rects for changed layers.
+ }
auto oldSharingLayers = WTFMove(m_backingSharingLayers);
m_backingSharingLayers = WTFMove(sharingLayers);
Modified: tags/Safari-609.1.10.1/Source/WebCore/rendering/RenderLayerCompositor.cpp (252284 => 252285)
--- tags/Safari-609.1.10.1/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-11-09 00:51:50 UTC (rev 252284)
+++ tags/Safari-609.1.10.1/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-11-09 00:51:54 UTC (rev 252285)
@@ -2422,6 +2422,9 @@
|| renderer.hasBackdropFilter())
return true;
+ if (layer.isComposited() && layer.backing()->hasBackingSharingLayers())
+ return true;
+
if (layer.mustCompositeForIndirectReasons()) {
IndirectCompositingReason reason = layer.indirectCompositingReason();
return reason == IndirectCompositingReason::Overlap
@@ -2432,12 +2435,10 @@
|| reason == IndirectCompositingReason::Preserve3D; // preserve-3d has to create backing store to ensure that 3d-transformed elements intersect.
}
+ // FIXME: We really need to keep track of the ancestor layer that has its own backing store.
if (!ancestorCompositedBounds.contains(layerCompositedBoundsInAncestor))
return true;
- if (layer.isComposited() && layer.backing()->hasBackingSharingLayers())
- return true;
-
return false;
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes