Title: [252439] trunk
Revision
252439
Author
[email protected]
Date
2019-11-13 16:35:07 -0800 (Wed, 13 Nov 2019)

Log Message

REGRESSION (r249434): flashy menus on wellsfargo.com
https://bugs.webkit.org/show_bug.cgi?id=204175
<rdar://problem/56654512>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: compositing/backing/backing-for-clipping.html

r249434 made overflow an "indirect compositing reason" (i.e. we composite for overflow:hidden
when necessary to clip a composited descendant). However this made a clause in RenderLayerCompositor::requiresOwnBackingStore()
return early when this reason is set, skipping the bounds check, so we need to do the bound check first.
This is similar to the fix in r252070.

The change to the perspective test relates to the "FIXME"; we don't use the correct ancestor for the
bounds check, so sometimes layers can have backing store when they don't need it until that's fixed.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):

LayoutTests:

* compositing/backing/backing-for-clipping-expected.html: Added.
* compositing/backing/backing-for-clipping.html: Added.
* compositing/backing/no-backing-for-perspective-expected.txt:
* platform/ios-wk2/compositing/backing/no-backing-for-perspective-expected.txt:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (252438 => 252439)


--- trunk/LayoutTests/ChangeLog	2019-11-14 00:25:27 UTC (rev 252438)
+++ trunk/LayoutTests/ChangeLog	2019-11-14 00:35:07 UTC (rev 252439)
@@ -187,6 +187,19 @@
         and fast/visual-viewport/zoomed-fixed-scroll-down-then-up.html as
         Failure.
 
+2019-11-13  Simon Fraser  <[email protected]>
+
+        REGRESSION (r249434): flashy menus on wellsfargo.com
+        https://bugs.webkit.org/show_bug.cgi?id=204175
+        <rdar://problem/56654512>
+
+        Reviewed by Zalan Bujtas.
+
+        * compositing/backing/backing-for-clipping-expected.html: Added.
+        * compositing/backing/backing-for-clipping.html: Added.
+        * compositing/backing/no-backing-for-perspective-expected.txt:
+        * platform/ios-wk2/compositing/backing/no-backing-for-perspective-expected.txt:
+
 2019-11-11  Ryosuke Niwa  <[email protected]>
 
         iOS: fast/scrolling/ios/scrollTo-at-page-load.html is flaky

Added: trunk/LayoutTests/compositing/backing/backing-for-clipping-expected.html (0 => 252439)


--- trunk/LayoutTests/compositing/backing/backing-for-clipping-expected.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/backing/backing-for-clipping-expected.html	2019-11-14 00:35:07 UTC (rev 252439)
@@ -0,0 +1,53 @@
+<html>
+<head>
+    <style>
+        header {
+            position: fixed;
+            left: 0px;
+            right: 0px;
+            top: 0px;
+            height: 50px;
+            width: 400px;
+            background-color: silver;
+        }
+
+        .container
+        {
+            position: absolute;
+            left: 50px;
+            top: 30px;
+            background-color: silver;
+            width: 300px;
+            z-index: 1;        
+        }
+    
+        .child {
+            width: 100%;
+            height: 50px;
+            background-color: green;
+        }
+        
+        body.changed .composited {
+              transform: translateZ(0);
+        }
+    </style>
+    <script>
+        
+        window.addEventListener('load', () => {
+            setTimeout(() => {
+                document.body.classList.add('changed');
+            }, 0)
+        }, false);
+    </script>
+</head>
+<body>
+    <header>
+        &nbsp;
+        <div class="container">
+            <div class="child">&nbsp;</div>
+            <div class="child">&nbsp;</div>
+            <div class="composited child">&nbsp;</div>
+        </div>
+    </header>
+</body>
+</html>
\ No newline at end of file

Added: trunk/LayoutTests/compositing/backing/backing-for-clipping.html (0 => 252439)


