Title: [240553] trunk
Revision
240553
Author
[email protected]
Date
2019-01-27 08:58:48 -0800 (Sun, 27 Jan 2019)

Log Message

Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node
https://bugs.webkit.org/show_bug.cgi?id=193879

Reviewed by Antti Koivisto.

Source/WebCore:

Currently we parent iframe scrolling tree nodes by finding the closest ancestor layer with a scrolling tree node.
This results in scrolling tree nodes being connected across iframe boundaries in some arbitrary ancestor. This
makes updating scrolling tree geometry very error-prone, since changes in the parent document will need to trigger
updates of the scrolling tree node in an iframe.

To address this, I already added a new "FrameHosting" scrolling node type. This patch actually instantiates these
nodes, which are owned by the RenderIFrame's composited layer. Connecting across frame boundaries is theforefore
simply a case of getting the FrameHosting node from the ownerElement's renderer; this is very similar to how we
connect GraphicsLayers together.

RenderLayerBacking gains another scrolling role for FrameHosting and ScrollingNodeID.

Tested by existing tests.

* page/FrameView.h:
* rendering/RenderLayer.cpp:
(WebCore::outputPaintOrderTreeRecursive):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
* rendering/RenderLayerCompositor.cpp:
(WebCore::frameContentsRenderView):
(WebCore::RenderLayerCompositor::frameContentsCompositor):
(WebCore::RenderLayerCompositor::parentFrameContentLayers):
(WebCore::RenderLayerCompositor::isLayerForIFrameWithScrollCoordinatedContents const):
(WebCore::RenderLayerCompositor::detachRootLayer):
(WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus):
(WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):
(WebCore::scrollCoordinatedAncestorInParentOfFrame):
(WebCore::RenderLayerCompositor::reattachSubframeScrollLayers):
(WebCore::RenderLayerCompositor::attachScrollingNode):
(WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame):
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
* rendering/RenderLayerCompositor.h:
* testing/Internals.cpp:
(WebCore::Internals::scrollingStateTreeAsText const):

Source/WebKit:

Need a specialization of dump() for ScrollingStateFrameHostingNode to avoid infinite recursion.

* Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
(WebKit::dump):

LayoutTests:

New test results with FrameHosting nodes.

* platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt:
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt:
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt:
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt:
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt:
* platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt:
* scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt:
* scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt:
* scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt:
* scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt:
* scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
* scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt:
* scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (240552 => 240553)


--- trunk/LayoutTests/ChangeLog	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/ChangeLog	2019-01-27 16:58:48 UTC (rev 240553)
@@ -1,3 +1,27 @@
+2019-01-26  Simon Fraser  <[email protected]>
+
+        Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node
+        https://bugs.webkit.org/show_bug.cgi?id=193879
+
+        Reviewed by Antti Koivisto.
+
+        New test results with FrameHosting nodes.
+
+        * platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt:
+        * platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt:
+        * platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt:
+        * platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt:
+        * platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
+        * platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt:
+        * platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt:
+        * scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt:
+        * scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt:
+        * scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt:
+        * scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt:
+        * scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
+        * scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt:
+        * scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt:
+
 2019-01-26  Devin Rousso  <[email protected]>
 
         Web Inspector: handle CSS Color 4 color syntaxes

Modified: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt (240552 => 240553)


--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -13,51 +13,55 @@
   (max layout viewport origin (0,416))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 500 300)
