2017-02-10 22:40:18 +00:00
|
|
|
|
|
|
|
(GraphicsLayer
|
|
|
|
(anchor 0.00 0.00)
|
|
|
|
(bounds 858.00 5016.00)
|
|
|
|
(visible rect 0.00, 3000.00 785.00 x 585.00)
|
|
|
|
(coverage rect 0.00, 3000.00 785.00 x 585.00)
|
|
|
|
(intersects coverage rect 1)
|
|
|
|
(contentsScale 1.00)
|
|
|
|
(children 1
|
|
|
|
(GraphicsLayer
|
|
|
|
(bounds 858.00 5016.00)
|
|
|
|
(contentsOpaque 1)
|
|
|
|
(visible rect 0.00, 3000.00 785.00 x 585.00)
|
|
|
|
(coverage rect 0.00, 3000.00 785.00 x 585.00)
|
|
|
|
(intersects coverage rect 1)
|
|
|
|
(contentsScale 1.00)
|
|
|
|
(tile cache coverage 0, 2560 858 x 1536)
|
|
|
|
(tile size 512 x 512)
|
|
|
|
(top left tile 0, 5 tiles grid 2 x 3)
|
|
|
|
(in window 1)
|
|
|
|
(children 1
|
|
|
|
(GraphicsLayer
|
2017-12-14 09:39:59 +00:00
|
|
|
(offsetFromRenderer width=-7 height=-7)
|
2017-02-10 22:40:18 +00:00
|
|
|
(position 1.00 1.00)
|
|
|
|
(bounds 857.00 464.00)
|
|
|
|
(drawsContent 1)
|
|
|
|
(visible rect 0.00, 0.00 0.00 x 0.00)
|
|
|
|
(coverage rect -1.00, 2999.00 785.00 x 585.00)
|
|
|
|
(intersects coverage rect 0)
|
|
|
|
(contentsScale 1.00)
|
|
|
|
(children 1
|
|
|
|
(GraphicsLayer
|
|
|
|
(position 32.00 32.00)
|
|
|
|
(visible rect 0.00, 0.00 0.00 x 0.00)
|
|
|
|
(coverage rect -33.00, 2967.00 785.00 x 585.00)
|
|
|
|
(intersects coverage rect 0)
|
|
|
|
(contentsScale 1.00)
|
|
|
|
(children 1
|
|
|
|
(GraphicsLayer
|
|
|
|
(anchor 0.00 0.00)
|
|
|
|
(bounds 800.00 400.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)
|
|
|
|
(contentsScale 1.00)
|
|
|
|
(children 1
|
|
|
|
(GraphicsLayer
|
REGRESSION(r240553): [iOS] Crash in ScrollingTree::updateTreeFromStateNode when attempting to log in to icloud.com
https://bugs.webkit.org/show_bug.cgi?id=193907
Source/WebCore:
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.
Source/WebKit:
Reviewed by Frédéric Wang.
Remove encode/decode of removedNodes.
* Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
(WebKit::RemoteScrollingCoordinatorTransaction::encode const):
(WebKit::RemoteScrollingCoordinatorTransaction::decode):
(WebKit::dump):
LayoutTests:
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:
Canonical link: https://commits.webkit.org/208473@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@240677 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-01-29 21:29:27 +00:00
|
|
|
(anchor 0.00 0.00)
|
2017-02-10 22:40:18 +00: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)
|
|
|
|
(contentsScale 1.00)
|
|
|
|
(children 1
|
|
|
|
(GraphicsLayer
|
|
|
|
(anchor 0.00 0.00)
|
|
|
|
(bounds 2508.00 400.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)
|
|
|
|
(contentsScale 1.00)
|
|
|
|
(children 1
|
|
|
|
(GraphicsLayer
|
|
|
|
(bounds 2508.00 400.00)
|
|
|
|
(usingTiledLayer 1)
|
|
|
|
(drawsContent 1)
|
|
|
|
(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)
|
|
|
|
(contentsScale 1.00)
|
|
|
|
(tile cache coverage 0, 0 0 x 0)
|
|
|
|
(tile size 512 x 512)
|
|
|
|
(top left tile 0, 0 tiles grid 0 x 0)
|
|
|
|
(in window 1)
|
|
|
|
(children 1
|
|
|
|
(GraphicsLayer
|
|
|
|
(position 8.00 8.00)
|
|
|
|
(bounds 2500.00 200.00)
|
|
|
|
(usingTiledLayer 1)
|
|
|
|
(contentsOpaque 1)
|
|
|
|
(drawsContent 1)
|
|
|
|
(visible rect 0.00, 0.00 0.00 x 0.00)
|
2019-08-11 04:03:56 +00:00
|
|
|
(coverage rect -8.00, -8.00 0.00 x 0.00)
|
2017-02-10 22:40:18 +00:00
|
|
|
(intersects coverage rect 0)
|
|
|
|
(contentsScale 1.00)
|
|
|
|
(tile cache coverage 0, 0 0 x 0)
|
|
|
|
(tile size 512 x 512)
|
|
|
|
(top left tile 0, 0 tiles grid 0 x 0)
|
|
|
|
(in window 1)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|