Title: [260305] trunk
Revision
260305
Author
[email protected]
Date
2020-04-17 18:37:23 -0700 (Fri, 17 Apr 2020)

Log Message

Group overflow controls layers into a single container layer
https://bugs.webkit.org/show_bug.cgi?id=210675

Reviewed by Zalan Bujtas.

Source/WebCore:

Overflow control layers are going to change z-order in a future change. To make this
easier, group the overflow controls layer into their own container layer.

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateDebugIndicators):
(WebCore::RenderLayerBacking::updateGeometry): Size the overflow controls layer using paddingBoxRectIncludingScrollbar().
(WebCore::RenderLayerBacking::updateInternalHierarchy): New parenting.
(WebCore::RenderLayerBacking::updateOverflowControlsLayers): Some refactoring with a nice lambda.
(WebCore::RenderLayerBacking::positionOverflowControlsLayers): Lovely lambda here. Nice.
* rendering/RenderLayerBacking.h:

LayoutTests:

Rebaselines.

* compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt:
* compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt:
* compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt:
* compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt:
* compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt:
* compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt:
* compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt:
* compositing/overflow/overflow-auto-with-touch-expected.txt:
* compositing/overflow/overflow-overlay-with-touch-expected.txt:
* compositing/overflow/overflow-scrollbar-layer-positions-expected.txt:
* compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
* compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt:
* compositing/overflow/textarea-scroll-touch-expected.txt:
* compositing/repaint/scroller-with-foreground-layer-repaints-expected.txt:
* compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
* compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-clipped-by-scroll-expected.txt:
* compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-expected.txt:
* compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt:
* compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt:
* compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-hidden-expected.txt:
* compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-visible-expected.txt:
* compositing/scrolling/async-overflow-scrolling/layer-in-overflow-expected.txt:
* compositing/scrolling/async-overflow-scrolling/layer-in-overflow-gain-clipping-layer-expected.txt:
* compositing/scrolling/async-overflow-scrolling/layer-in-overflow-in-clipped-expected.txt:
* compositing/scrolling/async-overflow-scrolling/layer-in-overflow-lose-clipping-layer-expected.txt:
* compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers-expected.txt:
* compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt:
* compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt:
* compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt:
* compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt:
* compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt:
* compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt:
* compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt:
* compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt:
* compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt:
* fast/scrolling/mac/event-region-scrolled-contents-layer-expected.txt:
* platform/mac-wk1/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt:
* platform/mac/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt:
* tiled-drawing/scrolling/overflow/overflow-scrolled-down-tile-coverage-expected.txt:
* tiled-drawing/scrolling/overflow/overflow-scrolled-up-tile-coverage-expected.txt:
* tiled-drawing/scrolling/overflow/overflow-tile-coverage-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (260304 => 260305)


--- trunk/LayoutTests/ChangeLog	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/ChangeLog	2020-04-18 01:37:23 UTC (rev 260305)
@@ -1,3 +1,54 @@
+2020-04-17  Simon Fraser  <[email protected]>
+
+        Group overflow controls layers into a single container layer
+        https://bugs.webkit.org/show_bug.cgi?id=210675
+
+        Reviewed by Zalan Bujtas.
+
+        Rebaselines.
+
+        * compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt:
+        * compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt:
+        * compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt:
+        * compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt:
+        * compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt:
+        * compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt:
+        * compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt:
+        * compositing/overflow/overflow-auto-with-touch-expected.txt:
+        * compositing/overflow/overflow-overlay-with-touch-expected.txt:
+        * compositing/overflow/overflow-scrollbar-layer-positions-expected.txt:
+        * compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
+        * compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt:
+        * compositing/overflow/textarea-scroll-touch-expected.txt:
+        * compositing/repaint/scroller-with-foreground-layer-repaints-expected.txt:
+        * compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-clipped-by-scroll-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-hidden-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-visible-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/layer-in-overflow-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/layer-in-overflow-gain-clipping-layer-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/layer-in-overflow-in-clipped-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/layer-in-overflow-lose-clipping-layer-expected.txt:
+        * compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers-expected.txt:
+        * compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt:
+        * compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt:
+        * compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt:
+        * compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt:
+        * compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt:
+        * compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt:
+        * compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt:
+        * compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt:
+        * compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt:
+        * fast/scrolling/mac/event-region-scrolled-contents-layer-expected.txt:
+        * platform/mac-wk1/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt:
+        * platform/mac/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt:
+        * tiled-drawing/scrolling/overflow/overflow-scrolled-down-tile-coverage-expected.txt:
+        * tiled-drawing/scrolling/overflow/overflow-scrolled-up-tile-coverage-expected.txt:
+        * tiled-drawing/scrolling/overflow/overflow-tile-coverage-expected.txt:
+
 2020-04-17  Myles C. Maxfield  <[email protected]>
 
         [Cocoa] Password obscuring dots drawn with the system font are too small