-      (contents size 500 420)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 1)
-        (vertical scroll elasticity 1)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 500x300)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,120))
-      (behavior for fixed 0)
-      (children 2
-        (Overflow scrolling node
-          (scrollable area size 400 300)
-          (contents size 400 1760)
+    (Frame hosting node
+      (children 1
+        (Frame scrolling node
+          (scrollable area size 500 300)
+          (contents size 500 420)
           (scrollable area parameters 
             (horizontal scroll elasticity 1)
             (vertical scroll elasticity 1)
             (horizontal scrollbar mode 0)
             (vertical scrollbar mode 0))
-          (children 1
+          (visual viewport enabled 1)
+          (layout viewport at (0,0) size 500x300)
+          (min layout viewport origin (0,0))
+          (max layout viewport origin (0,120))
+          (behavior for fixed 0)
+          (children 2
+            (Overflow scrolling node
+              (scrollable area size 400 300)
+              (contents size 400 1760)
+              (scrollable area parameters 
+                (horizontal scroll elasticity 1)
+                (vertical scroll elasticity 1)
+                (horizontal scrollbar mode 0)
+                (vertical scrollbar mode 0))
+              (children 1
+                (Sticky node
+                  (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
+                  (top offset 10.00)
+                  (bottom offset 10.00)
+                  (containing block rect at (2,2) size 400x1760)
+                  (sticky box rect at (0,830) size 100x100)
+                  (constraining rect at (0,0) size 400x300)
+                  (sticky offset at last layout width=0 height=-640)
+                  (layer position at last layout (0,190))
+                )
+              )
+            )
             (Sticky node
               (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
               (top offset 10.00)
               (bottom offset 10.00)
-              (containing block rect at (2,2) size 400x1760)
-              (sticky box rect at (0,830) size 100x100)
-              (constraining rect at (0,0) size 400x300)
-              (sticky offset at last layout width=0 height=-640)
-              (layer position at last layout (0,190))
+              (containing block rect at (8,8) size 484x404)
+              (sticky box rect at (8,312) size 100x100)
+              (constraining rect at (0,0) size 500x300)
+              (sticky offset at last layout width=0 height=-122)
+              (layer position at last layout (8,190))
             )
           )
         )
-        (Sticky node
-          (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
-          (top offset 10.00)
-          (bottom offset 10.00)
-          (containing block rect at (8,8) size 484x404)
-          (sticky box rect at (8,312) size 100x100)
-          (constraining rect at (0,0) size 500x300)
-          (sticky offset at last layout width=0 height=-122)
-          (layer position at last layout (8,190))
-        )
       )
     )
   )

Modified: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt (240552 => 240553)


--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -18,51 +18,55 @@
       (viewport rect at last layout at (0,0) size 800x600)
       (layer position at last layout (8,10))
       (children 1
-        (Frame scrolling node
-          (scrollable area size 500 300)
-          (contents size 500 420)
-          (scrollable area parameters 
-            (horizontal scroll elasticity 1)
-            (vertical scroll elasticity 1)
-            (horizontal scrollbar mode 1)
-            (vertical scrollbar mode 1))
-          (visual viewport enabled 1)
-          (layout viewport at (0,0) size 500x300)
-          (min layout viewport origin (0,0))
-          (max layout viewport origin (0,120))
-          (behavior for fixed 0)
-          (children 2
-            (Overflow scrolling node
-              (scrollable area size 400 300)
-              (contents size 400 1760)
+        (Frame hosting node
+          (children 1
+            (Frame scrolling node
+              (scrollable area size 500 300)
+              (contents size 500 420)
               (scrollable area parameters 
                 (horizontal scroll elasticity 1)
                 (vertical scroll elasticity 1)
-                (horizontal scrollbar mode 0)
-                (vertical scrollbar mode 0))
-              (children 1
+                (horizontal scrollbar mode 1)
+                (vertical scrollbar mode 1))
+              (visual viewport enabled 1)
+              (layout viewport at (0,0) size 500x300)
+              (min layout viewport origin (0,0))
+              (max layout viewport origin (0,120))
+              (behavior for fixed 0)
+              (children 2
+                (Overflow scrolling node
+                  (scrollable area size 400 300)
+                  (contents size 400 1760)
+                  (scrollable area parameters 
+                    (horizontal scroll elasticity 1)
+                    (vertical scroll elasticity 1)
+                    (horizontal scrollbar mode 0)
+                    (vertical scrollbar mode 0))
+                  (children 1
+                    (Sticky node
+                      (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
+                      (top offset 10.00)
+                      (bottom offset 10.00)
+                      (containing block rect at (2,2) size 400x1760)
+                      (sticky box rect at (0,830) size 100x100)
+                      (constraining rect at (0,0) size 400x300)
+                      (sticky offset at last layout width=0 height=-640)
+                      (layer position at last layout (0,190))
+                    )
+                  )
+                )
                 (Sticky node
                   (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
                   (top offset 10.00)
                   (bottom offset 10.00)
-                  (containing block rect at (2,2) size 400x1760)
-                  (sticky box rect at (0,830) size 100x100)
-                  (constraining rect at (0,0) size 400x300)
-                  (sticky offset at last layout width=0 height=-640)
-                  (layer position at last layout (0,190))
+                  (containing block rect at (8,8) size 484x404)
+                  (sticky box rect at (8,312) size 100x100)
+                  (constraining rect at (0,0) size 500x300)
+                  (sticky offset at last layout width=0 height=-122)
+                  (layer position at last layout (8,190))
                 )
               )
             )
-            (Sticky node
-              (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
-              (top offset 10.00)
-              (bottom offset 10.00)
-              (containing block rect at (8,8) size 484x404)
-              (sticky box rect at (8,312) size 100x100)
-              (constraining rect at (0,0) size 500x300)
-              (sticky offset at last layout width=0 height=-122)
-              (layer position at last layout (8,190))
-            )
           )
         )
       )

Modified: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt (240552 => 240553)


--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -18,51 +18,55 @@
       (viewport rect at last layout at (0,0) size 800x600)
       (layer position at last layout (8,0))
       (children 1
-        (Frame scrolling node
-          (scrollable area size 500 300)
-          (contents size 500 420)
-          (scrollable area parameters 
-            (horizontal scroll elasticity 1)
-            (vertical scroll elasticity 1)
-            (horizontal scrollbar mode 0)
-            (vertical scrollbar mode 0))
-          (visual viewport enabled 1)
-          (layout viewport at (0,0) size 500x300)
-          (min layout viewport origin (0,0))
-          (max layout viewport origin (0,120))
-          (behavior for fixed 0)
-          (children 2
-            (Overflow scrolling node
-              (scrollable area size 400 300)
-              (contents size 400 1760)
+        (Frame hosting node
+          (children 1
+            (Frame scrolling node
+              (scrollable area size 500 300)
+              (contents size 500 420)
               (scrollable area parameters 
                 (horizontal scroll elasticity 1)
                 (vertical scroll elasticity 1)
                 (horizontal scrollbar mode 0)
                 (vertical scrollbar mode 0))
-              (children 1
+              (visual viewport enabled 1)
+              (layout viewport at (0,0) size 500x300)
+              (min layout viewport origin (0,0))
+              (max layout viewport origin (0,120))
+              (behavior for fixed 0)
+              (children 2
+                (Overflow scrolling node
+                  (scrollable area size 400 300)
+                  (contents size 400 1760)
+                  (scrollable area parameters 
+                    (horizontal scroll elasticity 1)
+                    (vertical scroll elasticity 1)
+                    (horizontal scrollbar mode 0)
+                    (vertical scrollbar mode 0))
+                  (children 1
+                    (Sticky node
+                      (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
+                      (top offset 10.00)
+                      (bottom offset 10.00)
+                      (containing block rect at (2,2) size 400x1760)
+                      (sticky box rect at (0,830) size 100x100)
+                      (constraining rect at (0,0) size 400x300)
+                      (sticky offset at last layout width=0 height=-640)
+                      (layer position at last layout (0,190))
+                    )
+                  )
+                )
                 (Sticky node
                   (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
                   (top offset 10.00)
                   (bottom offset 10.00)
-                  (containing block rect at (2,2) size 400x1760)
-                  (sticky box rect at (0,830) size 100x100)
-                  (constraining rect at (0,0) size 400x300)
-                  (sticky offset at last layout width=0 height=-640)
-                  (layer position at last layout (0,190))
+                  (containing block rect at (8,8) size 484x404)
+                  (sticky box rect at (8,312) size 100x100)
+                  (constraining rect at (0,0) size 500x300)
+                  (sticky offset at last layout width=0 height=-122)
+                  (layer position at last layout (8,190))
                 )
               )
             )
-            (Sticky node
-              (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
-              (top offset 10.00)
-              (bottom offset 10.00)
-              (containing block rect at (8,8) size 484x404)
-              (sticky box rect at (8,312) size 100x100)
-              (constraining rect at (0,0) size 500x300)
-              (sticky offset at last layout width=0 height=-122)
-              (layer position at last layout (8,190))
-            )
           )
         )
       )

Modified: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt (240552 => 240553)


--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -13,51 +13,55 @@
   (max layout viewport origin (0,416))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 500 300)
-      (contents size 500 420)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 1)
-        (vertical scroll elasticity 1)
-        (horizontal scrollbar mode 1)
-        (vertical scrollbar mode 1))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 500x300)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,120))
-      (behavior for fixed 0)
-      (children 2
-        (Overflow scrolling node
-          (scrollable area size 400 300)
-          (contents size 400 1760)
+    (Frame hosting node
+      (children 1
+        (Frame scrolling node
+          (scrollable area size 500 300)
+          (contents size 500 420)
           (scrollable area parameters 
             (horizontal scroll elasticity 1)
             (vertical scroll elasticity 1)
-            (horizontal scrollbar mode 0)
-            (vertical scrollbar mode 0))
-          (children 1
+            (horizontal scrollbar mode 1)
+            (vertical scrollbar mode 1))
+          (visual viewport enabled 1)
+          (layout viewport at (0,0) size 500x300)
+          (min layout viewport origin (0,0))
+          (max layout viewport origin (0,120))
+          (behavior for fixed 0)
+          (children 2
+            (Overflow scrolling node
+              (scrollable area size 400 300)
+              (contents size 400 1760)
+              (scrollable area parameters 
+                (horizontal scroll elasticity 1)
+                (vertical scroll elasticity 1)
+                (horizontal scrollbar mode 0)
+                (vertical scrollbar mode 0))
+              (children 1
+                (Sticky node
+                  (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
+                  (top offset 10.00)
+                  (bottom offset 10.00)
+                  (containing block rect at (2,2) size 400x1760)
+                  (sticky box rect at (0,830) size 100x100)
+                  (constraining rect at (0,0) size 400x300)
+                  (sticky offset at last layout width=0 height=-640)
+                  (layer position at last layout (0,190))
+                )
+              )
+            )
             (Sticky node
               (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
               (top offset 10.00)
               (bottom offset 10.00)
-              (containing block rect at (2,2) size 400x1760)
-              (sticky box rect at (0,830) size 100x100)
-              (constraining rect at (0,0) size 400x300)
-              (sticky offset at last layout width=0 height=-640)
-              (layer position at last layout (0,190))
+              (containing block rect at (8,8) size 484x404)
+              (sticky box rect at (8,312) size 100x100)
+              (constraining rect at (0,0) size 500x300)
+              (sticky offset at last layout width=0 height=-122)
+              (layer position at last layout (8,190))
             )
           )
         )
-        (Sticky node
-          (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
-          (top offset 10.00)
-          (bottom offset 10.00)
-          (containing block rect at (8,8) size 484x404)
-          (sticky box rect at (8,312) size 100x100)
-          (constraining rect at (0,0) size 500x300)
-          (sticky offset at last layout width=0 height=-122)
-          (layer position at last layout (8,190))
-        )
       )
     )
   )

Modified: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt (240552 => 240553)


--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -14,26 +14,30 @@
   (max layout viewport origin (0,57))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 480 400)
-      (contents size 480 1016)
-      (requested scroll position 0 120)
-      (requested scroll position represents programmatic scroll 1)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 1)
-        (vertical scroll elasticity 1)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0))
-      (visual viewport enabled 1)
-      (layout viewport at (0,120) size 480x400)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,616))
-      (behavior for fixed 0)
+    (Frame hosting node
       (children 1
-        (Fixed node
-          (anchor edges: AnchorEdgeLeft AnchorEdgeTop)
-          (viewport rect at last layout at (0,120) size 480x400)
-          (layer position at last layout (10,130))
+        (Frame scrolling node
+          (scrollable area size 480 400)
+          (contents size 480 1016)
+          (requested scroll position 0 120)
+          (requested scroll position represents programmatic scroll 1)
+          (scrollable area parameters 
+            (horizontal scroll elasticity 1)
+            (vertical scroll elasticity 1)
+            (horizontal scrollbar mode 0)
+            (vertical scrollbar mode 0))
+          (visual viewport enabled 1)
+          (layout viewport at (0,120) size 480x400)
+          (min layout viewport origin (0,0))
+          (max layout viewport origin (0,616))
+          (behavior for fixed 0)
+          (children 1
+            (Fixed node
+              (anchor edges: AnchorEdgeLeft AnchorEdgeTop)
+              (viewport rect at last layout at (0,120) size 480x400)
+              (layer position at last layout (10,130))
+            )
+          )
         )
       )
     )

Modified: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt (240552 => 240553)


--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -14,19 +14,23 @@
   (max layout viewport origin (0,0))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 100 200)
-      (contents size 308 416)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 1)
-        (vertical scroll elasticity 1)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 100x200)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (208,216))
-      (behavior for fixed 0)
+    (Frame hosting node
+      (children 1
+        (Frame scrolling node
+          (scrollable area size 100 200)
+          (contents size 308 416)
+          (scrollable area parameters 
+            (horizontal scroll elasticity 1)
+            (vertical scroll elasticity 1)
+            (horizontal scrollbar mode 0)
+            (vertical scrollbar mode 0))
+          (visual viewport enabled 1)
+          (layout viewport at (0,0) size 100x200)
+          (min layout viewport origin (0,0))
+          (max layout viewport origin (208,216))
+          (behavior for fixed 0)
+        )
+      )
     )
   )
 )

Modified: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt (240552 => 240553)


--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -16,23 +16,11 @@
   (max layout viewport origin (0,45))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 600 500)
-      (contents size 600 1024)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 1)
-        (vertical scroll elasticity 1)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 600x500)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,524))
-      (behavior for fixed 0)
+    (Frame hosting node
       (children 1
         (Frame scrolling node
-          (scrollable area size 500 400)
-          (contents size 500 1024)
+          (scrollable area size 600 500)
+          (contents size 600 1024)
           (scrollable area parameters 
             (horizontal scroll elasticity 1)
             (vertical scroll elasticity 1)
@@ -39,10 +27,30 @@
             (horizontal scrollbar mode 0)
             (vertical scrollbar mode 0))
           (visual viewport enabled 1)
-          (layout viewport at (0,0) size 500x400)
+          (layout viewport at (0,0) size 600x500)
           (min layout viewport origin (0,0))
-          (max layout viewport origin (0,624))
+          (max layout viewport origin (0,524))
           (behavior for fixed 0)
+          (children 1
+            (Frame hosting node
+              (children 1
+                (Frame scrolling node
+                  (scrollable area size 500 400)
+                  (contents size 500 1024)
+                  (scrollable area parameters 
+                    (horizontal scroll elasticity 1)
+                    (vertical scroll elasticity 1)
+                    (horizontal scrollbar mode 0)
+                    (vertical scrollbar mode 0))
+                  (visual viewport enabled 1)
+                  (layout viewport at (0,0) size 500x400)
+                  (min layout viewport origin (0,0))
+                  (max layout viewport origin (0,624))
+                  (behavior for fixed 0)
+                )
+              )
+            )
+          )
         )
       )
     )
