Diff
Modified: trunk/LayoutTests/ChangeLog (240676 => 240677)
--- trunk/LayoutTests/ChangeLog 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/ChangeLog 2019-01-29 21:29:27 UTC (rev 240677)
@@ -1,3 +1,72 @@
+2019-01-29 Simon Fraser <[email protected]>
+
+ REGRESSION(r240553): [iOS] Crash in ScrollingTree::updateTreeFromStateNode when attempting to log in to icloud.com
+ https://bugs.webkit.org/show_bug.cgi?id=193907
+ rdar://problem/47604080
+
+ Reviewed by Frédéric Wang.
+
+ New ref test for layer positions in composited frames.
+
+ New baselines with anchor point on the scroll layer.
+
+ * compositing/geometry/composited-frame-contents-expected.html: Added.
+ * compositing/geometry/composited-frame-contents.html: Added.
+ * compositing/iframes/become-composited-nested-iframes-expected.txt:
+ * compositing/iframes/become-overlapped-iframe-expected.txt:
+ * compositing/iframes/composited-parent-iframe-expected.txt:
+ * compositing/iframes/connect-compositing-iframe-delayed-expected.txt:
+ * compositing/iframes/connect-compositing-iframe-expected.txt:
+ * compositing/iframes/connect-compositing-iframe2-expected.txt:
+ * compositing/iframes/connect-compositing-iframe3-expected.txt:
+ * compositing/iframes/enter-compositing-iframe-expected.txt:
+ * compositing/iframes/iframe-resize-expected.txt:
+ * compositing/iframes/iframe-size-from-zero-expected.txt:
+ * compositing/iframes/overlapped-iframe-expected.txt:
+ * compositing/iframes/overlapped-iframe-iframe-expected.txt:
+ * compositing/iframes/overlapped-nested-iframes-expected.txt:
+ * compositing/iframes/page-cache-layer-tree-expected.txt:
+ * compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt:
+ * compositing/iframes/resize-from-zero-size-expected.txt:
+ * compositing/iframes/scrolling-iframe-expected.txt:
+ * compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt:
+ * compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt:
+ * compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt:
+ * platform/ios-wk2/compositing/iframes/composited-parent-iframe-expected.txt:
+ * platform/ios-wk2/compositing/iframes/connect-compositing-iframe-delayed-expected.txt:
+ * platform/ios-wk2/compositing/iframes/connect-compositing-iframe-expected.txt:
+ * platform/ios-wk2/compositing/iframes/connect-compositing-iframe2-expected.txt:
+ * platform/ios-wk2/compositing/iframes/connect-compositing-iframe3-expected.txt:
+ * platform/ios-wk2/compositing/iframes/enter-compositing-iframe-expected.txt:
+ * platform/ios-wk2/compositing/iframes/iframe-resize-expected.txt:
+ * platform/ios-wk2/compositing/iframes/leave-compositing-iframe-expected.txt:
+ * platform/ios-wk2/compositing/iframes/overlapped-iframe-expected.txt:
+ * platform/ios-wk2/compositing/iframes/page-cache-layer-tree-expected.txt:
+ * platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt:
+ * platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-expected.txt:
+ * platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt:
+ * platform/ios-wk2/compositing/rtl/rtl-iframe-fixed-expected.txt:
+ * platform/ios-wk2/compositing/rtl/rtl-iframe-relative-expected.txt:
+ * platform/ios-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt:
+ * platform/ios-wk2/compositing/visible-rect/iframe-and-layers-expected.txt:
+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
+ * platform/ios/compositing/iframes/become-composited-nested-iframes-expected.txt:
+ * platform/ios/compositing/iframes/become-overlapped-iframe-expected.txt:
+ * platform/ios/compositing/iframes/invisible-nested-iframe-show-expected.txt:
+ * platform/ios/compositing/iframes/overlapped-nested-iframes-expected.txt:
+ * platform/ios/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt:
+ * platform/ios/compositing/iframes/resizer-expected.txt:
+ * platform/ios/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt:
+ * platform/mac-wk1/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt:
+ * platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt:
+ * platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt:
+ * platform/mac-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt:
+ * platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt:
+ * platform/mac/compositing/iframes/resizer-expected.txt:
+ * platform/mac/compositing/visible-rect/iframe-and-layers-expected.txt:
+ * scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
+ * tiled-drawing/tile-coverage-iframe-to-zero-coverage-expected.txt:
+
2019-01-29 Justin Fan <[email protected]>
[WebGPU] Fix and add validation to WebGPURenderPipeline and MTLVertexDescriptor
Added: trunk/LayoutTests/compositing/geometry/composited-frame-contents-expected.html (0 => 240677)
--- trunk/LayoutTests/compositing/geometry/composited-frame-contents-expected.html (rev 0)
+++ trunk/LayoutTests/compositing/geometry/composited-frame-contents-expected.html 2019-01-29 21:29:27 UTC (rev 240677)
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ body {
+ margin: 0;
+ }
+ .container {
+ border: 20px solid blue;
+ padding: 12px;
+ height: 400px;
+ width: 500px;
+ margin: 20px;
+ background-color: orange;
+ outline: 12px solid rgba(0, 0, 0, 0.25);
+ }
+
+ .frame {
+ height: 100%;
+ width: 100%;
+ background-color: silver;
+ padding: 10px;
+ box-sizing: border-box;
+ }
+
+ .box {
+ width: 200px;
+ height: 200px;
+ background-color: green;
+ }
+ .scrollbar-obscurer {
+ position: absolute;
+ height: 400px;
+ width: 18px;
+ top: 52px;
+ left: 534px;
+ background-color: gray;
+ }
+ </style>
+</head>
+<body>
+ <div class="container">
+ <div class="frame">
+ <div class="box"></div>
+ </div>
+ </div>
+ <div class="scrollbar-obscurer"></div>
+</body>
+</html>
Added: trunk/LayoutTests/compositing/geometry/composited-frame-contents.html (0 => 240677)
--- trunk/LayoutTests/compositing/geometry/composited-frame-contents.html (rev 0)
+++ trunk/LayoutTests/compositing/geometry/composited-frame-contents.html 2019-01-29 21:29:27 UTC (rev 240677)
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ body {
+ margin: 0;
+ }
+ iframe {
+ border: 20px solid blue;
+ padding: 12px;
+ height: 400px;
+ width: 500px;
+ margin: 20px;
+ background-color: orange;
+ outline: 12px solid rgba(0, 0, 0, 0.25);
+ }
+ .scrollbar-obscurer {
+ position: absolute;
+ height: 400px;
+ width: 18px;
+ top: 52px;
+ left: 534px;
+ background-color: gray;
+ }
+ </style>
+ <script>
+ if (window.internals)
+ internals.settings.setAsyncFrameScrollingEnabled(true);
+ </script>
+</head>
+<body>
+ <iframe srcdoc="
+ <style>
+ body {
+ height: 1000px;
+ background-color: silver;
+ margin: 10px;
+ }
+ .box {
+ width: 200px;
+ height: 200px;
+ background-color: green;
+ }
+
+ </style>
+ <body>
+ <div class=box></div>
+ </body>
+ "></iframe>
+ <div class="scrollbar-obscurer"></div>
+</body>
+</html>
Modified: trunk/LayoutTests/compositing/iframes/become-composited-nested-iframes-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/become-composited-nested-iframes-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/become-composited-nested-iframes-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 280.00 200.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -42,6 +43,7 @@
(bounds 250.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -93,6 +95,7 @@
(bounds 280.00 200.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -115,6 +118,7 @@
(bounds 250.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/become-overlapped-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/become-overlapped-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/become-overlapped-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 305.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/composited-parent-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/composited-parent-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/composited-parent-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -21,6 +21,7 @@
(bounds 285.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -23,6 +23,7 @@
(bounds 285.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/connect-compositing-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/connect-compositing-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/connect-compositing-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 285.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/connect-compositing-iframe2-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/connect-compositing-iframe2-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/connect-compositing-iframe2-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 285.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/connect-compositing-iframe3-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/connect-compositing-iframe3-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/connect-compositing-iframe3-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 285.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/enter-compositing-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/enter-compositing-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/enter-compositing-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 285.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/iframe-resize-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/iframe-resize-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/iframe-resize-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 385.00 120.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/iframe-size-from-zero-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/iframe-size-from-zero-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/iframe-size-from-zero-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 285.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/overlapped-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/overlapped-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/overlapped-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 285.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/overlapped-iframe-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/overlapped-iframe-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/overlapped-iframe-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -18,6 +18,7 @@
(bounds 300.00 300.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/overlapped-nested-iframes-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/overlapped-nested-iframes-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/overlapped-nested-iframes-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 280.00 200.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -42,6 +43,7 @@
(bounds 250.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -93,6 +95,7 @@
(bounds 280.00 200.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -115,6 +118,7 @@
(bounds 250.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/page-cache-layer-tree-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/page-cache-layer-tree-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/page-cache-layer-tree-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -27,6 +27,7 @@
(bounds 285.00 135.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -77,6 +78,7 @@
(bounds 285.00 135.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -29,6 +29,7 @@
(bounds 400.00 300.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -91,6 +92,7 @@
(bounds 400.00 300.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/resize-from-zero-size-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/resize-from-zero-size-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/resize-from-zero-size-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 400.00 300.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/iframes/scrolling-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/iframes/scrolling-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/iframes/scrolling-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -21,6 +21,7 @@
(children 1
(GraphicsLayer
(position -80.00 -80.00)
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -22,6 +22,7 @@
(children 1
(GraphicsLayer
(position 0.00 -100.00)
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -22,6 +22,7 @@
(children 1
(GraphicsLayer
(position 0.00 -100.00)
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt (240676 => 240677)
--- trunk/LayoutTests/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -40,6 +40,7 @@
(contentsScale 1.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(visible rect 0.00, 0.00 0.00 x 0.00)
(coverage rect 0.00, 0.00 0.00 x 0.00)
(intersects coverage rect 0)
Modified: trunk/LayoutTests/platform/ios/compositing/iframes/become-composited-nested-iframes-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios/compositing/iframes/become-composited-nested-iframes-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios/compositing/iframes/become-composited-nested-iframes-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 280.00 200.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -42,6 +43,7 @@
(bounds 250.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -93,6 +95,7 @@
(bounds 280.00 200.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -115,6 +118,7 @@
(bounds 250.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios/compositing/iframes/become-overlapped-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios/compositing/iframes/become-overlapped-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios/compositing/iframes/become-overlapped-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 320.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios/compositing/iframes/invisible-nested-iframe-show-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios/compositing/iframes/invisible-nested-iframe-show-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios/compositing/iframes/invisible-nested-iframe-show-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -42,6 +43,7 @@
(bounds 250.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios/compositing/iframes/overlapped-nested-iframes-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios/compositing/iframes/overlapped-nested-iframes-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios/compositing/iframes/overlapped-nested-iframes-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 280.00 200.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -42,6 +43,7 @@
(bounds 250.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -93,6 +95,7 @@
(bounds 280.00 200.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -115,6 +118,7 @@
(bounds 250.00 170.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -29,6 +29,7 @@
(bounds 400.00 300.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -91,6 +92,7 @@
(bounds 400.00 300.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios/compositing/iframes/resizer-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios/compositing/iframes/resizer-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios/compositing/iframes/resizer-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -40,6 +40,7 @@
(contentsScale 2.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(visible rect 0.00, 0.00 0.00 x 0.00)
(coverage rect 0.00, 0.00 0.00 x 0.00)
(intersects coverage rect 0)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/composited-parent-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/composited-parent-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/composited-parent-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -21,6 +21,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe-delayed-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe-delayed-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe-delayed-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -23,6 +23,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe2-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe2-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe2-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe3-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe3-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/connect-compositing-iframe3-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/enter-compositing-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/enter-compositing-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/enter-compositing-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/iframe-resize-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/iframe-resize-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/iframe-resize-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 400.00 120.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/leave-compositing-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/leave-compositing-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/leave-compositing-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/overlapped-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/overlapped-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/overlapped-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/page-cache-layer-tree-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/page-cache-layer-tree-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/page-cache-layer-tree-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -27,6 +27,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -77,6 +78,7 @@
(bounds 300.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -21,6 +21,7 @@
(children 1
(GraphicsLayer
(position -80.00 -80.00)
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -17,6 +17,7 @@
(bounds 400.00 400.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -17,6 +17,7 @@
(bounds 400.00 400.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(position -600.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-fixed-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-fixed-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-fixed-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -17,6 +17,7 @@
(bounds 400.00 400.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-relative-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-relative-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-relative-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -17,6 +17,7 @@
(bounds 400.00 400.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -40,6 +40,7 @@
(contentsScale 2.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(bounds 300.00 150.00)
(backingStoreAttached 1)
(visible rect 0.00, 0.00 300.00 x 150.00)
@@ -105,6 +106,7 @@
(contentsScale 2.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(bounds 300.00 150.00)
(backingStoreAttached 1)
(visible rect 0.00, 0.00 300.00 x 150.00)
@@ -170,6 +172,7 @@
(contentsScale 2.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(bounds 300.00 150.00)
(backingStoreAttached 1)
(visible rect 0.00, 0.00 300.00 x 150.00)
Modified: trunk/LayoutTests/platform/ios-wk2/compositing/visible-rect/iframe-and-layers-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/compositing/visible-rect/iframe-and-layers-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/compositing/visible-rect/iframe-and-layers-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -41,6 +41,7 @@
(contentsScale 2.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(visible rect 0.00, 0.00 0.00 x 0.00)
(coverage rect 0.00, 0.00 300.00 x 150.00)
(intersects coverage rect 0)
Modified: trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -66,6 +66,7 @@
(children 1
(GraphicsLayer
(position 0.00 -120.00)
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt
(Binary files differ)
Modified: trunk/LayoutTests/platform/mac/compositing/iframes/resizer-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/mac/compositing/iframes/resizer-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/mac/compositing/iframes/resizer-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -20,6 +20,7 @@
(bounds 285.00 150.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/mac/compositing/visible-rect/iframe-and-layers-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/mac/compositing/visible-rect/iframe-and-layers-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/mac/compositing/visible-rect/iframe-and-layers-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -41,6 +41,7 @@
(contentsScale 1.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(visible rect 0.00, 0.00 0.00 x 0.00)
(coverage rect 0.00, 0.00 285.00 x 135.00)
(intersects coverage rect 0)
Modified: trunk/LayoutTests/platform/mac-wk1/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/mac-wk1/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/mac-wk1/compositing/iframes/remove-reinsert-webview-with-iframe-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -25,6 +25,7 @@
(bounds 400.00 300.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
@@ -83,6 +84,7 @@
(bounds 400.00 300.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -25,6 +25,7 @@
(children 1
(GraphicsLayer
(position 0.00 -100.00)
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -25,6 +25,7 @@
(children 1
(GraphicsLayer
(position 0.00 -100.00)
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/platform/mac-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt (240676 => 240677)
--- trunk/LayoutTests/platform/mac-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/platform/mac-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -49,6 +49,7 @@
(contentsScale 1.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(backingStoreAttached 0)
(visible rect 0.00, 0.00 0.00 x 0.00)
(coverage rect 0.00, 0.00 285.00 x 135.00)
@@ -154,6 +155,7 @@
(contentsScale 1.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(backingStoreAttached 0)
(visible rect 0.00, 0.00 0.00 x 0.00)
(coverage rect 0.00, 0.00 285.00 x 135.00)
@@ -259,6 +261,7 @@
(contentsScale 1.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(backingStoreAttached 0)
(visible rect 0.00, 0.00 0.00 x 0.00)
(coverage rect 0.00, 0.00 285.00 x 135.00)
Modified: trunk/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt (240676 => 240677)
--- trunk/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -68,6 +68,7 @@
(children 1
(GraphicsLayer
(position 0.00 -120.00)
+ (anchor 0.00 0.00)
(children 1
(GraphicsLayer
(anchor 0.00 0.00)
Modified: trunk/LayoutTests/tiled-drawing/tile-coverage-iframe-to-zero-coverage-expected.txt (240676 => 240677)
--- trunk/LayoutTests/tiled-drawing/tile-coverage-iframe-to-zero-coverage-expected.txt 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/LayoutTests/tiled-drawing/tile-coverage-iframe-to-zero-coverage-expected.txt 2019-01-29 21:29:27 UTC (rev 240677)
@@ -45,6 +45,7 @@
(contentsScale 1.00)
(children 1
(GraphicsLayer
+ (anchor 0.00 0.00)
(visible rect 0.00, 0.00 0.00 x 0.00)
(coverage rect 0.00, 0.00 0.00 x 0.00)
(intersects coverage rect 0)
Modified: trunk/Source/WebCore/ChangeLog (240676 => 240677)
--- trunk/Source/WebCore/ChangeLog 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/ChangeLog 2019-01-29 21:29:27 UTC (rev 240677)
@@ -1,3 +1,73 @@
+2019-01-29 Simon Fraser <[email protected]>
+
+ REGRESSION(r240553): [iOS] Crash in ScrollingTree::updateTreeFromStateNode when attempting to log in to icloud.com
+ https://bugs.webkit.org/show_bug.cgi?id=193907
+ rdar://problem/47604080
+
+ Reviewed by Frédéric Wang.
+
+ Recent scrolling tree changes can trigger unparenting and reparenting of subtrees in the
+ state tree. If a subframe's state tree nodes are unparented, a scrolling tree commit would
+ show these as nodes being destroyed, which destroyed the tree nodes. When re-parented, the
+ commit would re-create the tree node, but the state node would only have a subset of the
+ change flags set, so the new tree node would fail to get all of the state (for example, it
+ would be missing layers and scrolling geometry).
+
+ Fix by ensuring that when we reparent state node subtrees, we set all the change flags
+ so that the full set of data is sent to the scrolling tree (the UI process, in the case of iOS WK2).
+ Annoyingly, virtual setAllPropertiesChanged() functions are needed so each state node subclass can
+ set the right change flags.
+
+ This patch also gets rid of m_nodesRemovedSinceLastCommit in the state tree. We can gain the same
+ information by using copying all of the nodeIDs in m_nodeMap into a HashSet, and removing nodes
+ as we encounter them in the tree walk.
+
+ Rename m_latchedNode to m_latchedNodeID in ScrollingTree, since it's a nodeID, not a node pointer.
+
+ Test: compositing/geometry/composited-frame-contents.html
+
+ * page/scrolling/ScrollingStateFixedNode.cpp:
+ (WebCore::ScrollingStateFixedNode::setAllPropertiesChanged):
+ * page/scrolling/ScrollingStateFixedNode.h:
+ * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
+ (WebCore::ScrollingStateFrameScrollingNode::setAllPropertiesChanged):
+ * page/scrolling/ScrollingStateFrameScrollingNode.h:
+ * page/scrolling/ScrollingStateNode.cpp:
+ (WebCore::ScrollingStateNode::setPropertyChanged):
+ (WebCore::ScrollingStateNode::setAllPropertiesChanged):
+ * page/scrolling/ScrollingStateNode.h:
+ (WebCore::ScrollingStateNode::setPropertyChangedBit):
+ * page/scrolling/ScrollingStateScrollingNode.cpp:
+ (WebCore::ScrollingStateScrollingNode::setAllPropertiesChanged):
+ * page/scrolling/ScrollingStateScrollingNode.h:
+ * page/scrolling/ScrollingStateStickyNode.cpp:
+ (WebCore::ScrollingStateStickyNode::setAllPropertiesChanged):
+ * page/scrolling/ScrollingStateStickyNode.h:
+ * page/scrolling/ScrollingStateTree.cpp:
+ (WebCore::ScrollingStateTree::insertNode): Add a RELEASE_ASSERT on the type of the node created
+ if parentID == 0, since mistakes here can associate a ScrollingNodeType::MainFrame node with some
+ other nodeID which can result in type confusion later.
+ (WebCore::ScrollingStateTree::nodeWasReattachedRecursive):
+ (WebCore::ScrollingStateTree::commit):
+ (WebCore::ScrollingStateTree::willRemoveNode):
+ (WebCore::ScrollingStateTree::setRemovedNodes): Deleted.
+ * page/scrolling/ScrollingStateTree.h:
+ (WebCore::ScrollingStateTree::removedNodes const): Deleted.
+ * page/scrolling/ScrollingTree.cpp:
+ (WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
+ (WebCore::ScrollingTree::commitTreeState):
+ (WebCore::ScrollingTree::updateTreeFromStateNode):
+ (WebCore::ScrollingTree::latchedNode):
+ (WebCore::ScrollingTree::setLatchedNode):
+ (WebCore::ScrollingTree::clearLatchedNode):
+ (WebCore::ScrollingTree::scrollingTreeAsText):
+ (WebCore::ScrollingTree::removeDestroyedNodes): Deleted.
+ * page/scrolling/ScrollingTree.h:
+ (WebCore::ScrollingTree::hasLatchedNode const):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::ensureRootLayer): The scroll layer needs a 0,0,0 anchor point so that
+ setting its position doesn't offset it relative to the center.
+
2019-01-29 Justin Fan <[email protected]>
[WebGPU] Fix and add validation to WebGPURenderPipeline and MTLVertexDescriptor
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateFixedNode.cpp (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateFixedNode.cpp 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateFixedNode.cpp 2019-01-29 21:29:27 UTC (rev 240677)
@@ -58,6 +58,12 @@
return adoptRef(*new ScrollingStateFixedNode(*this, adoptiveTree));
}
+void ScrollingStateFixedNode::setAllPropertiesChanged()
+{
+ setPropertyChangedBit(ViewportConstraints);
+ ScrollingStateNode::setAllPropertiesChanged();
+}
+
void ScrollingStateFixedNode::updateConstraints(const FixedPositionViewportConstraints& constraints)
{
if (m_constraints == constraints)
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateFixedNode.h (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateFixedNode.h 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateFixedNode.h 2019-01-29 21:29:27 UTC (rev 240677)
@@ -55,6 +55,8 @@
ScrollingStateFixedNode(ScrollingStateTree&, ScrollingNodeID);
ScrollingStateFixedNode(const ScrollingStateFixedNode&, ScrollingStateTree&);
+ void setAllPropertiesChanged() override;
+
void reconcileLayerPositionForViewportRect(const LayoutRect& viewportRect, ScrollingLayerPositionAction) override;
void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.cpp (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.cpp 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.cpp 2019-01-29 21:29:27 UTC (rev 240677)
@@ -94,6 +94,33 @@
return adoptRef(*new ScrollingStateFrameScrollingNode(*this, adoptiveTree));
}
+void ScrollingStateFrameScrollingNode::setAllPropertiesChanged()
+{
+ setPropertyChangedBit(FrameScaleFactor);
+ setPropertyChangedBit(EventTrackingRegion);
+ setPropertyChangedBit(ReasonsForSynchronousScrolling);
+ setPropertyChangedBit(ScrolledContentsLayer);
+ setPropertyChangedBit(CounterScrollingLayer);
+ setPropertyChangedBit(InsetClipLayer);
+ setPropertyChangedBit(ContentShadowLayer);
+ setPropertyChangedBit(HeaderHeight);
+ setPropertyChangedBit(FooterHeight);
+ setPropertyChangedBit(HeaderLayer);
+ setPropertyChangedBit(FooterLayer);
+ setPropertyChangedBit(VerticalScrollbarLayer);
+ setPropertyChangedBit(HorizontalScrollbarLayer);
+ setPropertyChangedBit(PainterForScrollbar);
+ setPropertyChangedBit(BehaviorForFixedElements);
+ setPropertyChangedBit(TopContentInset);
+ setPropertyChangedBit(FixedElementsLayoutRelativeToFrame);
+ setPropertyChangedBit(VisualViewportEnabled);
+ setPropertyChangedBit(LayoutViewport);
+ setPropertyChangedBit(MinLayoutViewportOrigin);
+ setPropertyChangedBit(MaxLayoutViewportOrigin);
+
+ ScrollingStateScrollingNode::setAllPropertiesChanged();
+}
+
void ScrollingStateFrameScrollingNode::setFrameScaleFactor(float scaleFactor)
{
if (m_frameScaleFactor == scaleFactor)
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.h (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.h 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateFrameScrollingNode.h 2019-01-29 21:29:27 UTC (rev 240677)
@@ -145,6 +145,8 @@
ScrollingStateFrameScrollingNode(ScrollingStateTree&, ScrollingNodeType, ScrollingNodeID);
ScrollingStateFrameScrollingNode(const ScrollingStateFrameScrollingNode&, ScrollingStateTree&);
+ void setAllPropertiesChanged() override;
+
LayerRepresentation m_counterScrollingLayer;
LayerRepresentation m_insetClipLayer;
LayerRepresentation m_contentShadowLayer;
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateNode.cpp (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateNode.cpp 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateNode.cpp 2019-01-29 21:29:27 UTC (rev 240677)
@@ -63,10 +63,17 @@
if (hasChangedProperty(propertyBit))
return;
- m_changedProperties |= (static_cast<ChangedProperties>(1) << propertyBit);
+ setPropertyChangedBit(propertyBit);
m_scrollingStateTree.setHasChangedProperties();
}
+void ScrollingStateNode::setAllPropertiesChanged()
+{
+ setPropertyChangedBit(ScrollLayer);
+ setPropertyChangedBit(ChildNodes);
+ m_scrollingStateTree.setHasChangedProperties();
+}
+
Ref<ScrollingStateNode> ScrollingStateNode::cloneAndReset(ScrollingStateTree& adoptiveTree)
{
auto clone = this->clone(adoptiveTree);
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateNode.h (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateNode.h 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateNode.h 2019-01-29 21:29:27 UTC (rev 240677)
@@ -207,6 +207,7 @@
Ref<ScrollingStateNode> cloneAndReset(ScrollingStateTree& adoptiveTree);
void cloneAndResetChildren(ScrollingStateNode&, ScrollingStateTree& adoptiveTree);
+ // FIXME: using an OptionSet<> for these and derived class bits would simplify code.
enum {
ScrollLayer = 0,
ChildNodes,
@@ -218,6 +219,7 @@
bool hasChangedProperty(unsigned propertyBit) const { return m_changedProperties & (static_cast<ChangedProperties>(1) << propertyBit); }
void resetChangedProperties() { m_changedProperties = 0; }
void setPropertyChanged(unsigned propertyBit);
+ virtual void setAllPropertiesChanged();
ChangedProperties changedProperties() const { return m_changedProperties; }
void setChangedProperties(ChangedProperties changedProperties) { m_changedProperties = changedProperties; }
@@ -254,7 +256,9 @@
ScrollingStateNode(const ScrollingStateNode&, ScrollingStateTree&);
virtual void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const;
-
+
+ inline void setPropertyChangedBit(unsigned propertyBit);
+
private:
void dump(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const;
@@ -270,6 +274,11 @@
LayerRepresentation m_layer;
};
+void ScrollingStateNode::setPropertyChangedBit(unsigned propertyBit)
+{
+ m_changedProperties |= (static_cast<ChangedProperties>(1) << propertyBit);
+}
+
} // namespace WebCore
#define SPECIALIZE_TYPE_TRAITS_SCROLLING_STATE_NODE(ToValueTypeName, predicate) \
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp 2019-01-29 21:29:27 UTC (rev 240677)
@@ -60,6 +60,30 @@
ScrollingStateScrollingNode::~ScrollingStateScrollingNode() = default;
+void ScrollingStateScrollingNode::setAllPropertiesChanged()
+{
+ setPropertyChangedBit(ScrollableAreaSize);
+ setPropertyChangedBit(TotalContentsSize);
+ setPropertyChangedBit(ReachableContentsSize);
+ setPropertyChangedBit(ParentRelativeScrollableRect);
+ setPropertyChangedBit(ScrollPosition);
+ setPropertyChangedBit(ScrollOrigin);
+ setPropertyChangedBit(ScrollableAreaParams);
+ setPropertyChangedBit(RequestedScrollPosition);
+#if ENABLE(CSS_SCROLL_SNAP)
+ setPropertyChangedBit(HorizontalSnapOffsets);
+ setPropertyChangedBit(VerticalSnapOffsets);
+ setPropertyChangedBit(HorizontalSnapOffsetRanges);
+ setPropertyChangedBit(VerticalSnapOffsetRanges);
+ setPropertyChangedBit(CurrentHorizontalSnapOffsetIndex);
+ setPropertyChangedBit(CurrentVerticalSnapOffsetIndex);
+#endif
+ setPropertyChangedBit(ExpectsWheelEventTestTrigger);
+ setPropertyChangedBit(ScrolledContentsLayer);
+
+ ScrollingStateNode::setAllPropertiesChanged();
+}
+
void ScrollingStateScrollingNode::setScrollableAreaSize(const FloatSize& size)
{
if (m_scrollableAreaSize == size)
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h 2019-01-29 21:29:27 UTC (rev 240677)
@@ -116,8 +116,10 @@
ScrollingStateScrollingNode(ScrollingStateTree&, ScrollingNodeType, ScrollingNodeID);
ScrollingStateScrollingNode(const ScrollingStateScrollingNode&, ScrollingStateTree&);
+ void setAllPropertiesChanged() override;
+
void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
-
+
private:
FloatSize m_scrollableAreaSize;
FloatSize m_totalContentsSize;
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateStickyNode.cpp (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateStickyNode.cpp 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateStickyNode.cpp 2019-01-29 21:29:27 UTC (rev 240677)
@@ -58,6 +58,12 @@
return adoptRef(*new ScrollingStateStickyNode(*this, adoptiveTree));
}
+void ScrollingStateStickyNode::setAllPropertiesChanged()
+{
+ setPropertyChangedBit(ViewportConstraints);
+ ScrollingStateNode::setAllPropertiesChanged();
+}
+
void ScrollingStateStickyNode::updateConstraints(const StickyPositionViewportConstraints& constraints)
{
if (m_constraints == constraints)
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateStickyNode.h (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateStickyNode.h 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateStickyNode.h 2019-01-29 21:29:27 UTC (rev 240677)
@@ -55,6 +55,8 @@
ScrollingStateStickyNode(ScrollingStateTree&, ScrollingNodeID);
ScrollingStateStickyNode(const ScrollingStateStickyNode&, ScrollingStateTree&);
+ void setAllPropertiesChanged() override;
+
void reconcileLayerPositionForViewportRect(const LayoutRect& viewportRect, ScrollingLayerPositionAction) override;
void dumpProperties(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const override;
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateTree.cpp (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateTree.cpp 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateTree.cpp 2019-01-29 21:29:27 UTC (rev 240677)
@@ -153,6 +153,7 @@
ScrollingStateNode* newNode = nullptr;
if (!parentID) {
+ RELEASE_ASSERT(nodeType == ScrollingNodeType::MainFrame);
ASSERT(!childIndex || childIndex == notFound);
// If we're resetting the root node, we should clear the HashMap and destroy the current children.
clear();
@@ -169,7 +170,10 @@
if (parentID) {
if (auto unparentedNode = m_unparentedNodes.take(newNodeID)) {
+ LOG_WITH_STREAM(Scrolling, stream << "ScrollingStateTree " << this << " insertNode " << newNodeID << " getting node from unparented nodes");
newNode = unparentedNode.get();
+ nodeWasReattachedRecursive(*unparentedNode);
+
if (childIndex == notFound)
parent->appendChild(unparentedNode.releaseNonNull());
else
@@ -188,7 +192,6 @@
}
addNode(*newNode);
- m_nodesRemovedSinceLastCommit.remove(newNodeID);
return newNodeID;
}
@@ -265,6 +268,17 @@
m_unparentedNodes.clear();
}
+void ScrollingStateTree::nodeWasReattachedRecursive(ScrollingStateNode& node)
+{
+ // When a node is re-attached, the ScrollingTree is recreating the ScrollingNode from scratch, so we need to set all the dirty bits.
+ node.setAllPropertiesChanged();
+
+ if (auto* children = node.children()) {
+ for (auto& child : *children)
+ nodeWasReattachedRecursive(*child);
+ }
+}
+
std::unique_ptr<ScrollingStateTree> ScrollingStateTree::commit(LayerRepresentation::Type preferredLayerRepresentation)
{
if (!m_unparentedNodes.isEmpty()) {
@@ -279,9 +293,6 @@
if (m_rootStateNode)
treeStateClone->setRootStateNode(static_reference_cast<ScrollingStateFrameScrollingNode>(m_rootStateNode->cloneAndReset(*treeStateClone)));
- // Copy the IDs of the nodes that have been removed since the last commit into the clone.
- treeStateClone->m_nodesRemovedSinceLastCommit.swap(m_nodesRemovedSinceLastCommit);
-
// Now the clone tree has changed properties, and the original tree does not.
treeStateClone->m_hasChangedProperties = m_hasChangedProperties;
m_hasChangedProperties = false;
@@ -334,16 +345,10 @@
void ScrollingStateTree::willRemoveNode(ScrollingStateNode* node)
{
- m_nodesRemovedSinceLastCommit.add(node->scrollingNodeID());
m_stateNodeMap.remove(node->scrollingNodeID());
setHasChangedProperties();
}
-void ScrollingStateTree::setRemovedNodes(HashSet<ScrollingNodeID> nodes)
-{
- m_nodesRemovedSinceLastCommit = WTFMove(nodes);
-}
-
ScrollingStateNode* ScrollingStateTree::stateNodeForID(ScrollingNodeID scrollLayerID) const
{
if (!scrollLayerID)
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateTree.h (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateTree.h 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateTree.h 2019-01-29 21:29:27 UTC (rev 240677)
@@ -57,9 +57,6 @@
void unparentChildrenAndDestroyNode(ScrollingNodeID);
void detachAndDestroySubtree(ScrollingNodeID);
void clear();
-
- const HashSet<ScrollingNodeID>& removedNodes() const { return m_nodesRemovedSinceLastCommit; }
- WEBCORE_EXPORT void setRemovedNodes(HashSet<ScrollingNodeID>);
// Copies the current tree state and clears the changed properties mask in the original.
WEBCORE_EXPORT std::unique_ptr<ScrollingStateTree> commit(LayerRepresentation::Type preferredLayerRepresentation);
@@ -82,6 +79,8 @@
void setRootStateNode(Ref<ScrollingStateFrameScrollingNode>&&);
void addNode(ScrollingStateNode&);
+ void nodeWasReattachedRecursive(ScrollingStateNode&);
+
Ref<ScrollingStateNode> createNode(ScrollingNodeType, ScrollingNodeID);
bool nodeTypeAndParentMatch(ScrollingStateNode&, ScrollingNodeType, ScrollingStateNode* parentNode) const;
@@ -98,7 +97,6 @@
HashMap<ScrollingNodeID, RefPtr<ScrollingStateNode>> m_unparentedNodes;
RefPtr<ScrollingStateFrameScrollingNode> m_rootStateNode;
- HashSet<ScrollingNodeID> m_nodesRemovedSinceLastCommit;
bool m_hasChangedProperties { false };
bool m_hasNewRootStateNode { false };
LayerRepresentation::Type m_preferredLayerRepresentation { LayerRepresentation::GraphicsLayerRepresentation };
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp 2019-01-29 21:29:27 UTC (rev 240677)
@@ -56,7 +56,7 @@
return false;
if (shouldSetLatch)
- m_latchedNode = 0;
+ m_latchedNodeID = 0;
if (!m_eventTrackingRegions.isEmpty() && m_rootNode) {
auto& frameScrollingNode = downcast<ScrollingTreeFrameScrollingNode>(*m_rootNode);
@@ -138,13 +138,26 @@
bool scrollRequestIsProgammatic = rootNode ? rootNode->requestedScrollPositionRepresentsProgrammaticScroll() : false;
SetForScope<bool> changeHandlingProgrammaticScroll(m_isHandlingProgrammaticScroll, scrollRequestIsProgammatic);
- removeDestroyedNodes(*scrollingStateTree);
+ // unvisitedNodes starts with all nodes in the map; we remove nodes as we visit them. At the end, it's the unvisited nodes.
+ // We can't use orphanNodes for this, because orphanNodes won't contain descendants of removed nodes.
+ HashSet<ScrollingNodeID> unvisitedNodes;
+ for (auto nodeID : m_nodeMap.keys())
+ unvisitedNodes.add(nodeID);
+ // orphanNodes keeps child nodes alive while we rebuild child lists.
OrphanScrollingNodeMap orphanNodes;
- updateTreeFromStateNode(rootNode, orphanNodes);
+ updateTreeFromStateNode(rootNode, orphanNodes, unvisitedNodes);
+
+ for (auto nodeID : unvisitedNodes) {
+ if (nodeID == m_latchedNodeID)
+ clearLatchedNode();
+
+ LOG(Scrolling, "ScrollingTree::commitTreeState - removing unvisited node %llu", nodeID);
+ m_nodeMap.remove(nodeID);
+ }
}
-void ScrollingTree::updateTreeFromStateNode(const ScrollingStateNode* stateNode, OrphanScrollingNodeMap& orphanNodes)
+void ScrollingTree::updateTreeFromStateNode(const ScrollingStateNode* stateNode, OrphanScrollingNodeMap& orphanNodes, HashSet<ScrollingNodeID>& unvisitedNodes)
{
if (!stateNode) {
m_nodeMap.clear();
@@ -158,9 +171,10 @@
auto it = m_nodeMap.find(nodeID);
RefPtr<ScrollingTreeNode> node;
- if (it != m_nodeMap.end())
+ if (it != m_nodeMap.end()) {
node = it->value;
- else {
+ unvisitedNodes.remove(nodeID);
+ } else {
node = createScrollingTreeNode(stateNode->nodeType(), nodeID);
if (!parentNodeID) {
// This is the root node. Clear the node map.
@@ -195,21 +209,12 @@
// Now update the children if we have any.
if (auto children = stateNode->children()) {
for (auto& child : *children)
- updateTreeFromStateNode(child.get(), orphanNodes);
+ updateTreeFromStateNode(child.get(), orphanNodes, unvisitedNodes);
}
node->commitStateAfterChildren(*stateNode);
}
-void ScrollingTree::removeDestroyedNodes(const ScrollingStateTree& stateTree)
-{
- for (const auto& removedNodeID : stateTree.removedNodes()) {
- m_nodeMap.remove(removedNodeID);
- if (removedNodeID == m_latchedNode)
- clearLatchedNode();
- }
-}
-
ScrollingTreeNode* ScrollingTree::nodeForID(ScrollingNodeID nodeID) const
{
if (!nodeID)
@@ -364,19 +369,19 @@
ScrollingNodeID ScrollingTree::latchedNode()
{
LockHolder locker(m_mutex);
- return m_latchedNode;
+ return m_latchedNodeID;
}
void ScrollingTree::setLatchedNode(ScrollingNodeID node)
{
LockHolder locker(m_mutex);
- m_latchedNode = node;
+ m_latchedNodeID = node;
}
void ScrollingTree::clearLatchedNode()
{
LockHolder locker(m_mutex);
- m_latchedNode = 0;
+ m_latchedNodeID = 0;
}
String ScrollingTree::scrollingTreeAsText()
@@ -386,8 +391,8 @@
TextStream::GroupScope scope(ts);
ts << "scrolling tree";
- if (m_latchedNode)
- ts.dumpProperty("latched node", m_latchedNode);
+ if (m_latchedNodeID)
+ ts.dumpProperty("latched node", m_latchedNodeID);
if (m_mainFrameScrollPosition != IntPoint())
ts.dumpProperty("main frame scroll position", m_mainFrameScrollPosition);
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTree.h (240676 => 240677)
--- trunk/Source/WebCore/page/scrolling/ScrollingTree.h 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTree.h 2019-01-29 21:29:27 UTC (rev 240677)
@@ -143,7 +143,7 @@
void setLatchedNode(ScrollingNodeID);
void clearLatchedNode();
- bool hasLatchedNode() const { return m_latchedNode; }
+ bool hasLatchedNode() const { return m_latchedNodeID; }
void setOrClearLatchedNode(const PlatformWheelEvent&, ScrollingNodeID);
bool hasFixedOrSticky() const { return !!m_fixedOrStickyNodeCount; }
@@ -163,16 +163,14 @@
WEBCORE_EXPORT virtual void handleWheelEvent(const PlatformWheelEvent&);
private:
- void removeDestroyedNodes(const ScrollingStateTree&);
-
- typedef HashMap<ScrollingNodeID, RefPtr<ScrollingTreeNode>> OrphanScrollingNodeMap;
- void updateTreeFromStateNode(const ScrollingStateNode*, OrphanScrollingNodeMap&);
+ using OrphanScrollingNodeMap = HashMap<ScrollingNodeID, RefPtr<ScrollingTreeNode>>;
+ void updateTreeFromStateNode(const ScrollingStateNode*, OrphanScrollingNodeMap&, HashSet<ScrollingNodeID>& unvisitedNodes);
ScrollingTreeNode* nodeForID(ScrollingNodeID) const;
RefPtr<ScrollingTreeNode> m_rootNode;
- typedef HashMap<ScrollingNodeID, ScrollingTreeNode*> ScrollingTreeNodeMap;
+ using ScrollingTreeNodeMap = HashMap<ScrollingNodeID, ScrollingTreeNode*>;
ScrollingTreeNodeMap m_nodeMap;
Lock m_mutex;
@@ -181,7 +179,7 @@
Lock m_swipeStateMutex;
ScrollPinningBehavior m_scrollPinningBehavior { DoNotPin };
- ScrollingNodeID m_latchedNode { 0 };
+ ScrollingNodeID m_latchedNodeID { 0 };
unsigned m_fixedOrStickyNodeCount { 0 };
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (240676 => 240677)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-01-29 21:29:27 UTC (rev 240677)
@@ -3444,6 +3444,7 @@
#endif
m_scrollLayer = GraphicsLayer::create(graphicsLayerFactory(), *this, scrollLayerType);
m_scrollLayer->setName("frame scrolling");
+ m_scrollLayer->setAnchorPoint({ });
if (scrollLayerType == GraphicsLayer::Type::Scrolling) {
// Scroll layer clips so there is no need for a separate clipping layer.
@@ -3452,7 +3453,7 @@
m_clipLayer = GraphicsLayer::create(graphicsLayerFactory(), *this);
m_clipLayer->setName("frame clipping");
m_clipLayer->setMasksToBounds(true);
- m_clipLayer->setAnchorPoint(FloatPoint3D());
+ m_clipLayer->setAnchorPoint({ });
m_clipLayer->addChild(*m_scrollLayer);
m_overflowControlsHostLayer->addChild(*m_clipLayer);
Modified: trunk/Source/WebKit/ChangeLog (240676 => 240677)
--- trunk/Source/WebKit/ChangeLog 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebKit/ChangeLog 2019-01-29 21:29:27 UTC (rev 240677)
@@ -1,3 +1,17 @@
+2019-01-29 Simon Fraser <[email protected]>
+
+ REGRESSION(r240553): [iOS] Crash in ScrollingTree::updateTreeFromStateNode when attempting to log in to icloud.com
+ https://bugs.webkit.org/show_bug.cgi?id=193907
+
+ Reviewed by Frédéric Wang.
+
+ Remove encode/decode of removedNodes.
+
+ * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
+ (WebKit::RemoteScrollingCoordinatorTransaction::encode const):
+ (WebKit::RemoteScrollingCoordinatorTransaction::decode):
+ (WebKit::dump):
+
2019-01-29 Brent Fulgham <[email protected]>
StorageAccess API calls should be direct to the Network Process
Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp (240676 => 240677)
--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp 2019-01-29 21:27:32 UTC (rev 240676)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp 2019-01-29 21:29:27 UTC (rev 240677)
@@ -413,7 +413,6 @@
encodeNodeAndDescendants(encoder, *rootNode, numNodesEncoded);
ASSERT_UNUSED(numNodesEncoded, numNodesEncoded == numNodes);
- encoder << m_scrollingStateTree->removedNodes();
} else
encoder << Vector<ScrollingNodeID>();
}
@@ -486,14 +485,6 @@
m_scrollingStateTree->setHasNewRootStateNode(hasNewRootNode);
- // Removed nodes
- HashSet<ScrollingNodeID> removedNodes;
- if (!decoder.decode(removedNodes))
- return false;
-
- if (removedNodes.size())
- m_scrollingStateTree->setRemovedNodes(removedNodes);
-
return true;
}
@@ -653,9 +644,6 @@
if (stateTree.rootStateNode())
recursiveDumpNodes(ts, *stateTree.rootStateNode(), changedPropertiesOnly);
-
- if (!stateTree.removedNodes().isEmpty())
- ts.dumpProperty<Vector<ScrollingNodeID>>("removed-nodes", copyToVector(stateTree.removedNodes()));
}
WTF::CString RemoteScrollingCoordinatorTransaction::description() const