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);