@@ -54,7 +62,7 @@
 
 (Frame scrolling node
   (scrollable area size 800 600)
-  (contents size 800 1333)
+  (contents size 800 1445)
   (scrollable area parameters 
     (horizontal scroll elasticity 1)
     (vertical scroll elasticity 1)
@@ -63,26 +71,14 @@
   (visual viewport enabled 1)
   (layout viewport at (0,0) size 800x600)
   (min layout viewport origin (0,0))
-  (max layout viewport origin (0,733))
+  (max layout viewport origin (0,845))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 600 500)
-      (contents size 600 500)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 1)
-        (vertical scroll elasticity 1)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 600x500)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,0))
-      (behavior for fixed 0)
+    (Frame hosting node
       (children 1
         (Frame scrolling node
-          (scrollable area size 500 400)
-          (contents size 500 1024)
+          (scrollable area size 600 500)
+          (contents size 600 500)
           (scrollable area parameters 
             (horizontal scroll elasticity 1)
             (vertical scroll elasticity 1)
@@ -89,10 +85,30 @@
             (horizontal scrollbar mode 0)
             (vertical scrollbar mode 0))
           (visual viewport enabled 1)
-          (layout viewport at (0,0) size 500x400)
+          (layout viewport at (0,0) size 600x500)
           (min layout viewport origin (0,0))
-          (max layout viewport origin (0,624))
+          (max layout viewport origin (0,0))
           (behavior for fixed 0)
+          (children 1
+            (Frame hosting node
+              (children 1
+                (Frame scrolling node
+                  (scrollable area size 500 400)
+                  (contents size 500 1024)
+                  (scrollable area parameters 
+                    (horizontal scroll elasticity 1)
+                    (vertical scroll elasticity 1)
+                    (horizontal scrollbar mode 0)
+                    (vertical scrollbar mode 0))
+                  (visual viewport enabled 1)
+                  (layout viewport at (0,0) size 500x400)
+                  (min layout viewport origin (0,0))
+                  (max layout viewport origin (0,624))
+                  (behavior for fixed 0)
+                )
+              )
+            )
+          )
         )
       )
     )

Modified: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt (240552 => 240553)