Modified: trunk/LayoutTests/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -37,9 +37,15 @@
               )
             )
             (GraphicsLayer
-              (position 349.00 44.00)
-              (bounds 15.00 200.00)
-              (drawsContent 1)
+              (position 44.00 44.00)
+              (bounds 320.00 200.00)
+              (children 1
+                (GraphicsLayer
+                  (position 305.00 0.00)
+                  (bounds 15.00 200.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )
@@ -78,9 +84,15 @@
               )
             )
             (GraphicsLayer
-              (position 349.00 44.00)
-              (bounds 15.00 200.00)
-              (drawsContent 1)
+              (position 44.00 44.00)
+              (bounds 320.00 200.00)
+              (children 1
+                (GraphicsLayer
+                  (position 305.00 0.00)
+                  (bounds 15.00 200.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -12,7 +12,7 @@
           (bounds 202.00 202.00)
           (opacity 0.80)
           (drawsContent 1)
-          (children 4
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=1 height=1)
               (position 1.00 1.00)
@@ -35,20 +35,26 @@
               )
             )
             (GraphicsLayer
-              (position 1.00 186.00)
-              (bounds 185.00 15.00)
-              (drawsContent 1)
+              (position 1.00 1.00)
+              (bounds 200.00 200.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 185.00)
+                  (bounds 185.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 185.00 0.00)
+                  (bounds 15.00 185.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 185.00 185.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 186.00 1.00)
-              (bounds 15.00 185.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 186.00 186.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -44,9 +44,15 @@
                           )
                         )
                         (GraphicsLayer
-                          (position 286.00 1.00)
-                          (bounds 15.00 200.00)
-                          (drawsContent 1)
+                          (position 1.00 1.00)
+                          (bounds 300.00 200.00)
+                          (children 1
+                            (GraphicsLayer
+                              (position 285.00 0.00)
+                              (bounds 15.00 200.00)
+                              (drawsContent 1)
+                            )
+                          )
                         )
                       )
                     )
@@ -55,9 +61,15 @@
               )
             )
             (GraphicsLayer
-              (position 386.00 1.00)
-              (bounds 15.00 350.00)
-              (drawsContent 1)
+              (position 1.00 1.00)
+              (bounds 400.00 350.00)
+              (children 1
+                (GraphicsLayer
+                  (position 385.00 0.00)
+                  (bounds 15.00 350.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -24,9 +24,15 @@
               )
             )
             (GraphicsLayer
-              (position 286.00 1.00)
-              (bounds 15.00 300.00)
-              (drawsContent 1)
+              (position 1.00 1.00)
+              (bounds 300.00 300.00)
+              (children 1
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 300.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -42,9 +42,15 @@
               )
             )
             (GraphicsLayer
-              (position 286.00 1.00)
-              (bounds 15.00 300.00)
-              (drawsContent 1)
+              (position 1.00 1.00)
+              (bounds 300.00 300.00)
+              (children 1
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 300.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -43,9 +43,15 @@
                   )
                 )
                 (GraphicsLayer
-                  (position 286.00 1.00)
-                  (bounds 15.00 300.00)
-                  (drawsContent 1)
+                  (position 1.00 1.00)
+                  (bounds 300.00 300.00)
+                  (children 1
+                    (GraphicsLayer
+                      (position 285.00 0.00)
+                      (bounds 15.00 300.00)
+                      (drawsContent 1)
+                    )
+                  )
                 )
               )
             )

