With help of some UIKit SPIs.
Created attachment 372913 [details] WIP
Created attachment 372914 [details] test case
Created attachment 373030 [details] test with more nested scrollers
Created attachment 373104 [details] patch
Comment on attachment 373104 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=373104&action=review > Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:141 > + if (auto* nonAncestorScrollingNode = host.nodeForID(node->relatedScrollContainerIDs()[0])) I'm having a hard time convincing myself that using relatedScrollContainerIDs()[0] is correct. What does it mean to have more than one? What is the order?
> I'm having a hard time convincing myself that using > relatedScrollContainerIDs()[0] is correct. What does it mean to have more > than one? What is the order? Would knowing that you wrote the code that sets it be help? :) It is simply the layer tree counterpart of ScrollingTreeOverflowScrollProxyNode::m_overflowScrollingNodeID. Having Moves and Stationary cases in a single vector matches the old design where PositionedNode handled both cases. It should really be refactored into two separate variables, matching PositionedNode split.
Comment on attachment 373104 [details] patch Clearing flags on attachment: 373104 Committed r246926: <https://trac.webkit.org/changeset/246926>
All reviewed patches have been landed. Closing bug.
<rdar://problem/52338107>
<rdar://problem/49720738>