--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -16,30 +16,34 @@
     at (45,47) size 404x304)
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 485 300)
-      (contents size 485 420)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 0)
-        (vertical scroll elasticity 0)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0)
-        (has enabled vertical scrollbar 1))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 485x300)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,120))
-      (behavior for fixed 0)
+    (Frame hosting node
       (children 1
-        (Sticky node
-          (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
-          (top offset 10.00)
-          (bottom offset 10.00)
-          (containing block rect at (8,8) size 469x404)
-          (sticky box rect at (8,312) size 100x100)
-          (constraining rect at (0,0) size 485x300)
-          (sticky offset at last layout width=0 height=-122)
-          (layer position at last layout (8,190))
+        (Frame scrolling node
+          (scrollable area size 485 300)
+          (contents size 485 420)
+          (scrollable area parameters 
+            (horizontal scroll elasticity 0)
+            (vertical scroll elasticity 0)
+            (horizontal scrollbar mode 0)
+            (vertical scrollbar mode 0)
+            (has enabled vertical scrollbar 1))
+          (visual viewport enabled 1)
+          (layout viewport at (0,0) size 485x300)
+          (min layout viewport origin (0,0))
+          (max layout viewport origin (0,120))
+          (behavior for fixed 0)
+          (children 1
+            (Sticky node
+              (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
+              (top offset 10.00)
+              (bottom offset 10.00)
+              (containing block rect at (8,8) size 469x404)
+              (sticky box rect at (8,312) size 100x100)
+              (constraining rect at (0,0) size 485x300)
+              (sticky offset at last layout width=0 height=-122)
+              (layer position at last layout (8,190))
+            )
+          )
         )
       )
     )

Modified: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt (240552 => 240553)


--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -21,29 +21,33 @@
       (viewport rect at last layout at (0,0) size 785x600)
       (layer position at last layout (8,10))
       (children 1
-        (Frame scrolling node
-          (scrollable area size 500 300)
-          (contents size 500 420)
-          (scrollable area parameters 
-            (horizontal scroll elasticity 0)
-            (vertical scroll elasticity 0)
-            (horizontal scrollbar mode 1)
-            (vertical scrollbar mode 1))
-          (visual viewport enabled 1)
-          (layout viewport at (0,0) size 500x300)
-          (min layout viewport origin (0,0))
-          (max layout viewport origin (0,120))
-          (behavior for fixed 0)
+        (Frame hosting node
           (children 1
-            (Sticky node
-              (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
-              (top offset 10.00)
-              (bottom offset 10.00)
-              (containing block rect at (8,8) size 484x404)
-              (sticky box rect at (8,312) size 100x100)
-              (constraining rect at (0,0) size 500x300)
-              (sticky offset at last layout width=0 height=-122)
-              (layer position at last layout (8,190))
+            (Frame scrolling node
+              (scrollable area size 500 300)
+              (contents size 500 420)
+              (scrollable area parameters 
+                (horizontal scroll elasticity 0)
+                (vertical scroll elasticity 0)
+                (horizontal scrollbar mode 1)
+                (vertical scrollbar mode 1))
+              (visual viewport enabled 1)
+              (layout viewport at (0,0) size 500x300)
+              (min layout viewport origin (0,0))
+              (max layout viewport origin (0,120))
+              (behavior for fixed 0)
+              (children 1
+                (Sticky node
+                  (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
+                  (top offset 10.00)
+                  (bottom offset 10.00)
+                  (containing block rect at (8,8) size 484x404)
+                  (sticky box rect at (8,312) size 100x100)
+                  (constraining rect at (0,0) size 500x300)
+                  (sticky offset at last layout width=0 height=-122)
+                  (layer position at last layout (8,190))
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt (240552 => 240553)


--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -21,30 +21,34 @@
       (viewport rect at last layout at (0,0) size 785x600)
       (layer position at last layout (8,0))
       (children 1
-        (Frame scrolling node
-          (scrollable area size 485 300)
-          (contents size 485 420)
-          (scrollable area parameters 
-            (horizontal scroll elasticity 0)
-            (vertical scroll elasticity 0)
-            (horizontal scrollbar mode 0)
-            (vertical scrollbar mode 0)
-            (has enabled vertical scrollbar 1))
-          (visual viewport enabled 1)
-          (layout viewport at (0,0) size 485x300)
-          (min layout viewport origin (0,0))
-          (max layout viewport origin (0,120))
-          (behavior for fixed 0)
+        (Frame hosting node
           (children 1
-            (Sticky node
-              (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
-              (top offset 10.00)
-              (bottom offset 10.00)
-              (containing block rect at (8,8) size 469x404)
-              (sticky box rect at (8,312) size 100x100)
-              (constraining rect at (0,0) size 485x300)
-              (sticky offset at last layout width=0 height=-122)
-              (layer position at last layout (8,190))
+            (Frame scrolling node
+              (scrollable area size 485 300)
+              (contents size 485 420)
+              (scrollable area parameters 
+                (horizontal scroll elasticity 0)
+                (vertical scroll elasticity 0)
+                (horizontal scrollbar mode 0)
+                (vertical scrollbar mode 0)
+                (has enabled vertical scrollbar 1))
+              (visual viewport enabled 1)
+              (layout viewport at (0,0) size 485x300)
+              (min layout viewport origin (0,0))
+              (max layout viewport origin (0,120))
+              (behavior for fixed 0)
+              (children 1
+                (Sticky node
+                  (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
+                  (top offset 10.00)
+                  (bottom offset 10.00)
+                  (containing block rect at (8,8) size 469x404)
+                  (sticky box rect at (8,312) size 100x100)
+                  (constraining rect at (0,0) size 485x300)
+                  (sticky offset at last layout width=0 height=-122)
+                  (layer position at last layout (8,190))
+                )
+              )
             )
           )
         )

Modified: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt (240552 => 240553)


--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -16,29 +16,33 @@
     at (45,47) size 404x304)
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 500 300)
-      (contents size 500 420)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 0)
-        (vertical scroll elasticity 0)
-        (horizontal scrollbar mode 1)
-        (vertical scrollbar mode 1))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 500x300)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,120))
-      (behavior for fixed 0)
+    (Frame hosting node
       (children 1
-        (Sticky node
-          (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
-          (top offset 10.00)
-          (bottom offset 10.00)
-          (containing block rect at (8,8) size 484x404)
-          (sticky box rect at (8,312) size 100x100)
-          (constraining rect at (0,0) size 500x300)
-          (sticky offset at last layout width=0 height=-122)
-          (layer position at last layout (8,190))
+        (Frame scrolling node
+          (scrollable area size 500 300)
+          (contents size 500 420)
+          (scrollable area parameters 
+            (horizontal scroll elasticity 0)
+            (vertical scroll elasticity 0)
+            (horizontal scrollbar mode 1)
+            (vertical scrollbar mode 1))
+          (visual viewport enabled 1)
+          (layout viewport at (0,0) size 500x300)
+          (min layout viewport origin (0,0))
+          (max layout viewport origin (0,120))
+          (behavior for fixed 0)
+          (children 1
+            (Sticky node
+              (anchor edges: AnchorEdgeTop AnchorEdgeBottom)
+              (top offset 10.00)
+              (bottom offset 10.00)
+              (containing block rect at (8,8) size 484x404)
+              (sticky box rect at (8,312) size 100x100)
+              (constraining rect at (0,0) size 500x300)
+              (sticky offset at last layout width=0 height=-122)
+              (layer position at last layout (8,190))
+            )
+          )
         )
       )
     )

Modified: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt (240552 => 240553)


--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -15,27 +15,31 @@
   (max layout viewport origin (0,57))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 465 400)
-      (contents size 465 1016)
-      (requested scroll position 0 120)
-      (requested scroll position represents programmatic scroll 1)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 0)
-        (vertical scroll elasticity 0)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0)
-        (has enabled vertical scrollbar 1))
-      (visual viewport enabled 1)
-      (layout viewport at (0,120) size 465x400)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,616))
-      (behavior for fixed 0)
+    (Frame hosting node
       (children 1
-        (Fixed node
-          (anchor edges: AnchorEdgeLeft AnchorEdgeTop)
-          (viewport rect at last layout at (0,120) size 465x400)
-          (layer position at last layout (10,130))
+        (Frame scrolling node
+          (scrollable area size 465 400)
+          (contents size 465 1016)
+          (requested scroll position 0 120)
+          (requested scroll position represents programmatic scroll 1)
+          (scrollable area parameters 
+            (horizontal scroll elasticity 0)
+            (vertical scroll elasticity 0)
+            (horizontal scrollbar mode 0)
+            (vertical scrollbar mode 0)
+            (has enabled vertical scrollbar 1))
+          (visual viewport enabled 1)
+          (layout viewport at (0,120) size 465x400)
+          (min layout viewport origin (0,0))
+          (max layout viewport origin (0,616))
+          (behavior for fixed 0)
+          (children 1
+            (Fixed node
+              (anchor edges: AnchorEdgeLeft AnchorEdgeTop)
+              (viewport rect at last layout at (0,120) size 465x400)
+              (layer position at last layout (10,130))
+            )
+          )
         )
       )
     )

Modified: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt (240552 => 240553)


--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -14,21 +14,25 @@
   (max layout viewport origin (0,0))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 85 185)
-      (contents size 308 416)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 0)
-        (vertical scroll elasticity 0)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0)
-        (has enabled horizontal scrollbar 1)
-        (has enabled vertical scrollbar 1))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 85x185)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (223,231))
-      (behavior for fixed 0)
+    (Frame hosting node
+      (children 1
+        (Frame scrolling node
+          (scrollable area size 85 185)
+          (contents size 308 416)
+          (scrollable area parameters 
+            (horizontal scroll elasticity 0)
+            (vertical scroll elasticity 0)
+            (horizontal scrollbar mode 0)
+            (vertical scrollbar mode 0)
+            (has enabled horizontal scrollbar 1)
+            (has enabled vertical scrollbar 1))
+          (visual viewport enabled 1)
+          (layout viewport at (0,0) size 85x185)
+          (min layout viewport origin (0,0))
+          (max layout viewport origin (223,231))
+          (behavior for fixed 0)
+        )
+      )
     )
   )
 )