--- trunk/LayoutTests/compositing/backing/backing-for-clipping.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/backing/backing-for-clipping.html	2019-11-14 00:35:07 UTC (rev 252439)
@@ -0,0 +1,58 @@
+<html>
+<head>
+    <style>
+        header {
+            position: fixed;
+            left: 0px;
+            right: 0px;
+            top: 0px;
+            height: 50px;
+            width: 400px;
+            background-color: silver;
+        }
+
+        .container
+        {
+            position: absolute;
+            left: 50px;
+            top: 30px;
+            background-color: silver;
+            overflow-x: hidden;
+            overflow-y: auto;
+            width: 300px;
+            z-index: 1;        
+        }
+    
+        .child {
+            width: 100%;
+            height: 50px;
+            background-color: green;
+        }
+        
+        body.changed .composited {
+              transform: translateZ(0);
+        }
+    </style>
+    <script>
+        if (window.testRunner)
+            testRunner.waitUntilDone();
+        window.addEventListener('load', () => {
+            setTimeout(() => {
+                document.body.classList.add('changed');
+                if (window.testRunner)
+                    testRunner.notifyDone();
+            }, 0)
+        }, false);
+    </script>
+</head>
+<body>
+    <header>
+        &nbsp;
+        <div class="container">
+            <div class="child">&nbsp;</div>
+            <div class="child">&nbsp;</div>
+            <div class="composited child">&nbsp;</div>
+        </div>
+    </header>
+</body>
+</html>
\ No newline at end of file

Modified: trunk/LayoutTests/compositing/backing/no-backing-for-perspective-expected.txt (252438 => 252439)


--- trunk/LayoutTests/compositing/backing/no-backing-for-perspective-expected.txt	2019-11-14 00:25:27 UTC (rev 252438)
+++ trunk/LayoutTests/compositing/backing/no-backing-for-perspective-expected.txt	2019-11-14 00:35:07 UTC (rev 252439)
@@ -16,6 +16,7 @@
             (GraphicsLayer
               (position 21.00 39.00)
               (bounds 342.00 180.00)
+              (drawsContent 1)
               (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 -0.00] [0.00 0.00 0.00 1.00])
               (children 1
                 (GraphicsLayer

Modified: trunk/LayoutTests/platform/ios-wk2/compositing/backing/no-backing-for-perspective-expected.txt (252438 => 252439)


--- trunk/LayoutTests/platform/ios-wk2/compositing/backing/no-backing-for-perspective-expected.txt	2019-11-14 00:25:27 UTC (rev 252438)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/backing/no-backing-for-perspective-expected.txt	2019-11-14 00:35:07 UTC (rev 252439)
@@ -16,6 +16,7 @@
             (GraphicsLayer
               (position 21.00 41.00)
               (bounds 342.00 182.00)
+              (drawsContent 1)
               (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 -0.00] [0.00 0.00 0.00 1.00])
               (children 1
                 (GraphicsLayer

Modified: trunk/Source/WebCore/ChangeLog (252438 => 252439)


--- trunk/Source/WebCore/ChangeLog	2019-11-14 00:25:27 UTC (rev 252438)
+++ trunk/Source/WebCore/ChangeLog	2019-11-14 00:35:07 UTC (rev 252439)
@@ -713,6 +713,27 @@
         * Modules/modern-media-controls/media/pip-support.js:
         (PiPSupport.prototype.buttonWasPressed):
 
+2019-11-13  Simon Fraser  <[email protected]>
+
+        REGRESSION (r249434): flashy menus on wellsfargo.com
+        https://bugs.webkit.org/show_bug.cgi?id=204175
+        <rdar://problem/56654512>
+
+        Reviewed by Zalan Bujtas.
+
+        Test: compositing/backing/backing-for-clipping.html
+        
+        r249434 made overflow an "indirect compositing reason" (i.e. we composite for overflow:hidden
+        when necessary to clip a composited descendant). However this made a clause in RenderLayerCompositor::requiresOwnBackingStore()
+        return early when this reason is set, skipping the bounds check, so we need to do the bound check first.
+        This is similar to the fix in r252070.
+
+        The change to the perspective test relates to the "FIXME"; we don't use the correct ancestor for the
+        bounds check, so sometimes layers can have backing store when they don't need it until that's fixed.
+
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
+
 2019-11-11  Per Arne Vollan  <[email protected]>
 
         Many legacy animation tests are timing out with VS2019

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (252438 => 252439)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-11-14 00:25:27 UTC (rev 252438)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-11-14 00:35:07 UTC (rev 252439)
@@ -2426,6 +2426,10 @@
     if (layer.isComposited() && layer.backing()->hasBackingSharingLayers())
         return true;
 
+    // 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.mustCompositeForIndirectReasons()) {
         IndirectCompositingReason reason = layer.indirectCompositingReason();
         return reason == IndirectCompositingReason::Overlap
@@ -2436,10 +2440,6 @@
             || 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;
-
     return false;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to