Modified: trunk/LayoutTests/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -25,9 +25,15 @@
               )
             )
             (GraphicsLayer
-              (position 286.00 1.00)
-              (bounds 15.00 300.00)
-              (drawsContent 1)
+              (position 1.00 1.00)
+              (bounds 300.00 300.00)
+              (children 1
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 300.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/overflow/overflow-auto-with-touch-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/overflow/overflow-auto-with-touch-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/overflow/overflow-auto-with-touch-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -9,7 +9,7 @@
         (GraphicsLayer
           (position 8.00 8.00)
           (bounds 300.00 300.00)
-          (children 4
+          (children 2
             (GraphicsLayer
               (bounds 285.00 285.00)
               (children 1
@@ -21,20 +21,25 @@
               )
             )
             (GraphicsLayer
-              (position 0.00 285.00)
-              (bounds 285.00 15.00)
-              (drawsContent 1)
+              (bounds 300.00 300.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 285.00)
+                  (bounds 285.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 285.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 285.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 285.00 0.00)
-              (bounds 15.00 285.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 285.00 285.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/overflow/overflow-overlay-with-touch-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/overflow/overflow-overlay-with-touch-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/overflow/overflow-overlay-with-touch-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -9,7 +9,7 @@
         (GraphicsLayer
           (position 8.00 8.00)
           (bounds 300.00 300.00)
-          (children 4
+          (children 2
             (GraphicsLayer
               (bounds 285.00 285.00)
               (children 1
@@ -21,20 +21,25 @@
               )
             )
             (GraphicsLayer
-              (position 0.00 285.00)
-              (bounds 285.00 15.00)
-              (drawsContent 1)
+              (bounds 300.00 300.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 285.00)
+                  (bounds 285.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 285.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 285.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 285.00 0.00)
-              (bounds 15.00 285.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 285.00 285.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/overflow/overflow-scrollbar-layer-positions-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/overflow/overflow-scrollbar-layer-positions-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/overflow/overflow-scrollbar-layer-positions-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -14,7 +14,7 @@
           (drawsContent 1)
           (children 1
             (GraphicsLayer
-              (position 207.00 22.00)
+              (position 185.00 0.00)
               (bounds 15.00 200.00)
               (drawsContent 1)
             )

Modified: trunk/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -8,7 +8,7 @@
       (children 2
         (GraphicsLayer
           (bounds 320.00 340.00)
-          (children 4
+          (children 2
             (GraphicsLayer
               (bounds 305.00 325.00)
               (children 1
@@ -19,20 +19,25 @@
               )
             )
             (GraphicsLayer
-              (position 0.00 325.00)
-              (bounds 305.00 15.00)
-              (drawsContent 1)
+              (bounds 320.00 340.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 325.00)
+                  (bounds 305.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 305.00 0.00)
+                  (bounds 15.00 325.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 305.00 325.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 305.00 0.00)
-              (bounds 15.00 325.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 305.00 325.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
         (GraphicsLayer

Modified: trunk/LayoutTests/compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -14,7 +14,7 @@
           (bounds 322.00 322.00)
           (drawsContent 1)
           (paintingPhases [background, composited-scroll])
-          (children 4
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=1 height=1)
               (position 1.00 1.00)
@@ -44,23 +44,29 @@
               )
             )
             (GraphicsLayer
-              (position 1.00 306.00)
-              (bounds 305.00 15.00)
-              (drawsContent 1)
-              (paintingPhases [background, foreground])
+              (position 1.00 1.00)
+              (bounds 320.00 320.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 305.00)
+                  (bounds 305.00 15.00)
+                  (drawsContent 1)
+                  (paintingPhases [background, foreground])
+                )
+                (GraphicsLayer
+                  (position 305.00 0.00)
+                  (bounds 15.00 305.00)
+                  (drawsContent 1)
+                  (paintingPhases [background, foreground])
+                )
+                (GraphicsLayer
+                  (position 305.00 305.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                  (paintingPhases [background, foreground])
+                )
+              )
             )
-            (GraphicsLayer
-              (position 306.00 1.00)
-              (bounds 15.00 305.00)
-              (drawsContent 1)
-              (paintingPhases [background, foreground])
-            )
-            (GraphicsLayer
-              (position 306.00 306.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-              (paintingPhases [background, foreground])
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/overflow/textarea-scroll-touch-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/overflow/textarea-scroll-touch-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/overflow/textarea-scroll-touch-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -12,7 +12,7 @@
           (bounds 206.00 126.00)
           (contentsOpaque 1)
           (drawsContent 1)
-          (children 3
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=1 height=1)
               (position 1.00 1.00)
@@ -29,15 +29,21 @@
               )
             )
             (GraphicsLayer
-              (position 190.00 1.00)
-              (bounds 15.00 109.00)
-              (drawsContent 1)
+              (position 1.00 1.00)
+              (bounds 204.00 124.00)
+              (children 2
+                (GraphicsLayer
+                  (position 189.00 0.00)
+                  (bounds 15.00 109.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 189.00 109.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 190.00 110.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
         (GraphicsLayer
@@ -45,7 +51,7 @@
           (bounds 206.00 126.00)
           (contentsOpaque 1)
           (drawsContent 1)
-          (children 3
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=1 height=1)
               (position 1.00 1.00)
@@ -62,15 +68,21 @@
               )
             )
             (GraphicsLayer
-              (position 190.00 1.00)
-              (bounds 15.00 109.00)
-              (drawsContent 1)
+              (position 1.00 1.00)
+              (bounds 204.00 124.00)
+              (children 2
+                (GraphicsLayer
+                  (position 189.00 0.00)
+                  (bounds 15.00 109.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 189.00 109.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 190.00 110.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/repaint/scroller-with-foreground-layer-repaints-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/repaint/scroller-with-foreground-layer-repaints-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/repaint/scroller-with-foreground-layer-repaints-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -11,7 +11,7 @@
           (position 8.00 8.00)
           (bounds 322.00 322.00)
           (drawsContent 1)
-          (children 4
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=1 height=1)
               (position 1.00 1.00)
@@ -41,25 +41,31 @@
               )
             )
             (GraphicsLayer
-              (position 1.00 306.00)
-              (bounds 305.00 15.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 306.00 1.00)
-              (bounds 15.00 305.00)
-              (drawsContent 1)
-              (repaint rects
-                (rect 0.00 0.00 15.00 305.00)
-                (rect 0.00 0.00 15.00 305.00)
-                (rect 0.00 0.00 15.00 305.00)
+              (position 1.00 1.00)
+              (bounds 320.00 320.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 305.00)
+                  (bounds 305.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 305.00 0.00)
+                  (bounds 15.00 305.00)
+                  (drawsContent 1)
+                  (repaint rects
+                    (rect 0.00 0.00 15.00 305.00)
+                    (rect 0.00 0.00 15.00 305.00)
+                    (rect 0.00 0.00 15.00 305.00)
+                  )
+                )
+                (GraphicsLayer
+                  (position 305.00 305.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
               )
             )
-            (GraphicsLayer
-              (position 306.00 306.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -30,9 +30,15 @@
               )
             )
             (GraphicsLayer
-              (position 2.00 206.00)
-              (bounds 400.00 15.00)
-              (drawsContent 1)
+              (position 2.00 2.00)
+              (bounds 400.00 219.00)
+              (children 1
+                (GraphicsLayer
+                  (position 0.00 204.00)
+                  (bounds 400.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-clipped-by-scroll-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-clipped-by-scroll-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-clipped-by-scroll-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -30,9 +30,15 @@
               )
             )
             (GraphicsLayer
-              (position 324.00 23.00)
-              (bounds 15.00 316.00)
-              (drawsContent 1)
+              (position 23.00 23.00)
+              (bounds 316.00 316.00)
+              (children 1
+                (GraphicsLayer
+                  (position 301.00 0.00)
+                  (bounds 15.00 316.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -30,9 +30,15 @@
               )
             )
             (GraphicsLayer
-              (position 324.00 23.00)
-              (bounds 15.00 316.00)
-              (drawsContent 1)
+              (position 23.00 23.00)
+              (bounds 316.00 316.00)
+              (children 1
+                (GraphicsLayer
+                  (position 301.00 0.00)
+                  (bounds 15.00 316.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -54,9 +54,15 @@
                               )
                             )
                             (GraphicsLayer
-                              (position 198.00 3.00)
-                              (bounds 15.00 210.00)
-                              (drawsContent 1)
+                              (position 3.00 3.00)
+                              (bounds 210.00 210.00)
+                              (children 1
+                                (GraphicsLayer
+                                  (position 195.00 0.00)
+                                  (bounds 15.00 210.00)
+                                  (drawsContent 1)
+                                )
+                              )
                             )
                           )
                         )
@@ -67,9 +73,15 @@
               )
             )
             (GraphicsLayer
-              (position 324.00 23.00)
-              (bounds 15.00 316.00)
-              (drawsContent 1)
+              (position 23.00 23.00)
+              (bounds 316.00 316.00)
+              (children 1
+                (GraphicsLayer
+                  (position 301.00 0.00)
+                  (bounds 15.00 316.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-for-negative-z-in-scroller-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -45,9 +45,15 @@
                   )
                 )
                 (GraphicsLayer
-                  (position 286.00 1.00)
-                  (bounds 15.00 300.00)
-                  (drawsContent 1)
+                  (position 1.00 1.00)
+                  (bounds 300.00 300.00)
+                  (children 1
+                    (GraphicsLayer
+                      (position 285.00 0.00)
+                      (bounds 15.00 300.00)
+                      (drawsContent 1)
+                    )
+                  )
                 )
               )
             )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-hidden-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-hidden-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-hidden-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -30,9 +30,15 @@
               )
             )
             (GraphicsLayer
-              (position 324.00 23.00)
-              (bounds 15.00 316.00)
-              (drawsContent 1)
+              (position 23.00 23.00)
+              (bounds 316.00 316.00)
+              (children 1
+                (GraphicsLayer
+                  (position 301.00 0.00)
+                  (bounds 15.00 316.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-visible-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-visible-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-clip-to-visible-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -30,9 +30,15 @@
               )
             )
             (GraphicsLayer
-              (position 324.00 23.00)
-              (bounds 15.00 316.00)
-              (drawsContent 1)
+              (position 23.00 23.00)
+              (bounds 316.00 316.00)
+              (children 1
+                (GraphicsLayer
+                  (position 301.00 0.00)
+                  (bounds 15.00 316.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -30,9 +30,15 @@
               )
             )
             (GraphicsLayer
-              (position 324.00 23.00)
-              (bounds 15.00 316.00)
-              (drawsContent 1)
+              (position 23.00 23.00)
+              (bounds 316.00 316.00)
+              (children 1
+                (GraphicsLayer
+                  (position 301.00 0.00)
+                  (bounds 15.00 316.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-gain-clipping-layer-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-gain-clipping-layer-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-gain-clipping-layer-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -30,9 +30,15 @@
               )
             )
             (GraphicsLayer
-              (position 324.00 23.00)
-              (bounds 15.00 316.00)
-              (drawsContent 1)
+              (position 23.00 23.00)
+              (bounds 316.00 316.00)
+              (children 1
+                (GraphicsLayer
+                  (position 301.00 0.00)
+                  (bounds 15.00 316.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-in-clipped-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-in-clipped-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-in-clipped-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -35,9 +35,15 @@
                   )
                 )
                 (GraphicsLayer
-                  (position 324.00 23.00)
-                  (bounds 15.00 316.00)
-                  (drawsContent 1)
+                  (position 23.00 23.00)
+                  (bounds 316.00 316.00)
+                  (children 1
+                    (GraphicsLayer
+                      (position 301.00 0.00)
+                      (bounds 15.00 316.00)
+                      (drawsContent 1)
+                    )
+                  )
                 )
               )
             )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-lose-clipping-layer-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-lose-clipping-layer-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/layer-in-overflow-lose-clipping-layer-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -30,9 +30,15 @@
               )
             )
             (GraphicsLayer
-              (position 324.00 23.00)
-              (bounds 15.00 316.00)
-              (drawsContent 1)
+              (position 23.00 23.00)
+              (bounds 316.00 316.00)
+              (children 1
+                (GraphicsLayer
+                  (position 301.00 0.00)
+                  (bounds 15.00 316.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/visibility-hidden-scrollers-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -12,7 +12,7 @@
           (position 28.00 46.00)
           (bounds 304.00 154.00)
           (drawsContent 1)
-          (children 4
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=2 height=2)
               (position 2.00 2.00)
@@ -28,20 +28,26 @@
               )
             )
             (GraphicsLayer
-              (position 2.00 137.00)
-              (bounds 285.00 15.00)
-              (drawsContent 1)
+              (position 2.00 2.00)
+              (bounds 300.00 150.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 135.00)
+                  (bounds 285.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 135.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 135.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 287.00 2.00)
-              (bounds 15.00 135.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 287.00 137.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/scrolling/overflow-scrolling-layers-are-self-painting-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -10,7 +10,7 @@
           (position 8.00 8.00)
           (bounds 302.00 302.00)
           (drawsContent 1)
-          (children 4
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=1 height=1)
               (position 1.00 1.00)
@@ -24,20 +24,26 @@
               )
             )
             (GraphicsLayer
-              (position 1.00 286.00)
-              (bounds 285.00 15.00)
-              (drawsContent 1)
+              (position 1.00 1.00)
+              (bounds 300.00 300.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 285.00)
+                  (bounds 285.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 285.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 285.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 286.00 1.00)
-              (bounds 15.00 285.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 286.00 286.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -11,7 +11,7 @@
           (position 28.00 20.00)
           (bounds 304.00 304.00)
           (drawsContent 1)
-          (children 4
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=2 height=2)
               (position 2.00 2.00)
@@ -26,20 +26,26 @@
               )
             )
             (GraphicsLayer
-              (position 2.00 287.00)
-              (bounds 285.00 15.00)
-              (drawsContent 1)
+              (position 2.00 2.00)
+              (bounds 300.00 300.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 285.00)
+                  (bounds 285.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 285.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 285.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 287.00 2.00)
-              (bounds 15.00 285.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 287.00 287.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -25,9 +25,15 @@
               )
             )
             (GraphicsLayer
-              (position 387.00 2.00)
-              (bounds 15.00 400.00)
-              (drawsContent 1)
+              (position 2.00 2.00)
+              (bounds 400.00 400.00)
+              (children 1
+                (GraphicsLayer
+                  (position 385.00 0.00)
+                  (bounds 15.00 400.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -34,9 +34,15 @@
               )
             )
             (GraphicsLayer
-              (position 287.00 2.00)
-              (bounds 15.00 300.00)
-              (drawsContent 1)
+              (position 2.00 2.00)
+              (bounds 300.00 300.00)
+              (children 1
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 300.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -36,9 +36,15 @@
                       )
                     )
                     (GraphicsLayer
-                      (position 283.00 2.00)
-                      (bounds 15.00 296.00)
-                      (drawsContent 1)
+                      (position 2.00 2.00)
+                      (bounds 296.00 296.00)
+                      (children 1
+                        (GraphicsLayer
+                          (position 281.00 0.00)
+                          (bounds 15.00 296.00)
+                          (drawsContent 1)
+                        )
+                      )
                     )
                   )
                 )

Modified: trunk/LayoutTests/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -35,9 +35,15 @@
                       )
                     )
                     (GraphicsLayer
-                      (position 283.00 2.00)
-                      (bounds 15.00 296.00)
-                      (drawsContent 1)
+                      (position 2.00 2.00)
+                      (bounds 296.00 296.00)
+                      (children 1
+                        (GraphicsLayer
+                          (position 281.00 0.00)
+                          (bounds 15.00 296.00)
+                          (drawsContent 1)
+                        )
+                      )
                     )
                   )
                 )

Modified: trunk/LayoutTests/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -36,9 +36,15 @@
                       )
                     )
                     (GraphicsLayer
-                      (position 287.00 2.00)
-                      (bounds 15.00 300.00)
-                      (drawsContent 1)
+                      (position 2.00 2.00)
+                      (bounds 300.00 300.00)
+                      (children 1
+                        (GraphicsLayer
+                          (position 285.00 0.00)
+                          (bounds 15.00 300.00)
+                          (drawsContent 1)
+                        )
+                      )
                     )
                   )
                 )

Modified: trunk/LayoutTests/compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -11,7 +11,7 @@
           (position 28.00 20.00)
           (bounds 324.00 324.00)
           (drawsContent 1)
-          (children 4
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=2 height=2)
               (position 2.00 2.00)
@@ -26,20 +26,26 @@
               )
             )
             (GraphicsLayer
-              (position 2.00 307.00)
-              (bounds 305.00 15.00)
-              (drawsContent 1)
+              (position 2.00 2.00)
+              (bounds 320.00 320.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 305.00)
+                  (bounds 305.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 305.00 0.00)
+                  (bounds 15.00 305.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 305.00 305.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 307.00 2.00)
-              (bounds 15.00 305.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 307.00 307.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt (260304 => 260305)


--- trunk/LayoutTests/compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -11,7 +11,7 @@
           (position 8.00 8.00)
           (bounds 304.00 304.00)
           (drawsContent 1)
-          (children 4
+          (children 2
             (GraphicsLayer
               (offsetFromRenderer width=2 height=2)
               (position 2.00 2.00)
@@ -26,20 +26,26 @@
               )
             )
             (GraphicsLayer
-              (position 2.00 287.00)
-              (bounds 285.00 15.00)
-              (drawsContent 1)
+              (position 2.00 2.00)
+              (bounds 300.00 300.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 285.00)
+                  (bounds 285.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 285.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 285.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 287.00 2.00)
-              (bounds 15.00 285.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 287.00 287.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/fast/scrolling/mac/event-region-scrolled-contents-layer-expected.txt (260304 => 260305)


--- trunk/LayoutTests/fast/scrolling/mac/event-region-scrolled-contents-layer-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/fast/scrolling/mac/event-region-scrolled-contents-layer-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -12,7 +12,7 @@
           (event region
             (rect (0,0) width=300 height=300)
           )
-          (children 4
+          (children 2
             (GraphicsLayer
               (bounds 285.00 285.00)
               (event region
@@ -30,20 +30,25 @@
               )
             )
             (GraphicsLayer
-              (position 0.00 285.00)
-              (bounds 285.00 15.00)
-              (drawsContent 1)
+              (bounds 300.00 300.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 285.00)
+                  (bounds 285.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 285.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 285.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 285.00 0.00)
-              (bounds 15.00 285.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 285.00 285.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/platform/mac/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt (260304 => 260305)


--- trunk/LayoutTests/platform/mac/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/platform/mac/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -9,7 +9,7 @@
         (GraphicsLayer
           (position 8.00 8.00)
           (bounds 300.00 300.00)
-          (children 4
+          (children 2
             (GraphicsLayer
               (bounds 285.00 285.00)
               (children 1
@@ -21,20 +21,25 @@
               )
             )
             (GraphicsLayer
-              (position 0.00 285.00)
-              (bounds 285.00 15.00)
-              (drawsContent 1)
+              (bounds 300.00 300.00)
+              (children 3
+                (GraphicsLayer
+                  (position 0.00 285.00)
+                  (bounds 285.00 15.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 285.00)
+                  (drawsContent 1)
+                )
+                (GraphicsLayer
+                  (position 285.00 285.00)
+                  (bounds 15.00 15.00)
+                  (drawsContent 1)
+                )
+              )
             )
-            (GraphicsLayer
-              (position 285.00 0.00)
-              (bounds 15.00 285.00)
-              (drawsContent 1)
-            )
-            (GraphicsLayer
-              (position 285.00 285.00)
-              (bounds 15.00 15.00)
-              (drawsContent 1)
-            )
           )
         )
       )

Modified: trunk/LayoutTests/platform/mac-wk1/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt (260304 => 260305)


--- trunk/LayoutTests/platform/mac-wk1/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/platform/mac-wk1/compositing/clipping/border-radius-async-overflow-clipping-layer-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -29,9 +29,15 @@
               )
             )
             (GraphicsLayer
-              (position 349.00 44.00)
-              (bounds 15.00 200.00)
-              (drawsContent 1)
+              (position 44.00 44.00)
+              (bounds 320.00 200.00)
+              (children 1
+                (GraphicsLayer
+                  (position 305.00 0.00)
+                  (bounds 15.00 200.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )
@@ -56,9 +62,15 @@
               )
             )
             (GraphicsLayer
-              (position 349.00 44.00)
-              (bounds 15.00 200.00)
-              (drawsContent 1)
+              (position 44.00 44.00)
+              (bounds 320.00 200.00)
+              (children 1
+                (GraphicsLayer
+                  (position 305.00 0.00)
+                  (bounds 15.00 200.00)
+                  (drawsContent 1)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/tiled-drawing/scrolling/overflow/overflow-scrolled-down-tile-coverage-expected.txt (260304 => 260305)


--- trunk/LayoutTests/tiled-drawing/scrolling/overflow/overflow-scrolled-down-tile-coverage-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/tiled-drawing/scrolling/overflow/overflow-scrolled-down-tile-coverage-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -55,13 +55,23 @@
               )
             )
             (GraphicsLayer
-              (position 386.00 1.00)
-              (bounds 15.00 512.00)
-              (drawsContent 1)
-              (visible rect 0.00, 0.00 15.00 x 512.00)
-              (coverage rect -444.00, -51.00 785.00 x 600.00)
+              (position 1.00 1.00)
+              (bounds 400.00 512.00)
+              (visible rect 0.00, 0.00 400.00 x 512.00)
+              (coverage rect -59.00, -51.00 785.00 x 600.00)
               (intersects coverage rect 1)
               (contentsScale 1.00)
+              (children 1
+                (GraphicsLayer
+                  (position 385.00 0.00)
+                  (bounds 15.00 512.00)
+                  (drawsContent 1)
+                  (visible rect 0.00, 0.00 15.00 x 512.00)
+                  (coverage rect -444.00, -51.00 785.00 x 600.00)
+                  (intersects coverage rect 1)
+                  (contentsScale 1.00)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/tiled-drawing/scrolling/overflow/overflow-scrolled-up-tile-coverage-expected.txt (260304 => 260305)


--- trunk/LayoutTests/tiled-drawing/scrolling/overflow/overflow-scrolled-up-tile-coverage-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/tiled-drawing/scrolling/overflow/overflow-scrolled-up-tile-coverage-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -55,13 +55,23 @@
               )
             )
             (GraphicsLayer
-              (position 386.00 1.00)
-              (bounds 15.00 512.00)
-              (drawsContent 1)
-              (visible rect 0.00, 0.00 15.00 x 512.00)
-              (coverage rect -444.00, -51.00 785.00 x 600.00)
+              (position 1.00 1.00)
+              (bounds 400.00 512.00)
+              (visible rect 0.00, 0.00 400.00 x 512.00)
+              (coverage rect -59.00, -51.00 785.00 x 600.00)
               (intersects coverage rect 1)
               (contentsScale 1.00)
+              (children 1
+                (GraphicsLayer
+                  (position 385.00 0.00)
+                  (bounds 15.00 512.00)
+                  (drawsContent 1)
+                  (visible rect 0.00, 0.00 15.00 x 512.00)
+                  (coverage rect -444.00, -51.00 785.00 x 600.00)
+                  (intersects coverage rect 1)
+                  (contentsScale 1.00)
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/tiled-drawing/scrolling/overflow/overflow-tile-coverage-expected.txt (260304 => 260305)


--- trunk/LayoutTests/tiled-drawing/scrolling/overflow/overflow-tile-coverage-expected.txt	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/LayoutTests/tiled-drawing/scrolling/overflow/overflow-tile-coverage-expected.txt	2020-04-18 01:37:23 UTC (rev 260305)
@@ -53,13 +53,23 @@
               )
             )
             (GraphicsLayer
-              (position 386.00 1.00)
-              (bounds 15.00 512.00)
-              (drawsContent 1)
-              (visible rect 0.00, 0.00 15.00 x 512.00)
-              (coverage rect -444.00, -51.00 785.00 x 600.00)
+              (position 1.00 1.00)
+              (bounds 400.00 512.00)
+              (visible rect 0.00, 0.00 400.00 x 512.00)
+              (coverage rect -59.00, -51.00 785.00 x 600.00)
               (intersects coverage rect 1)
               (contentsScale 1.00)
+              (children 1
+                (GraphicsLayer
+                  (position 385.00 0.00)
+                  (bounds 15.00 512.00)
+                  (drawsContent 1)
+                  (visible rect 0.00, 0.00 15.00 x 512.00)
+                  (coverage rect -444.00, -51.00 785.00 x 600.00)
+                  (intersects coverage rect 1)
+                  (contentsScale 1.00)
+                )
+              )
             )
           )
         )

Modified: trunk/Source/WebCore/ChangeLog (260304 => 260305)


--- trunk/Source/WebCore/ChangeLog	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/Source/WebCore/ChangeLog	2020-04-18 01:37:23 UTC (rev 260305)
@@ -1,3 +1,21 @@
+2020-04-17  Simon Fraser  <[email protected]>
+
+        Group overflow controls layers into a single container layer
+        https://bugs.webkit.org/show_bug.cgi?id=210675
+
+        Reviewed by Zalan Bujtas.
+
+        Overflow control layers are going to change z-order in a future change. To make this
+        easier, group the overflow controls layer into their own container layer.
+
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateDebugIndicators):
+        (WebCore::RenderLayerBacking::updateGeometry): Size the overflow controls layer using paddingBoxRectIncludingScrollbar().
+        (WebCore::RenderLayerBacking::updateInternalHierarchy): New parenting.
+        (WebCore::RenderLayerBacking::updateOverflowControlsLayers): Some refactoring with a nice lambda.
+        (WebCore::RenderLayerBacking::positionOverflowControlsLayers): Lovely lambda here. Nice.
+        * rendering/RenderLayerBacking.h:
+
 2020-04-17  Kate Cheney  <[email protected]>
 
         Enable service workers for app-bound domains

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (260304 => 260305)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2020-04-18 01:37:23 UTC (rev 260305)
@@ -498,6 +498,9 @@
         m_scrolledContentsLayer->setShowDebugBorder(showBorder);
         m_scrolledContentsLayer->setShowRepaintCounter(showRepaintCounter);
     }
+
+    if (m_overflowControlsContainer)
+        m_overflowControlsContainer->setShowDebugBorder(showBorder);
 }
 
 void RenderLayerBacking::createPrimaryGraphicsLayer()
@@ -1325,7 +1328,7 @@
 
         // FIXME: need to do some pixel snapping here.
         m_scrollContainerLayer->setPosition(FloatPoint(paddingBox.location() - parentLayerBounds.location()));
-        m_scrollContainerLayer->setSize(roundedIntSize(LayoutSize(renderBox.paddingBoxWidth(), renderBox.paddingBoxHeight())));
+        m_scrollContainerLayer->setSize(roundedIntSize(LayoutSize(paddingBox.width(), paddingBox.height())));
 
         ScrollOffset scrollOffset = m_owningLayer.scrollOffset();
         updateScrollOffset(scrollOffset);
@@ -1351,7 +1354,18 @@
         
         adjustTiledBackingCoverage();
     }
+    
+    if (m_overflowControlsContainer) {
+        auto& renderBox = downcast<RenderBox>(renderer());
+        LayoutRect paddingBox = renderBox.paddingBoxRectIncludingScrollbar();
 
+        LayoutSize paddingBoxOffsetFromGraphicsLayer = toLayoutSize(paddingBox.location()) + rendererOffset.fromPrimaryGraphicsLayer();
+        SnappedRectInfo snappedPaddingBoxInfo = snappedGraphicsLayer(paddingBoxOffsetFromGraphicsLayer, paddingBox.size(), deviceScaleFactor());
+
+        m_overflowControlsContainer->setPosition(snappedPaddingBoxInfo.m_snappedRect.location());
+        m_overflowControlsContainer->setSize(snappedPaddingBoxInfo.m_snappedRect.size());
+    }
+
     if (m_foregroundLayer) {
         FloatSize foregroundSize;
         FloatSize foregroundOffset;
@@ -1545,14 +1559,18 @@
     // The clip for child layers does not include space for overflow controls, so they exist as
     // siblings of the clipping layer if we have one. Normal children of this layer are set as
     // children of the clipping layer.
-    if (m_layerForHorizontalScrollbar)
-        m_graphicsLayer->addChild(*m_layerForHorizontalScrollbar);
+    if (m_overflowControlsContainer) {
+        if (m_layerForHorizontalScrollbar)
+            m_overflowControlsContainer->addChild(*m_layerForHorizontalScrollbar);
 
-    if (m_layerForVerticalScrollbar)
-        m_graphicsLayer->addChild(*m_layerForVerticalScrollbar);
+        if (m_layerForVerticalScrollbar)
+            m_overflowControlsContainer->addChild(*m_layerForVerticalScrollbar);
 
-    if (m_layerForScrollCorner)
-        m_graphicsLayer->addChild(*m_layerForScrollCorner);
+        if (m_layerForScrollCorner)
+            m_overflowControlsContainer->addChild(*m_layerForScrollCorner);
+
+        m_graphicsLayer->addChild(*m_overflowControlsContainer);
+    }
 }
 
 void RenderLayerBacking::resetContentsRect()
@@ -1810,45 +1828,35 @@
 
 bool RenderLayerBacking::updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer, bool needsVerticalScrollbarLayer, bool needsScrollCornerLayer)
 {
-    bool horizontalScrollbarLayerChanged = false;
-    if (needsHorizontalScrollbarLayer) {
-        if (!m_layerForHorizontalScrollbar) {
-            m_layerForHorizontalScrollbar = createGraphicsLayer("horizontal scrollbar");
-            m_layerForHorizontalScrollbar->setAllowsBackingStoreDetaching(false);
-            horizontalScrollbarLayerChanged = true;
-        }
-    } else if (m_layerForHorizontalScrollbar) {
-        willDestroyLayer(m_layerForHorizontalScrollbar.get());
-        GraphicsLayer::unparentAndClear(m_layerForHorizontalScrollbar);
-        horizontalScrollbarLayerChanged = true;
-    }
+    auto createOrDestroyLayer = [&](RefPtr<GraphicsLayer>& layer, bool needLayer, bool drawsContent, const char* layerName) {
+        if (needLayer == !!layer)
+            return false;
 
-    bool verticalScrollbarLayerChanged = false;
-    if (needsVerticalScrollbarLayer) {
-        if (!m_layerForVerticalScrollbar) {
-            m_layerForVerticalScrollbar = createGraphicsLayer("vertical scrollbar");
-            m_layerForVerticalScrollbar->setAllowsBackingStoreDetaching(false);
-            verticalScrollbarLayerChanged = true;
+        if (needLayer) {
+            layer = createGraphicsLayer(layerName);
+            if (drawsContent)
+                layer->setAllowsBackingStoreDetaching(false);
+            else {
+                layer->setPaintingPhase({ });
+                layer->setDrawsContent(false);
+            }
+        } else {
+            willDestroyLayer(layer.get());
+            GraphicsLayer::unparentAndClear(layer);
         }
-    } else if (m_layerForVerticalScrollbar) {
-        willDestroyLayer(m_layerForVerticalScrollbar.get());
-        GraphicsLayer::unparentAndClear(m_layerForVerticalScrollbar);
-        verticalScrollbarLayerChanged = true;
-    }
+        return true;
+    };
 
-    bool scrollCornerLayerChanged = false;
-    if (needsScrollCornerLayer) {
-        if (!m_layerForScrollCorner) {
-            m_layerForScrollCorner = createGraphicsLayer("scroll corner");
-            m_layerForScrollCorner->setAllowsBackingStoreDetaching(false);
-            scrollCornerLayerChanged = true;
-        }
-    } else if (m_layerForScrollCorner) {
-        willDestroyLayer(m_layerForScrollCorner.get());
-        GraphicsLayer::unparentAndClear(m_layerForScrollCorner);
-        scrollCornerLayerChanged = true;
-    }
+    bool layersChanged = createOrDestroyLayer(m_overflowControlsContainer, needsHorizontalScrollbarLayer || needsVerticalScrollbarLayer || needsScrollCornerLayer, false, "overflow controls container");
 
+    bool horizontalScrollbarLayerChanged = createOrDestroyLayer(m_layerForHorizontalScrollbar, needsHorizontalScrollbarLayer, true, "horizontal scrollbar");
+    layersChanged |= horizontalScrollbarLayerChanged;
+
+    bool verticalScrollbarLayerChanged = createOrDestroyLayer(m_layerForVerticalScrollbar, needsVerticalScrollbarLayer, true, "vertical scrollbar");
+    layersChanged |= verticalScrollbarLayerChanged;
+
+    layersChanged |= createOrDestroyLayer(m_layerForScrollCorner, needsScrollCornerLayer, true, "scroll corner");
+
     if (auto* scrollingCoordinator = m_owningLayer.page().scrollingCoordinator()) {
         if (horizontalScrollbarLayerChanged)
             scrollingCoordinator->scrollableAreaScrollbarLayerDidChange(m_owningLayer, HorizontalScrollbar);
@@ -1856,7 +1864,7 @@
             scrollingCoordinator->scrollableAreaScrollbarLayerDidChange(m_owningLayer, VerticalScrollbar);
     }
 
-    return horizontalScrollbarLayerChanged || verticalScrollbarLayerChanged || scrollCornerLayerChanged;
+    return layersChanged;
 }
 
 void RenderLayerBacking::positionOverflowControlsLayers()
@@ -1864,36 +1872,37 @@
     if (!m_owningLayer.hasScrollbars())
         return;
 
-    const IntRect borderBox = snappedIntRect(renderBox()->borderBoxRect());
+    // FIXME: Should do device-pixel snapping.
+    auto box = renderBox();
+    auto borderBox = snappedIntRect(box->borderBoxRect());
 
-    FloatSize offsetFromRenderer = m_graphicsLayer->offsetFromRenderer();
+    // m_overflowControlsContainer is positioned using the paddingBoxRectIncludingScrollbar.
+    auto paddingBox = snappedIntRect(box->paddingBoxRectIncludingScrollbar());
+    auto paddingBoxInset = paddingBox.location() - borderBox.location();
+
+    auto positionScrollbarLayer = [](GraphicsLayer& layer, const IntRect& scrollbarRect, IntSize paddingBoxInset) {
+        layer.setPosition(scrollbarRect.location() - paddingBoxInset);
+        layer.setSize(scrollbarRect.size());
+        if (layer.usesContentsLayer()) {
+            IntRect barRect = IntRect(IntPoint(), scrollbarRect.size());
+            layer.setContentsRect(barRect);
+            layer.setContentsClippingRect(FloatRoundedRect(barRect));
+        }
+    };
+
     if (auto* layer = layerForHorizontalScrollbar()) {
-        IntRect hBarRect = m_owningLayer.rectForHorizontalScrollbar(borderBox);
-        layer->setPosition(hBarRect.location() - offsetFromRenderer);
-        layer->setSize(hBarRect.size());
-        if (layer->usesContentsLayer()) {
-            IntRect barRect = IntRect(IntPoint(), hBarRect.size());
-            layer->setContentsRect(barRect);
-            layer->setContentsClippingRect(FloatRoundedRect(barRect));
-        }
+        positionScrollbarLayer(*layer, m_owningLayer.rectForHorizontalScrollbar(borderBox), paddingBoxInset);
         layer->setDrawsContent(m_owningLayer.horizontalScrollbar() && !layer->usesContentsLayer());
     }
-    
+
     if (auto* layer = layerForVerticalScrollbar()) {
-        IntRect vBarRect = m_owningLayer.rectForVerticalScrollbar(borderBox);
-        layer->setPosition(vBarRect.location() - offsetFromRenderer);
-        layer->setSize(vBarRect.size());
-        if (layer->usesContentsLayer()) {
-            IntRect barRect = IntRect(IntPoint(), vBarRect.size());
-            layer->setContentsRect(barRect);
-            layer->setContentsClippingRect(FloatRoundedRect(barRect));
-        }
+        positionScrollbarLayer(*layer, m_owningLayer.rectForVerticalScrollbar(borderBox), paddingBoxInset);
         layer->setDrawsContent(m_owningLayer.verticalScrollbar() && !layer->usesContentsLayer());
     }
 
     if (auto* layer = layerForScrollCorner()) {
         const LayoutRect& scrollCornerAndResizer = m_owningLayer.scrollCornerAndResizerRect();
-        layer->setPosition(scrollCornerAndResizer.location() - offsetFromRenderer);
+        layer->setPosition(scrollCornerAndResizer.location() - paddingBoxInset);
         layer->setSize(scrollCornerAndResizer.size());
         layer->setDrawsContent(!scrollCornerAndResizer.isEmpty());
     }

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.h (260304 => 260305)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.h	2020-04-18 01:26:32 UTC (rev 260304)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.h	2020-04-18 01:37:23 UTC (rev 260305)
@@ -403,6 +403,7 @@
     RefPtr<GraphicsLayer> m_layerForHorizontalScrollbar;
     RefPtr<GraphicsLayer> m_layerForVerticalScrollbar;
     RefPtr<GraphicsLayer> m_layerForScrollCorner;
+    RefPtr<GraphicsLayer> m_overflowControlsContainer;
 
     RefPtr<GraphicsLayer> m_scrollContainerLayer; // Only used if the layer is using composited scrolling.
     RefPtr<GraphicsLayer> m_scrolledContentsLayer; // Only used if the layer is using composited scrolling.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to