Modified: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt (240552 => 240553)


--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt	2019-01-27 16:58:48 UTC (rev 240553)
@@ -17,24 +17,11 @@
   (max layout viewport origin (0,40))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 585 500)
-      (contents size 585 1024)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 0)
-        (vertical scroll elasticity 0)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0)
-        (has enabled vertical scrollbar 1))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 585x500)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,524))
-      (behavior for fixed 0)
+    (Frame hosting node
       (children 1
         (Frame scrolling node
-          (scrollable area size 485 400)
-          (contents size 485 1024)
+          (scrollable area size 585 500)
+          (contents size 585 1024)
           (scrollable area parameters 
             (horizontal scroll elasticity 0)
             (vertical scroll elasticity 0)
@@ -42,10 +29,31 @@
             (vertical scrollbar mode 0)
             (has enabled vertical scrollbar 1))
           (visual viewport enabled 1)
-          (layout viewport at (0,0) size 485x400)
+          (layout viewport at (0,0) size 585x500)
           (min layout viewport origin (0,0))
-          (max layout viewport origin (0,624))
+          (max layout viewport origin (0,524))
           (behavior for fixed 0)
+          (children 1
+            (Frame hosting node
+              (children 1
+                (Frame scrolling node
+                  (scrollable area size 485 400)
+                  (contents size 485 1024)
+                  (scrollable area parameters 
+                    (horizontal scroll elasticity 0)
+                    (vertical scroll elasticity 0)
+                    (horizontal scrollbar mode 0)
+                    (vertical scrollbar mode 0)
+                    (has enabled vertical scrollbar 1))
+                  (visual viewport enabled 1)
+                  (layout viewport at (0,0) size 485x400)
+                  (min layout viewport origin (0,0))
+                  (max layout viewport origin (0,624))
+                  (behavior for fixed 0)
+                )
+              )
+            )
+          )
         )
       )
     )
