Title: [224715] trunk
Revision
224715
Author
simon.fra...@apple.com
Date
2017-11-10 17:07:44 -0800 (Fri, 10 Nov 2017)

Log Message

Contents of composited overflow-scroll are missing when newly added
https://bugs.webkit.org/show_bug.cgi?id=179556
rdar://problem/20368294

Reviewed by Tim Horton.

Source/WebCore:

When content is appended to an oveflow:scroll, we do a subtree layout. That triggered
a compositing code path that failed to call updateAfterDescendants() which is where
we compute whether we can be a simple composited layer without backing store. Fix to
call that after the updateGeometry() call, as we do elsewhere.

Test: compositing/backing/overflow-gains-content.html

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

LayoutTests:

* compositing/backing/overflow-gains-content-expected.html: Added.
* compositing/backing/overflow-gains-content.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (224714 => 224715)


--- trunk/LayoutTests/ChangeLog	2017-11-11 00:20:31 UTC (rev 224714)
+++ trunk/LayoutTests/ChangeLog	2017-11-11 01:07:44 UTC (rev 224715)
@@ -1,3 +1,14 @@
+2017-11-10  Simon Fraser  <simon.fra...@apple.com>
+
+        Contents of composited overflow-scroll are missing when newly added
+        https://bugs.webkit.org/show_bug.cgi?id=179556
+        rdar://problem/20368294
+
+        Reviewed by Tim Horton.
+
+        * compositing/backing/overflow-gains-content-expected.html: Added.
+        * compositing/backing/overflow-gains-content.html: Added.
+
 2017-11-10  Chris Dumez  <cdu...@apple.com>
 
         [Service Workers] Implement better support for "Clear Registration" algorithm

Added: trunk/LayoutTests/compositing/backing/overflow-gains-content-expected.html (0 => 224715)


--- trunk/LayoutTests/compositing/backing/overflow-gains-content-expected.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/backing/overflow-gains-content-expected.html	2017-11-11 01:07:44 UTC (rev 224715)
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+    <style>
+        #container {
+            width: 400px;
+            height: 500px;
+            overflow: scroll;
+            will-change: transform;
+        }
+        
+        #container > div {
+            background-color: green;
+            height: 100%;
+            width: 100%;
+        }
+    </style>
+</head>
+<body>
+    <div id="container">
+        <div></div>
+    </div>
+</body>
+</html>

Added: trunk/LayoutTests/compositing/backing/overflow-gains-content.html (0 => 224715)


--- trunk/LayoutTests/compositing/backing/overflow-gains-content.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/backing/overflow-gains-content.html	2017-11-11 01:07:44 UTC (rev 224715)
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+    <style>
+        #container {
+            width: 400px;
+            height: 500px;
+            overflow: scroll;
+            will-change: transform;
+        }
+        
+        #container > div {
+            background-color: green;
+            height: 100%;
+            width: 100%;
+        }
+    </style>
+    <script>
+        if (window.testRunner)
+            testRunner.waitUntilDone();
+        function appendContent()
+        {
+            var container = document.getElementById('container');
+            container.appendChild(document.createElement('div'));
+
+            if (window.testRunner)
+                testRunner.notifyDone();
+        }
+
+        function doTest()
+        {
+            window.setTimeout(appendContent, 0);
+        }
+        
+        window.addEventListener('load', doTest, false);
+    </script>
+</head>
+<body>
+    <div id="container"></div>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (224714 => 224715)


--- trunk/Source/WebCore/ChangeLog	2017-11-11 00:20:31 UTC (rev 224714)
+++ trunk/Source/WebCore/ChangeLog	2017-11-11 01:07:44 UTC (rev 224715)
@@ -1,5 +1,23 @@
 2017-11-10  Simon Fraser  <simon.fra...@apple.com>
 
+        Contents of composited overflow-scroll are missing when newly added
+        https://bugs.webkit.org/show_bug.cgi?id=179556
+        rdar://problem/20368294
+
+        Reviewed by Tim Horton.
+
+        When content is appended to an oveflow:scroll, we do a subtree layout. That triggered
+        a compositing code path that failed to call updateAfterDescendants() which is where
+        we compute whether we can be a simple composited layer without backing store. Fix to
+        call that after the updateGeometry() call, as we do elsewhere.
+
+        Test: compositing/backing/overflow-gains-content.html
+
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateAfterLayout):
+
+2017-11-10  Simon Fraser  <simon.fra...@apple.com>
+
         Remove the 'CompositingChildrenOnly' flag which was always on
         https://bugs.webkit.org/show_bug.cgi?id=179546
 

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (224714 => 224715)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2017-11-11 00:20:31 UTC (rev 224714)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2017-11-11 01:07:44 UTC (rev 224715)
@@ -646,6 +646,7 @@
         
         if (flags.contains(UpdateAfterLayoutFlags::IsUpdateRoot)) {
             updateGeometry();
+            updateAfterDescendants();
             compositor().updateRootLayerPosition();
             auto* stackingContainer = m_owningLayer.enclosingStackingContainer();
             if (!compositor().compositingLayersNeedRebuild() && stackingContainer && (stackingContainer != &m_owningLayer))
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to