@@ -57,7 +65,7 @@
 
 (Frame scrolling node
   (scrollable area size 785 600)
-  (contents size 785 1421)
+  (contents size 785 1541)
   (scrollable area parameters 
     (horizontal scroll elasticity 2)
     (vertical scroll elasticity 2)
@@ -67,37 +75,45 @@
   (visual viewport enabled 1)
   (layout viewport at (0,0) size 785x600)
   (min layout viewport origin (0,0))
-  (max layout viewport origin (0,821))
+  (max layout viewport origin (0,941))
   (behavior for fixed 0)
   (children 1
-    (Frame scrolling node
-      (scrollable area size 600 500)
-      (contents size 600 500)
-      (scrollable area parameters 
-        (horizontal scroll elasticity 0)
-        (vertical scroll elasticity 0)
-        (horizontal scrollbar mode 0)
-        (vertical scrollbar mode 0))
-      (visual viewport enabled 1)
-      (layout viewport at (0,0) size 600x500)
-      (min layout viewport origin (0,0))
-      (max layout viewport origin (0,0))
-      (behavior for fixed 0)
+    (Frame hosting node
       (children 1
         (Frame scrolling node
-          (scrollable area size 485 400)
-          (contents size 485 1024)
+          (scrollable area size 600 500)
+          (contents size 600 500)
           (scrollable area parameters 
             (horizontal scroll elasticity 0)
             (vertical scroll elasticity 0)
             (horizontal scrollbar mode 0)
-            (vertical scrollbar mode 0)
-            (has enabled vertical scrollbar 1))
+            (vertical scrollbar mode 0))
           (visual viewport enabled 1)
-          (layout viewport at (0,0) size 485x400)
+          (layout viewport at (0,0) size 600x500)
           (min layout viewport origin (0,0))
-          (max layout viewport origin (0,624))
+          (max layout viewport origin (0,0))
           (behavior for fixed 0)
+          (children 1
+            (Frame hosting node
+              (children 1
+                (Frame scrolling node
+                  (scrollable area size 485 400)
+                  (contents size 485 1024)
+                  (scrollable area parameters 
+                    (horizontal scroll elasticity 0)
+                    (vertical scroll elasticity 0)
+                    (horizontal scrollbar mode 0)
+                    (vertical scrollbar mode 0)
+                    (has enabled vertical scrollbar 1))
+                  (visual viewport enabled 1)
+                  (layout viewport at (0,0) size 485x400)
+                  (min layout viewport origin (0,0))
+                  (max layout viewport origin (0,624))
+                  (behavior for fixed 0)
+                )
+              )
+            )
+          )
         )
       )
     )

Modified: trunk/Source/WebCore/ChangeLog (240552 => 240553)


--- trunk/Source/WebCore/ChangeLog	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebCore/ChangeLog	2019-01-27 16:58:48 UTC (rev 240553)
@@ -1,3 +1,47 @@
+2019-01-26  Simon Fraser  <[email protected]>
+
+        Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node
+        https://bugs.webkit.org/show_bug.cgi?id=193879
+
+        Reviewed by Antti Koivisto.
+
+        Currently we parent iframe scrolling tree nodes by finding the closest ancestor layer with a scrolling tree node.
+        This results in scrolling tree nodes being connected across iframe boundaries in some arbitrary ancestor. This
+        makes updating scrolling tree geometry very error-prone, since changes in the parent document will need to trigger
+        updates of the scrolling tree node in an iframe.
+        
+        To address this, I already added a new "FrameHosting" scrolling node type. This patch actually instantiates these
+        nodes, which are owned by the RenderIFrame's composited layer. Connecting across frame boundaries is theforefore
+        simply a case of getting the FrameHosting node from the ownerElement's renderer; this is very similar to how we
+        connect GraphicsLayers together.
+        
+        RenderLayerBacking gains another scrolling role for FrameHosting and ScrollingNodeID.
+
+        Tested by existing tests.
+
+        * page/FrameView.h:
+        * rendering/RenderLayer.cpp:
+        (WebCore::outputPaintOrderTreeRecursive):
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateConfiguration):
+        (WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::frameContentsRenderView):
+        (WebCore::RenderLayerCompositor::frameContentsCompositor):
+        (WebCore::RenderLayerCompositor::parentFrameContentLayers):
+        (WebCore::RenderLayerCompositor::isLayerForIFrameWithScrollCoordinatedContents const):
+        (WebCore::RenderLayerCompositor::detachRootLayer):
+        (WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus):
+        (WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):
+        (WebCore::scrollCoordinatedAncestorInParentOfFrame):
+        (WebCore::RenderLayerCompositor::reattachSubframeScrollLayers):
+        (WebCore::RenderLayerCompositor::attachScrollingNode):
+        (WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame):
+        (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
+        * rendering/RenderLayerCompositor.h:
+        * testing/Internals.cpp:
+        (WebCore::Internals::scrollingStateTreeAsText const):
+
 2019-01-27  Chris Fleizach  <[email protected]>
 
         AX: Introduce a static accessibility tree

Modified: trunk/Source/WebCore/page/FrameView.h (240552 => 240553)


--- trunk/Source/WebCore/page/FrameView.h	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebCore/page/FrameView.h	2019-01-27 16:58:48 UTC (rev 240553)
@@ -152,10 +152,9 @@
 
     WEBCORE_EXPORT TiledBacking* tiledBacking() const final;
 
-    // In the future when any ScrollableArea can have a node in th ScrollingTree, this should
-    // become a virtual function on ScrollableArea.
     uint64_t scrollLayerID() const override;
     ScrollableArea* scrollableAreaForScrollLayerID(uint64_t) const;
+    bool usesAsyncScrolling() const final;
 
     WEBCORE_EXPORT void enterCompositingMode();
     WEBCORE_EXPORT bool isEnclosedInCompositingLayer() const;
@@ -746,7 +745,6 @@
 #endif
 
     bool usesCompositedScrolling() const final;
-    bool usesAsyncScrolling() const final;
     bool usesMockScrollAnimator() const final;
     void logMockScrollAnimatorMessage(const String&) const final;
 

Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateNode.cpp (240552 => 240553)


--- trunk/Source/WebCore/page/scrolling/ScrollingStateNode.cpp	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateNode.cpp	2019-01-27 16:58:48 UTC (rev 240553)
@@ -117,6 +117,7 @@
         return;
 
     m_parent->removeChild(*this);
+    m_parent = nullptr;
 }
 
 void ScrollingStateNode::removeChild(ScrollingStateNode& childNode)

Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateTree.cpp (240552 => 240553)


--- trunk/Source/WebCore/page/scrolling/ScrollingStateTree.cpp	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateTree.cpp	2019-01-27 16:58:48 UTC (rev 240553)
@@ -213,6 +213,8 @@
     if (!nodeID)
         return;
 
+    LOG_WITH_STREAM(Scrolling, stream << "ScrollingStateTree " << this << " unparentChildrenAndDestroyNode " << nodeID);
+
     // The node may not be found if clear() was recently called.
     RefPtr<ScrollingStateNode> protectedNode = m_stateNodeMap.take(nodeID);
     if (!protectedNode)
@@ -221,6 +223,7 @@
     if (auto* children = protectedNode->children()) {
         for (auto child : *children) {
             child->removeFromParent();
+            LOG_WITH_STREAM(Scrolling, stream << " moving " << child->scrollingNodeID() << " to unparented nodes");
             m_unparentedNodes.add(child->scrollingNodeID(), WTFMove(child));
         }
         children->clear();
@@ -235,6 +238,8 @@
     if (!nodeID)
         return;
 
+    LOG_WITH_STREAM(Scrolling, stream << "ScrollingStateTree " << this << " detachAndDestroySubtree " << nodeID);
+
     // The node may not be found if clear() was recently called.
     auto* node = m_stateNodeMap.take(nodeID);
     if (!node)

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (240552 => 240553)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2019-01-27 16:58:48 UTC (rev 240553)
@@ -6690,8 +6690,38 @@
     auto layerRect = layer.rect();
 
     stream << &layer << " " << layerRect;
-    if (layer.isComposited())
-        stream << " (layerID " << layer.backing()->graphicsLayer()->primaryLayerID() << ")";
+    if (layer.isComposited()) {
+        auto& backing = *layer.backing();
+        stream << " (layerID " << backing.graphicsLayer()->primaryLayerID() << ")";
+
+        auto scrollingNodeID = backing.scrollingNodeIDForRole(WebCore::ScrollCoordinationRole::Scrolling);
+        auto frameHostingNodeID = backing.scrollingNodeIDForRole(WebCore::ScrollCoordinationRole::FrameHosting);
+        auto viewportConstrainedNodeID = backing.scrollingNodeIDForRole(WebCore::ScrollCoordinationRole::ViewportConstrained);
+
+        if (scrollingNodeID || frameHostingNodeID || viewportConstrainedNodeID) {
+            stream << " {";
+            bool first = true;
+            if (scrollingNodeID) {
+                stream << "sc " << scrollingNodeID;
+                first = false;
+            }
+
+            if (frameHostingNodeID) {
+                if (!first)
+                    stream << ", ";
+                stream << "fh " << frameHostingNodeID;
+                first = false;
+            }
+
+            if (viewportConstrainedNodeID) {
+                if (!first)
+                    stream << ", ";
+                stream << "vc " << viewportConstrainedNodeID;
+            }
+
+            stream << "}";
+        }
+    }
     stream << " " << layer.name();
     stream.nextLine();
 

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (240552 => 240553)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2019-01-27 16:58:48 UTC (rev 240553)
@@ -783,7 +783,7 @@
         layerConfigChanged = true;
     }
 #endif
-    if (is<RenderWidget>(renderer()) && RenderLayerCompositor::parentFrameContentLayers(downcast<RenderWidget>(renderer()))) {
+    if (is<RenderWidget>(renderer()) && compositor().parentFrameContentLayers(downcast<RenderWidget>(renderer()))) {
         m_owningLayer.setNeedsCompositingGeometryUpdate();
         layerConfigChanged = true;
     }
@@ -1769,7 +1769,7 @@
 
 void RenderLayerBacking::detachFromScrollingCoordinator(OptionSet<ScrollCoordinationRole> roles)
 {
-    if (!m_scrollingNodeID && !m_viewportConstrainedNodeID)
+    if (!m_scrollingNodeID && !m_frameHostingNodeID && !m_viewportConstrainedNodeID)
         return;
 
     auto* scrollingCoordinator = m_owningLayer.page().scrollingCoordinator();

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (240552 => 240553)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2019-01-27 16:58:48 UTC (rev 240553)
@@ -1928,12 +1928,19 @@
     return layerTreeText;
 }
 
+static RenderView* frameContentsRenderView(RenderWidget& renderer)
+{
+    if (auto* contentDocument = renderer.frameOwnerElement().contentDocument())
+        return contentDocument->renderView();
+
+    return nullptr;
+}
+
 RenderLayerCompositor* RenderLayerCompositor::frameContentsCompositor(RenderWidget& renderer)
 {
-    if (auto* contentDocument = renderer.frameOwnerElement().contentDocument()) {
-        if (auto* view = contentDocument->renderView())
-            return &view->compositor();
-    }
+    if (auto* view = frameContentsRenderView(renderer))
+        return &view->compositor();
+
     return nullptr;
 }
 
@@ -1954,6 +1961,15 @@
         hostingLayer->removeAllChildren();
         hostingLayer->addChild(*rootLayer);
     }
+
+    if (auto frameHostingNodeID = backing->scrollingNodeIDForRole(ScrollCoordinationRole::FrameHosting)) {
+        auto* contentsRenderView = frameContentsRenderView(renderer);
+        if (auto frameRootScrollingNodeID = contentsRenderView->frameView().scrollLayerID()) {
+            if (auto* scrollingCoordinator = this->scrollingCoordinator())
+                scrollingCoordinator->insertNode(ScrollingNodeType::Subframe, frameRootScrollingNodeID, frameHostingNodeID, 0);
+        }
+    }
+
     // FIXME: Why always return true and not just when the layers changed?
     return true;
 }
@@ -2843,6 +2859,25 @@
     return false;
 }
 
+bool RenderLayerCompositor::isLayerForIFrameWithScrollCoordinatedContents(const RenderLayer& layer) const
+{
+    if (!is<RenderWidget>(layer.renderer()))
+        return false;
+
+    auto* contentDocument = downcast<RenderWidget>(layer.renderer()).frameOwnerElement().contentDocument();
+    if (!contentDocument)
+        return false;
+
+    auto* view = contentDocument->renderView();
+    if (!view)
+        return false;
+
+    if (auto* scrollingCoordinator = this->scrollingCoordinator())
+        return scrollingCoordinator->coordinatesScrollingForFrameView(view->frameView());
+
+    return false;
+}
+
 bool RenderLayerCompositor::isRunningTransformAnimation(RenderLayerModelObject& renderer) const
 {
     if (!(m_compositingTriggers & ChromeClient::AnimationTrigger))
@@ -2859,8 +2894,7 @@
 }
 
 // If an element has negative z-index children, those children render in front of the 
-// layer background, so we need an extra 'contents' layer for the foreground of the layer
-// object.
+// layer background, so we need an extra 'contents' layer for the foreground of the layer object.
 bool RenderLayerCompositor::needsContentsCompositingLayer(const RenderLayer& layer) const
 {
     return layer.hasNegativeZOrderLayers();
@@ -3534,7 +3568,7 @@
 
     switch (m_rootLayerAttachment) {
     case RootLayerAttachedViaEnclosingFrame: {
-        // The layer will get unhooked up via RenderLayerBacking::updateGraphicsLayerConfiguration()
+        // The layer will get unhooked up via RenderLayerBacking::updateConfiguration()
         // for the frame's renderer in the parent document.
         if (m_overflowControlsHostLayer)
             m_overflowControlsHostLayer->removeFromParent();
@@ -3543,6 +3577,11 @@
 
         if (auto* ownerElement = m_renderView.document().ownerElement())
             ownerElement->scheduleInvalidateStyleAndLayerComposition();
+
+        if (auto frameRootScrollingNodeID = m_renderView.frameView().scrollLayerID()) {
+            if (auto* scrollingCoordinator = this->scrollingCoordinator())
+                scrollingCoordinator->unparentNode(frameRootScrollingNodeID);
+        }
         break;
     }
     case RootLayerAttachedViaChromeClient: {
@@ -3651,6 +3690,12 @@
     if (useCoordinatedScrollingForLayer(layer))
         coordinationRoles.add(ScrollCoordinationRole::Scrolling);
 
+    if (isLayerForIFrameWithScrollCoordinatedContents(layer)) {
+        // We never expect a RenderIFrame to have scrollable overflow.
+        ASSERT(!coordinationRoles.contains(ScrollCoordinationRole::Scrolling));
+        coordinationRoles.add(ScrollCoordinationRole::FrameHosting);
+    }
+
     if (layer.isComposited())
         layer.backing()->setIsScrollCoordinatedWithViewportConstrainedRole(coordinationRoles.contains(ScrollCoordinationRole::ViewportConstrained));
 
@@ -3673,7 +3718,7 @@
     m_scrollCoordinatedLayers.remove(&layer);
     m_scrollCoordinatedLayersNeedingUpdate.remove(&layer);
 
-    detachScrollCoordinatedLayer(layer, { ScrollCoordinationRole::Scrolling, ScrollCoordinationRole::ViewportConstrained });
+    detachScrollCoordinatedLayer(layer, { ScrollCoordinationRole::Scrolling, ScrollCoordinationRole::ViewportConstrained, ScrollCoordinationRole::FrameHosting });
 }
 
 FixedPositionViewportConstraints RenderLayerCompositor::computeFixedViewportConstraints(RenderLayer& layer) const
@@ -3747,22 +3792,27 @@
     return 0;
 }
 
-static ScrollingNodeID scrollCoordinatedAncestorInParentOfFrame(Frame& frame)
+static Optional<ScrollingNodeID> scrollCoordinatedAncestorInParentOfFrame(Frame& frame)
 {
     if (!frame.document() || !frame.view())
-        return 0;
+        return { };
 
     // Find the frame's enclosing layer in our render tree.
     auto* ownerElement = frame.document()->ownerElement();
     auto* frameRenderer = ownerElement ? ownerElement->renderer() : nullptr;
-    if (!frameRenderer)
-        return 0;
+    if (!frameRenderer || !is<RenderWidget>(frameRenderer))
+        return { };
 
-    auto* layerInParentDocument = frameRenderer->enclosingLayer();
-    if (!layerInParentDocument)
-        return 0;
+    auto& widgetRenderer = downcast<RenderWidget>(*frameRenderer);
+    if (!widgetRenderer.hasLayer() || !widgetRenderer.layer()->isComposited()) {
+        LOG(Scrolling, "scrollCoordinatedAncestorInParentOfFrame: frame renderer has no layer or is not composited.");
+        return { };
+    }
 
-    return enclosingScrollingNodeID(*layerInParentDocument, IncludeSelf);
+    if (auto frameHostingNodeID = widgetRenderer.layer()->backing()->scrollingNodeIDForRole(ScrollCoordinationRole::FrameHosting))
+        return frameHostingNodeID;
+
+    return { };
 }
 
 void RenderLayerCompositor::reattachSubframeScrollLayers()
@@ -3784,11 +3834,13 @@
         if (!frameScrollingNodeID)
             continue;
 
-        ScrollingNodeID parentNodeID = scrollCoordinatedAncestorInParentOfFrame(*child);
-        if (!parentNodeID)
+        auto parentNodeID = scrollCoordinatedAncestorInParentOfFrame(*child);
+        if (!parentNodeID) {
+            LOG(Scrolling, "RenderLayerCompositor %p reattachSubframeScrollLayers: failed to find scrolling node parent for frame with nodeID %llu.", this, frameScrollingNodeID);
             continue;
+        }
 
-        scrollingCoordinator->insertNode(child->isMainFrame() ? ScrollingNodeType::MainFrame : ScrollingNodeType::Subframe, frameScrollingNodeID, parentNodeID);
+        scrollingCoordinator->insertNode(child->isMainFrame() ? ScrollingNodeType::MainFrame : ScrollingNodeType::Subframe, frameScrollingNodeID, parentNodeID.value());
     }
 }
 
@@ -3809,7 +3861,7 @@
     return ScrollCoordinationRole::Scrolling;
 }
 
-ScrollingNodeID RenderLayerCompositor::attachScrollingNode(RenderLayer& layer, ScrollingNodeType nodeType, ScrollingNodeID parentNodeID)
+ScrollingNodeID RenderLayerCompositor::attachScrollingNode(RenderLayer& layer, ScrollingNodeType nodeType, Optional<ScrollingNodeID> parentNodeID)
 {
     auto* scrollingCoordinator = this->scrollingCoordinator();
     auto* backing = layer.backing();
@@ -3823,13 +3875,19 @@
     if (!nodeID)
         nodeID = scrollingCoordinator->uniqueScrollingNodeID();
 
-    nodeID = scrollingCoordinator->insertNode(nodeType, nodeID, parentNodeID);
+    LOG_WITH_STREAM(Scrolling, stream << "RenderLayerCompositor " << this << " attachScrollingNode " << nodeID << " type " << nodeType << " parent " << parentNodeID.valueOr(0));
+
+    if (nodeType == ScrollingNodeType::Subframe && !parentNodeID)
+        nodeID = scrollingCoordinator->createNode(nodeType, nodeID);
+    else
+        nodeID = scrollingCoordinator->insertNode(nodeType, nodeID, parentNodeID.valueOr(0));
+
     if (!nodeID)
         return 0;
 
     backing->setScrollingNodeIDForRole(nodeID, role);
     m_scrollingNodeToLayerMap.add(nodeID, &layer);
-    
+
     return nodeID;
 }
 
@@ -3869,7 +3927,7 @@
     backing->detachFromScrollingCoordinator(roles);
 }
 
-void RenderLayerCompositor::updateScrollCoordinationForThisFrame(ScrollingNodeID parentNodeID, OptionSet<ScrollingNodeChangeFlags> changes)
+void RenderLayerCompositor::updateScrollCoordinationForThisFrame(Optional<ScrollingNodeID> parentNodeID, OptionSet<ScrollingNodeChangeFlags> changes)
 {
     auto* scrollingCoordinator = this->scrollingCoordinator();
     FrameView& frameView = m_renderView.frameView();
@@ -3907,10 +3965,7 @@
         return;
 
     if (!m_renderView.frame().isMainFrame()) {
-        ScrollingNodeID parentDocumentHostingNodeID = scrollCoordinatedAncestorInParentOfFrame(m_renderView.frame());
-        if (!parentDocumentHostingNodeID)
-            return;
-
+        auto parentDocumentHostingNodeID = scrollCoordinatedAncestorInParentOfFrame(m_renderView.frame());
         updateScrollCoordinationForThisFrame(parentDocumentHostingNodeID, changes);
         if (!(roles.contains(ScrollCoordinationRole::ViewportConstrained)) && isRenderViewLayer)
             return;

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.h (240552 => 240553)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2019-01-27 16:58:48 UTC (rev 240553)
@@ -272,7 +272,7 @@
     
     static RenderLayerCompositor* frameContentsCompositor(RenderWidget&);
     // Return true if the layers changed.
-    static bool parentFrameContentLayers(RenderWidget&);
+    bool parentFrameContentLayers(RenderWidget&);
 
     // Update the geometry of the layers used for clipping and scrolling in frames.
     void frameViewDidChangeLocation(const IntPoint& contentsOffset);
@@ -326,6 +326,7 @@
     void removeFromScrollCoordinatedLayers(RenderLayer&);
 
     bool useCoordinatedScrollingForLayer(const RenderLayer&) const;
+    bool isLayerForIFrameWithScrollCoordinatedContents(const RenderLayer&) const;
 
     void willRemoveScrollingLayerWithBacking(RenderLayer&, RenderLayerBacking&);
     void didAddScrollingLayer(RenderLayer&);
@@ -476,8 +477,8 @@
 
     void updateCustomLayersAfterFlush();
 
-    void updateScrollCoordinationForThisFrame(ScrollingNodeID, OptionSet<ScrollingNodeChangeFlags>);
-    ScrollingNodeID attachScrollingNode(RenderLayer&, ScrollingNodeType, ScrollingNodeID parentNodeID);
+    void updateScrollCoordinationForThisFrame(Optional<ScrollingNodeID>, OptionSet<ScrollingNodeChangeFlags>);
+    ScrollingNodeID attachScrollingNode(RenderLayer&, ScrollingNodeType, Optional<ScrollingNodeID> parentNodeID);
     void updateScrollCoordinatedLayer(RenderLayer&, OptionSet<ScrollCoordinationRole>, OptionSet<ScrollingNodeChangeFlags>);
     void detachScrollCoordinatedLayer(RenderLayer&, OptionSet<ScrollCoordinationRole>);
     void detachScrollCoordinatedLayerWithRole(RenderLayer&, ScrollingCoordinator&, ScrollCoordinationRole);

Modified: trunk/Source/WebCore/testing/Internals.cpp (240552 => 240553)


--- trunk/Source/WebCore/testing/Internals.cpp	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebCore/testing/Internals.cpp	2019-01-27 16:58:48 UTC (rev 240553)
@@ -2568,6 +2568,8 @@
     if (!document || !document->frame())
         return Exception { InvalidAccessError };
 
+    document->updateLayoutIgnorePendingStylesheets();
+
     Page* page = document->page();
     if (!page)
         return String();

Modified: trunk/Source/WebKit/ChangeLog (240552 => 240553)


--- trunk/Source/WebKit/ChangeLog	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebKit/ChangeLog	2019-01-27 16:58:48 UTC (rev 240553)
@@ -1,3 +1,15 @@
+2019-01-26  Simon Fraser  <[email protected]>
+
+        Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node
+        https://bugs.webkit.org/show_bug.cgi?id=193879
+
+        Reviewed by Antti Koivisto.
+
+        Need a specialization of dump() for ScrollingStateFrameHostingNode to avoid infinite recursion.
+
+        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
+        (WebKit::dump):
+
 2019-01-27  Chris Fleizach  <[email protected]>
 
         AX: Introduce a static accessibility tree

Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp (240552 => 240553)


--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp	2019-01-27 08:49:29 UTC (rev 240552)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp	2019-01-27 16:58:48 UTC (rev 240553)
@@ -524,7 +524,11 @@
     if (!changedPropertiesOnly || node.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
         ts.dumpProperty("scrolled-contents-layer", static_cast<GraphicsLayer::PlatformLayerID>(node.scrolledContentsLayer()));
 }
-    
+
+static void dump(TextStream& ts, const ScrollingStateFrameHostingNode& node, bool changedPropertiesOnly)
+{
+}
+
 static void dump(TextStream& ts, const ScrollingStateFrameScrollingNode& node, bool changedPropertiesOnly)
 {
     dump(ts, static_cast<const ScrollingStateScrollingNode&>(node), changedPropertiesOnly);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to