Diff
Modified: trunk/Source/WebCore/ChangeLog (240860 => 240861)
--- trunk/Source/WebCore/ChangeLog 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/ChangeLog 2019-02-01 20:10:23 UTC (rev 240861)
@@ -1,3 +1,68 @@
+2019-02-01 Antti Koivisto <an...@apple.com>
+
+ Don't use base layer() as the scroll layer in scrolling tree.
+ https://bugs.webkit.org/show_bug.cgi?id=194160
+
+ Reviewed by Simon Fraser.
+
+ Maintain scrollContainerLayer() and scrolledContentsLayer() separately in ScrollingTreeScrollingNode.
+
+ * page/scrolling/AsyncScrollingCoordinator.cpp:
+ (WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
+ (WebCore::AsyncScrollingCoordinator::setNodeLayers):
+ * page/scrolling/AsyncScrollingCoordinator.h:
+ * page/scrolling/ScrollingCoordinator.h:
+ (WebCore::ScrollingCoordinator::setNodeLayers):
+
+ Turn the long layer parameter list into a struct.
+
+ * page/scrolling/ScrollingStateNode.cpp:
+ (WebCore::ScrollingStateNode::ScrollingStateNode):
+ (WebCore::ScrollingStateNode::setAllPropertiesChanged):
+ (WebCore::ScrollingStateNode::setLayer):
+ * page/scrolling/ScrollingStateNode.h:
+ * page/scrolling/ScrollingStateScrollingNode.cpp:
+ (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
+ (WebCore::ScrollingStateScrollingNode::setAllPropertiesChanged):
+ (WebCore::ScrollingStateScrollingNode::setScrollContainerLayer):
+ (WebCore::ScrollingStateScrollingNode::dumpProperties const):
+ * page/scrolling/ScrollingStateScrollingNode.h:
+ (WebCore::ScrollingStateScrollingNode::scrollContainerLayer const):
+ * page/scrolling/ScrollingTree.cpp:
+ (WebCore::ScrollingTree::commitTreeState):
+ * page/scrolling/ScrollingTreeScrollingNode.cpp:
+ (WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
+ * page/scrolling/ScrollingTreeScrollingNode.h:
+ (WebCore::ScrollingTreeScrollingNode::scrollContainerLayer const):
+ (WebCore::ScrollingTreeScrollingNode::scrolledContentsLayer const):
+ * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
+ * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:
+ (WebCore::ScrollingTreeFrameScrollingNodeIOS::commitStateBeforeChildren):
+ (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollPosition const):
+ (WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollLayerPosition):
+ (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollLayer const): Deleted.
+ * page/scrolling/mac/ScrollingTreeFixedNode.mm:
+ (WebCore::ScrollingTreeFixedNode::commitStateBeforeChildren):
+ * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
+ * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
+ (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
+ (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren):
+ (WebCore::ScrollingTreeFrameScrollingNodeMac::scrollPosition const):
+ (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition):
+ (WebCore::ScrollingTreeFrameScrollingNodeMac::exposedUnfilledArea const):
+ * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
+ * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
+ (WebCore::ScrollingTreeOverflowScrollingNodeMac::commitStateBeforeChildren):
+ (WebCore::ScrollingTreeOverflowScrollingNodeMac::scrollPosition const):
+ (WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition):
+ * page/scrolling/mac/ScrollingTreeStickyNode.mm:
+ (WebCore::ScrollingTreeStickyNode::commitStateBeforeChildren):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
+ (WebCore::RenderLayerCompositor::updateScrollingNodeForViewportConstrainedRole):
+ (WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
+ (WebCore::RenderLayerCompositor::updateScrollingNodeForFrameHostingRole):
+
2019-02-01 Simon Fraser <simon.fra...@apple.com>
REGRESSION (r240698): fast/scrolling/sticky-to-fixed.html can cause a crash
Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp 2019-02-01 20:10:23 UTC (rev 240861)
@@ -226,7 +226,7 @@
ScrollingCoordinator::frameViewRootLayerDidChange(frameView);
auto* node = downcast<ScrollingStateFrameScrollingNode>(m_scrollingStateTree->stateNodeForID(frameView.scrollingNodeID()));
- node->setLayer(scrollLayerForFrameView(frameView));
+ node->setScrolledContentsLayer(scrollLayerForFrameView(frameView));
node->setRootContentsLayer(rootContentsLayerForFrameView(frameView));
node->setCounterScrollingLayer(counterScrollingLayerForFrameView(frameView));
node->setInsetClipLayer(insetClipLayerForFrameView(frameView));
@@ -573,7 +573,7 @@
insertNode(ScrollingNodeType::MainFrame, frameView.scrollingNodeID(), 0, 0);
}
-void AsyncScrollingCoordinator::setNodeLayers(ScrollingNodeID nodeID, GraphicsLayer* layer, GraphicsLayer* scrolledContentsLayer, GraphicsLayer* counterScrollingLayer, GraphicsLayer* insetClipLayer, GraphicsLayer* rootContentsLayer)
+void AsyncScrollingCoordinator::setNodeLayers(ScrollingNodeID nodeID, const NodeLayers& nodeLayers)
{
auto* node = m_scrollingStateTree->stateNodeForID(nodeID);
ASSERT(node);
@@ -580,18 +580,18 @@
if (!node)
return;
- node->setLayer(layer);
+ node->setLayer(nodeLayers.layer);
if (is<ScrollingStateScrollingNode>(node)) {
auto& scrollingNode = downcast<ScrollingStateScrollingNode>(*node);
- // FIXME: Currently unused.
- scrollingNode.setScrolledContentsLayer(scrolledContentsLayer);
+ scrollingNode.setScrollContainerLayer(nodeLayers.scrollContainerLayer);
+ scrollingNode.setScrolledContentsLayer(nodeLayers.scrolledContentsLayer);
if (is<ScrollingStateFrameScrollingNode>(node)) {
auto& frameScrollingNode = downcast<ScrollingStateFrameScrollingNode>(*node);
- frameScrollingNode.setInsetClipLayer(insetClipLayer);
- frameScrollingNode.setCounterScrollingLayer(counterScrollingLayer);
- frameScrollingNode.setRootContentsLayer(rootContentsLayer);
+ frameScrollingNode.setInsetClipLayer(nodeLayers.insetClipLayer);
+ frameScrollingNode.setCounterScrollingLayer(nodeLayers.counterScrollingLayer);
+ frameScrollingNode.setRootContentsLayer(nodeLayers.rootContentsLayer);
}
}
}
Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h 2019-02-01 20:10:23 UTC (rev 240861)
@@ -108,7 +108,7 @@
WEBCORE_EXPORT ScrollingNodeID parentOfNode(ScrollingNodeID) const override;
WEBCORE_EXPORT Vector<ScrollingNodeID> childrenOfNode(ScrollingNodeID) const override;
- WEBCORE_EXPORT void setNodeLayers(ScrollingNodeID, GraphicsLayer* /*layer*/, GraphicsLayer* /*scrolledContentsLayer*/ = nullptr, GraphicsLayer* /*counterScrollingLayer*/ = nullptr, GraphicsLayer* /*insetClipLayer*/ = nullptr, GraphicsLayer* /*rootContentsLayer*/ = nullptr) override;
+ WEBCORE_EXPORT void setNodeLayers(ScrollingNodeID, const NodeLayers&) override;
WEBCORE_EXPORT void setScrollingNodeGeometry(ScrollingNodeID, const ScrollingGeometry&) override;
WEBCORE_EXPORT void setViewportConstraintedNodeGeometry(ScrollingNodeID, const ViewportConstraints&) override;
Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.h (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.h 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.h 2019-02-01 20:10:23 UTC (rev 240861)
@@ -129,7 +129,15 @@
virtual ScrollingNodeID parentOfNode(ScrollingNodeID) const { return 0; }
virtual Vector<ScrollingNodeID> childrenOfNode(ScrollingNodeID) const { return { }; }
- virtual void setNodeLayers(ScrollingNodeID, GraphicsLayer* /*layer*/, GraphicsLayer* /*scrolledContentsLayer*/ = nullptr, GraphicsLayer* /*counterScrollingLayer*/ = nullptr, GraphicsLayer* /*insetClipLayer*/ = nullptr, GraphicsLayer* /*rootContentsLayer*/ = nullptr) { }
+ struct NodeLayers {
+ GraphicsLayer* layer { nullptr };
+ GraphicsLayer* scrollContainerLayer { nullptr };
+ GraphicsLayer* scrolledContentsLayer { nullptr };
+ GraphicsLayer* counterScrollingLayer { nullptr };
+ GraphicsLayer* insetClipLayer { nullptr };
+ GraphicsLayer* rootContentsLayer { nullptr };
+ };
+ virtual void setNodeLayers(ScrollingNodeID, const NodeLayers&) { }
struct ScrollingGeometry {
LayoutRect parentRelativeScrollableRect;
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateNode.cpp (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateNode.cpp 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateNode.cpp 2019-02-01 20:10:23 UTC (rev 240861)
@@ -51,7 +51,7 @@
, m_changedProperties(stateNode.changedProperties())
, m_scrollingStateTree(adoptiveTree)
{
- if (hasChangedProperty(ScrollLayer))
+ if (hasChangedProperty(Layer))
setLayer(stateNode.layer().toRepresentation(adoptiveTree.preferredLayerRepresentation()));
scrollingStateTree().addNode(*this);
}
@@ -69,7 +69,7 @@
void ScrollingStateNode::setAllPropertiesChanged()
{
- setPropertyChangedBit(ScrollLayer);
+ setPropertyChangedBit(Layer);
setPropertyChangedBit(ChildNodes);
m_scrollingStateTree.setHasChangedProperties();
}
@@ -167,7 +167,7 @@
m_layer = layerRepresentation;
- setPropertyChanged(ScrollLayer);
+ setPropertyChanged(Layer);
}
void ScrollingStateNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateNode.h (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateNode.h 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateNode.h 2019-02-01 20:10:23 UTC (rev 240861)
@@ -209,7 +209,7 @@
// FIXME: using an OptionSet<> for these and derived class bits would simplify code.
enum {
- ScrollLayer = 0,
+ Layer = 0,
ChildNodes,
NumStateNodeBits // This must remain at the last position.
};
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp 2019-02-01 20:10:23 UTC (rev 240861)
@@ -54,6 +54,8 @@
, m_requestedScrollPositionRepresentsProgrammaticScroll(stateNode.requestedScrollPositionRepresentsProgrammaticScroll())
, m_expectsWheelEventTestTrigger(stateNode.expectsWheelEventTestTrigger())
{
+ if (hasChangedProperty(ScrollContainerLayer))
+ setScrollContainerLayer(stateNode.scrollContainerLayer().toRepresentation(adoptiveTree.preferredLayerRepresentation()));
if (hasChangedProperty(ScrolledContentsLayer))
setScrolledContentsLayer(stateNode.scrolledContentsLayer().toRepresentation(adoptiveTree.preferredLayerRepresentation()));
}
@@ -79,6 +81,7 @@
setPropertyChangedBit(CurrentVerticalSnapOffsetIndex);
#endif
setPropertyChangedBit(ExpectsWheelEventTestTrigger);
+ setPropertyChangedBit(ScrollContainerLayer);
setPropertyChangedBit(ScrolledContentsLayer);
ScrollingStateNode::setAllPropertiesChanged();
@@ -219,6 +222,15 @@
setPropertyChanged(ExpectsWheelEventTestTrigger);
}
+void ScrollingStateScrollingNode::setScrollContainerLayer(const LayerRepresentation& layerRepresentation)
+{
+ if (layerRepresentation == m_scrollContainerLayer)
+ return;
+
+ m_scrollContainerLayer = layerRepresentation;
+ setPropertyChanged(ScrollContainerLayer);
+}
+
void ScrollingStateScrollingNode::setScrolledContentsLayer(const LayerRepresentation& layerRepresentation)
{
if (layerRepresentation == m_scrolledContentsLayer)
@@ -290,8 +302,12 @@
if (m_expectsWheelEventTestTrigger)
ts.dumpProperty("expects wheel event test trigger", m_expectsWheelEventTestTrigger);
- if ((behavior & ScrollingStateTreeAsTextBehaviorIncludeLayerIDs) && m_scrolledContentsLayer.layerID())
- ts.dumpProperty("scrolled contents layer", m_scrolledContentsLayer.layerID());
+ if (behavior & ScrollingStateTreeAsTextBehaviorIncludeLayerIDs) {
+ if (m_scrollContainerLayer.layerID())
+ ts.dumpProperty("scroll container layer", m_scrollContainerLayer.layerID());
+ if (m_scrolledContentsLayer.layerID())
+ ts.dumpProperty("scrolled contents layer", m_scrolledContentsLayer.layerID());
+ }
}
} // namespace WebCore
Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h 2019-02-01 20:10:23 UTC (rev 240861)
@@ -56,6 +56,7 @@
CurrentVerticalSnapOffsetIndex,
#endif
ExpectsWheelEventTestTrigger,
+ ScrollContainerLayer,
ScrolledContentsLayer,
NumScrollingStateNodeBits // This must remain at the last position.
};
@@ -108,6 +109,9 @@
bool expectsWheelEventTestTrigger() const { return m_expectsWheelEventTestTrigger; }
WEBCORE_EXPORT void setExpectsWheelEventTestTrigger(bool);
+ const LayerRepresentation& scrollContainerLayer() const { return m_scrollContainerLayer; }
+ WEBCORE_EXPORT void setScrollContainerLayer(const LayerRepresentation&);
+
// This is a layer with the contents that move.
const LayerRepresentation& scrolledContentsLayer() const { return m_scrolledContentsLayer; }
WEBCORE_EXPORT void setScrolledContentsLayer(const LayerRepresentation&);
@@ -134,6 +138,7 @@
unsigned m_currentVerticalSnapPointIndex { 0 };
#endif
ScrollableAreaParameters m_scrollableAreaParameters;
+ LayerRepresentation m_scrollContainerLayer;
LayerRepresentation m_scrolledContentsLayer;
bool m_requestedScrollPositionRepresentsProgrammaticScroll { false };
bool m_expectsWheelEventTestTrigger { false };
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp 2019-02-01 20:10:23 UTC (rev 240861)
@@ -154,12 +154,12 @@
if (rootNode
&& (rootStateNodeChanged
|| rootNode->hasChangedProperty(ScrollingStateFrameScrollingNode::EventTrackingRegion)
- || rootNode->hasChangedProperty(ScrollingStateNode::ScrollLayer)
+ || rootNode->hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)
|| rootNode->hasChangedProperty(ScrollingStateFrameScrollingNode::VisualViewportEnabled)
|| rootNode->hasChangedProperty(ScrollingStateFrameScrollingNode::AsyncFrameOrOverflowScrollingEnabled))) {
LockHolder lock(m_mutex);
- if (rootStateNodeChanged || rootNode->hasChangedProperty(ScrollingStateNode::ScrollLayer))
+ if (rootStateNodeChanged || rootNode->hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
m_mainFrameScrollPosition = FloatPoint();
if (rootStateNodeChanged || rootNode->hasChangedProperty(ScrollingStateFrameScrollingNode::EventTrackingRegion))
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp 2019-02-01 20:10:23 UTC (rev 240861)
@@ -96,6 +96,14 @@
if (state.hasChangedProperty(ScrollingStateScrollingNode::ExpectsWheelEventTestTrigger))
m_expectsWheelEventTestTrigger = state.expectsWheelEventTestTrigger();
+
+#if PLATFORM(COCOA)
+ if (state.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer))
+ m_scrollContainerLayer = state.scrollContainerLayer();
+
+ if (state.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
+ m_scrolledContentsLayer = state.scrolledContentsLayer();
+#endif
}
void ScrollingTreeScrollingNode::commitStateAfterChildren(const ScrollingStateNode& stateNode)
Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h 2019-02-01 20:10:23 UTC (rev 240861)
@@ -111,6 +111,11 @@
bool expectsWheelEventTestTrigger() const { return m_expectsWheelEventTestTrigger; }
+#if PLATFORM(COCOA)
+ CALayer *scrollContainerLayer() const { return m_scrollContainerLayer.get(); }
+ CALayer *scrolledContentsLayer() const { return m_scrolledContentsLayer.get(); }
+#endif
+
WEBCORE_EXPORT LayoutPoint parentToLocalPoint(LayoutPoint) const override;
WEBCORE_EXPORT LayoutPoint localToContentsPoint(LayoutPoint) const override;
@@ -131,6 +136,11 @@
#endif
ScrollableAreaParameters m_scrollableAreaParameters;
bool m_expectsWheelEventTestTrigger { false };
+
+#if PLATFORM(COCOA)
+ RetainPtr<CALayer> m_scrollContainerLayer;
+ RetainPtr<CALayer> m_scrolledContentsLayer;
+#endif
};
} // namespace WebCore
Modified: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h 2019-02-01 20:10:23 UTC (rev 240861)
@@ -61,12 +61,9 @@
FloatPoint minimumScrollPosition() const override;
FloatPoint maximumScrollPosition() const override;
- CALayer *scrollLayer() const;
-
private:
void updateChildNodesAfterScroll(const FloatPoint&);
- RetainPtr<CALayer> m_scrollLayer;
RetainPtr<CALayer> m_counterScrollingLayer;
RetainPtr<CALayer> m_headerLayer;
RetainPtr<CALayer> m_footerLayer;
Modified: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm 2019-02-01 20:10:23 UTC (rev 240861)
@@ -59,9 +59,6 @@
const auto& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(stateNode);
- if (scrollingStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer))
- m_scrollLayer = scrollingStateNode.layer();
-
if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::CounterScrollingLayer))
m_counterScrollingLayer = scrollingStateNode.counterScrollingLayer();
@@ -78,7 +75,7 @@
if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::RequestedScrollPosition))
m_probableMainThreadScrollPosition = scrollingStateNode.requestedScrollPosition();
else {
- CGPoint scrollLayerPosition = m_scrollLayer.get().position;
+ CGPoint scrollLayerPosition = scrolledContentsLayer().position;
m_probableMainThreadScrollPosition = IntPoint(-scrollLayerPosition.x, -scrollLayerPosition.y);
}
}
@@ -106,7 +103,7 @@
if (shouldUpdateScrollLayerPositionSynchronously())
return m_probableMainThreadScrollPosition;
- return -m_scrollLayer.get().position;
+ return -scrolledContentsLayer().position;
}
void ScrollingTreeFrameScrollingNodeIOS::setScrollPosition(const FloatPoint& scrollPosition)
@@ -130,7 +127,7 @@
void ScrollingTreeFrameScrollingNodeIOS::setScrollLayerPosition(const FloatPoint& scrollPosition, const FloatRect&)
{
ASSERT(!shouldUpdateScrollLayerPositionSynchronously());
- [m_scrollLayer setPosition:-scrollPosition];
+ [scrolledContentsLayer() setPosition:-scrollPosition];
updateChildNodesAfterScroll(scrollPosition);
}
@@ -220,11 +217,6 @@
return position;
}
-CALayer *ScrollingTreeFrameScrollingNodeIOS::scrollLayer() const
-{
- return m_scrollLayer.get();
-}
-
} // namespace WebCore
#endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS_FAMILY)
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm 2019-02-01 20:10:23 UTC (rev 240861)
@@ -56,7 +56,7 @@
{
const ScrollingStateFixedNode& fixedStateNode = downcast<ScrollingStateFixedNode>(stateNode);
- if (fixedStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer))
+ if (fixedStateNode.hasChangedProperty(ScrollingStateNode::Layer))
m_layer = fixedStateNode.layer();
if (stateNode.hasChangedProperty(ScrollingStateFixedNode::ViewportConstraints))
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h 2019-02-01 20:10:23 UTC (rev 240861)
@@ -69,7 +69,6 @@
unsigned exposedUnfilledArea() const;
private:
- RetainPtr<CALayer> m_scrollLayer;
RetainPtr<CALayer> m_rootContentsLayer;
RetainPtr<CALayer> m_counterScrollingLayer;
RetainPtr<CALayer> m_insetClipLayer;
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm 2019-02-01 20:10:23 UTC (rev 240861)
@@ -100,9 +100,6 @@
ScrollingTreeFrameScrollingNode::commitStateBeforeChildren(stateNode);
const auto& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(stateNode);
- if (scrollingStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer))
- m_scrollLayer = scrollingStateNode.layer();
-
if (scrollingStateNode.hasChangedProperty(ScrollingStateFrameScrollingNode::RootContentsLayer))
m_rootContentsLayer = scrollingStateNode.rootContentsLayer();
@@ -135,7 +132,7 @@
if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::RequestedScrollPosition))
m_probableMainThreadScrollPosition = scrollingStateNode.requestedScrollPosition();
else {
- CGPoint scrollLayerPosition = m_scrollLayer.get().position;
+ CGPoint scrollLayerPosition = scrolledContentsLayer().position;
m_probableMainThreadScrollPosition = FloatPoint(-scrollLayerPosition.x, -scrollLayerPosition.y);
}
}
@@ -173,7 +170,7 @@
if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::RequestedScrollPosition))
setScrollPosition(scrollingStateNode.requestedScrollPosition());
- if (scrollingStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer)
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)
|| scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::TotalContentsSize)
|| scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollableAreaSize))
updateMainFramePinState(scrollPosition());
@@ -221,7 +218,7 @@
if (shouldUpdateScrollLayerPositionSynchronously())
return m_probableMainThreadScrollPosition;
- return -m_scrollLayer.get().position;
+ return -scrolledContentsLayer().position;
}
void ScrollingTreeFrameScrollingNodeMac::setScrollPosition(const FloatPoint& scrollPosition)
@@ -269,7 +266,7 @@
{
ASSERT(!shouldUpdateScrollLayerPositionSynchronously());
- m_scrollLayer.get().position = -position;
+ scrolledContentsLayer().position = -position;
FloatRect visibleContentRect(position, scrollableAreaSize());
FloatRect fixedPositionRect;
@@ -384,7 +381,7 @@
Region paintedVisibleTiles;
Deque<CALayer*> layerQueue;
- layerQueue.append(m_scrollLayer.get());
+ layerQueue.append(scrolledContentsLayer());
PlatformLayerList tiles;
while (!layerQueue.isEmpty() && tiles.isEmpty()) {
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h 2019-02-01 20:10:23 UTC (rev 240861)
@@ -58,11 +58,6 @@
ScrollingEventResult handleWheelEvent(const PlatformWheelEvent&) override;
-
- RetainPtr<CALayer> m_scrollLayer;
- RetainPtr<CALayer> m_scrolledContentsLayer;
-
-
ScrollingTreeScrollingNodeDelegateMac m_delegate;
};
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm 2019-02-01 20:10:23 UTC (rev 240861)
@@ -54,13 +54,7 @@
{
ScrollingTreeOverflowScrollingNode::commitStateBeforeChildren(stateNode);
const auto& scrollingStateNode = downcast<ScrollingStateOverflowScrollingNode>(stateNode);
-
- if (scrollingStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer))
- m_scrollLayer = scrollingStateNode.layer();
-
- if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
- m_scrolledContentsLayer = scrollingStateNode.scrolledContentsLayer();
-
+ UNUSED_PARAM(scrollingStateNode);
// FIXME: Scroll snap data.
}
@@ -108,7 +102,7 @@
FloatPoint ScrollingTreeOverflowScrollingNodeMac::scrollPosition() const
{
- return -m_scrolledContentsLayer.get().position;
+ return -scrolledContentsLayer().position;
}
void ScrollingTreeOverflowScrollingNodeMac::setScrollPosition(const FloatPoint& scrollPosition)
@@ -130,7 +124,7 @@
void ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition(const FloatPoint& scrollPosition, const FloatRect& fixedPositionRect)
{
- m_scrolledContentsLayer.get().position = -scrollPosition;
+ scrolledContentsLayer().position = -scrollPosition;
if (!m_children)
return;
Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm (240860 => 240861)
--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm 2019-02-01 20:10:23 UTC (rev 240861)
@@ -58,7 +58,7 @@
{
const ScrollingStateStickyNode& stickyStateNode = downcast<ScrollingStateStickyNode>(stateNode);
- if (stickyStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer))
+ if (stickyStateNode.hasChangedProperty(ScrollingStateNode::Layer))
m_layer = stickyStateNode.layer();
if (stateNode.hasChangedProperty(ScrollingStateStickyNode::ViewportConstraints))
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (240860 => 240861)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2019-02-01 20:10:23 UTC (rev 240861)
@@ -544,19 +544,22 @@
auto* backing = layer.backing();
if (auto nodeID = backing->scrollingNodeIDForRole(ScrollCoordinationRole::ViewportConstrained))
- scrollingCoordinator->setNodeLayers(nodeID, backing->graphicsLayer());
+ scrollingCoordinator->setNodeLayers(nodeID, { backing->graphicsLayer() });
if (auto nodeID = backing->scrollingNodeIDForRole(ScrollCoordinationRole::Scrolling)) {
// FIXME: would be nice to not have to special-case the root.
+ ScrollingCoordinator::NodeLayers nodeLayers;
if (layer.isRenderViewLayer()) {
- // FIXME: Reorganize the layers and pass the scrolledContentsLayer.
- scrollingCoordinator->setNodeLayers(nodeID, m_scrollLayer.get(), nullptr, fixedRootBackgroundLayer(), clipLayer(), m_rootContentsLayer.get());
+ // FIXME: Reorganize the layers and pass the scrollContainerLayer.
+ nodeLayers = { nullptr, nullptr, m_scrollLayer.get(), fixedRootBackgroundLayer(), clipLayer(), m_rootContentsLayer.get() };
} else
- scrollingCoordinator->setNodeLayers(nodeID, backing->scrollingLayer(), backing->scrollingContentsLayer());
+ nodeLayers = { layer.backing()->graphicsLayer(), backing->scrollingLayer(), backing->scrollingContentsLayer() };
+
+ scrollingCoordinator->setNodeLayers(nodeID, nodeLayers);
}
if (auto nodeID = backing->scrollingNodeIDForRole(ScrollCoordinationRole::FrameHosting))
- scrollingCoordinator->setNodeLayers(nodeID, backing->graphicsLayer());
+ scrollingCoordinator->setNodeLayers(nodeID, { backing->graphicsLayer() });
}
void RenderLayerCompositor::didPaintBacking(RenderLayerBacking*)
@@ -3905,7 +3908,7 @@
LOG_WITH_STREAM(Compositing, stream << "Registering ViewportConstrained " << nodeType << " node " << newNodeID << " (layer " << layer.backing()->graphicsLayer()->primaryLayerID() << ") as child of " << treeState.parentNodeID.valueOr(0));
if (changes & ScrollingNodeChangeFlags::Layer)
- scrollingCoordinator->setNodeLayers(newNodeID, layer.backing()->graphicsLayer());
+ scrollingCoordinator->setNodeLayers(newNodeID, { layer.backing()->graphicsLayer() });
if (changes & ScrollingNodeChangeFlags::LayerGeometry) {
switch (nodeType) {
@@ -4009,7 +4012,7 @@
}
if (changes & ScrollingNodeChangeFlags::Layer)
- scrollingCoordinator->setNodeLayers(newNodeID, m_scrollLayer.get(), nullptr, fixedRootBackgroundLayer(), clipLayer(), m_rootContentsLayer.get());
+ scrollingCoordinator->setNodeLayers(newNodeID, { nullptr, nullptr, m_scrollLayer.get(), fixedRootBackgroundLayer(), clipLayer(), m_rootContentsLayer.get() });
if (changes & ScrollingNodeChangeFlags::LayerGeometry) {
ScrollingCoordinator::ScrollingGeometry scrollingGeometry;
@@ -4024,7 +4027,7 @@
}
if (changes & ScrollingNodeChangeFlags::Layer)
- scrollingCoordinator->setNodeLayers(newNodeID, layer.backing()->scrollingLayer(), layer.backing()->scrollingContentsLayer());
+ scrollingCoordinator->setNodeLayers(newNodeID, { layer.backing()->graphicsLayer(), layer.backing()->scrollingLayer(), layer.backing()->scrollingContentsLayer() });
if (changes & ScrollingNodeChangeFlags::LayerGeometry && treeState.parentNodeID) {
RenderLayer* scrollingAncestorLayer = m_scrollingNodeToLayerMap.get(treeState.parentNodeID.value());
@@ -4048,7 +4051,7 @@
}
if (changes & ScrollingNodeChangeFlags::Layer)
- scrollingCoordinator->setNodeLayers(newNodeID, layer.backing()->graphicsLayer());
+ scrollingCoordinator->setNodeLayers(newNodeID, { layer.backing()->graphicsLayer() });
if (changes & ScrollingNodeChangeFlags::LayerGeometry && treeState.parentNodeID) {
RenderLayer* scrollingAncestorLayer = m_scrollingNodeToLayerMap.get(treeState.parentNodeID.value());
Modified: trunk/Source/WebKit/ChangeLog (240860 => 240861)
--- trunk/Source/WebKit/ChangeLog 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebKit/ChangeLog 2019-02-01 20:10:23 UTC (rev 240861)
@@ -1,3 +1,28 @@
+2019-02-01 Antti Koivisto <an...@apple.com>
+
+ Don't use base layer() as the scroll layer in scrolling tree.
+ https://bugs.webkit.org/show_bug.cgi?id=194160
+
+ Reviewed by Simon Fraser.
+
+ * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
+ (ArgumentCoder<ScrollingStateNode>::encode):
+ (ArgumentCoder<ScrollingStateNode>::decode):
+ (ArgumentCoder<ScrollingStateScrollingNode>::encode):
+ (ArgumentCoder<ScrollingStateScrollingNode>::decode):
+ (WebKit::dump):
+ * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
+ (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
+ * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
+ (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
+ * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
+ (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
+ * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
+ (WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateBeforeChildren):
+ * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
+ (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren):
+ (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):
+
2019-02-01 Michael Catanzaro <mcatanz...@igalia.com>
[SOUP] Improve use of SoupCookiePersistentStorageType
Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp (240860 => 240861)
--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp 2019-02-01 20:10:23 UTC (rev 240861)
@@ -90,7 +90,7 @@
encoder << node.parentNodeID();
encoder << node.changedProperties();
- if (node.hasChangedProperty(ScrollingStateNode::ScrollLayer))
+ if (node.hasChangedProperty(ScrollingStateNode::Layer))
encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.layer());
}
@@ -102,7 +102,7 @@
return false;
node.setChangedProperties(changedProperties);
- if (node.hasChangedProperty(ScrollingStateNode::ScrollLayer)) {
+ if (node.hasChangedProperty(ScrollingStateNode::Layer)) {
GraphicsLayer::PlatformLayerID layerID;
if (!decoder.decode(layerID))
return false;
@@ -141,6 +141,8 @@
SCROLLING_NODE_ENCODE(ScrollingStateScrollingNode::RequestedScrollPosition, requestedScrollPosition)
SCROLLING_NODE_ENCODE(ScrollingStateScrollingNode::RequestedScrollPosition, requestedScrollPositionRepresentsProgrammaticScroll)
+ if (node.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer))
+ encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.scrollContainerLayer());
if (node.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
encoder << static_cast<GraphicsLayer::PlatformLayerID>(node.scrolledContentsLayer());
}
@@ -238,6 +240,13 @@
node.setRequestedScrollPosition(scrollPosition, representsProgrammaticScroll);
}
+ if (node.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer)) {
+ GraphicsLayer::PlatformLayerID layerID;
+ if (!decoder.decode(layerID))
+ return false;
+ node.setScrollContainerLayer(layerID);
+ }
+
if (node.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)) {
GraphicsLayer::PlatformLayerID layerID;
if (!decoder.decode(layerID))
@@ -514,6 +523,9 @@
ts.dumpProperty("requested-scroll-position-is-programatic", node.requestedScrollPositionRepresentsProgrammaticScroll());
}
+ if (!changedPropertiesOnly || node.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer))
+ ts.dumpProperty("scroll-container-layer", static_cast<GraphicsLayer::PlatformLayerID>(node.scrollContainerLayer()));
+
if (!changedPropertiesOnly || node.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
ts.dumpProperty("scrolled-contents-layer", static_cast<GraphicsLayer::PlatformLayerID>(node.scrolledContentsLayer()));
}
@@ -601,7 +613,7 @@
{
ts.dumpProperty("type", node.nodeType());
- if (!changedPropertiesOnly || node.hasChangedProperty(ScrollingStateNode::ScrollLayer))
+ if (!changedPropertiesOnly || node.hasChangedProperty(ScrollingStateNode::Layer))
ts.dumpProperty("layer", static_cast<GraphicsLayer::PlatformLayerID>(node.layer()));
switch (node.nodeType()) {
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp (240860 => 240861)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp 2019-02-01 20:10:23 UTC (rev 240861)
@@ -99,7 +99,7 @@
void RemoteScrollingCoordinatorProxy::connectStateNodeLayers(ScrollingStateTree& stateTree, const RemoteLayerTreeHost& layerTreeHost)
{
for (auto& currNode : stateTree.nodeMap().values()) {
- if (currNode->hasChangedProperty(ScrollingStateNode::ScrollLayer))
+ if (currNode->hasChangedProperty(ScrollingStateNode::Layer))
currNode->setLayer(layerTreeHost.layerForID(currNode->layer()));
switch (currNode->nodeType()) {
@@ -107,6 +107,9 @@
case ScrollingNodeType::Subframe: {
ScrollingStateFrameScrollingNode& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(*currNode);
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer))
+ scrollingStateNode.setScrollContainerLayer(layerTreeHost.layerForID(scrollingStateNode.scrollContainerLayer()));
+
if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
scrollingStateNode.setScrolledContentsLayer(layerTreeHost.layerForID(scrollingStateNode.scrolledContentsLayer()));
@@ -135,6 +138,8 @@
}
case ScrollingNodeType::Overflow: {
ScrollingStateOverflowScrollingNode& scrollingStateNode = downcast<ScrollingStateOverflowScrollingNode>(*currNode);
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer))
+ scrollingStateNode.setScrollContainerLayer(layerTreeHost.layerForID(scrollingStateNode.scrollContainerLayer()));
if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
scrollingStateNode.setScrolledContentsLayer(layerTreeHost.layerForID(scrollingStateNode.scrolledContentsLayer()));
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm (240860 => 240861)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm 2019-02-01 20:10:23 UTC (rev 240861)
@@ -50,13 +50,16 @@
void RemoteScrollingCoordinatorProxy::connectStateNodeLayers(ScrollingStateTree& stateTree, const RemoteLayerTreeHost& layerTreeHost)
{
for (auto& currNode : stateTree.nodeMap().values()) {
+ if (currNode->hasChangedProperty(ScrollingStateNode::Layer))
+ currNode->setLayer(layerTreeHost.layerForID(currNode->layer()));
+
switch (currNode->nodeType()) {
case ScrollingNodeType::Overflow: {
ScrollingStateOverflowScrollingNode& scrollingStateNode = downcast<ScrollingStateOverflowScrollingNode>(*currNode);
-
- if (scrollingStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer))
- scrollingStateNode.setLayer(layerTreeHost.layerForID(scrollingStateNode.layer()));
-
+
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer))
+ scrollingStateNode.setScrollContainerLayer(layerTreeHost.layerForID(scrollingStateNode.scrollContainerLayer()));
+
if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
scrollingStateNode.setScrolledContentsLayer(layerTreeHost.layerForID(scrollingStateNode.scrolledContentsLayer()));
break;
@@ -64,10 +67,10 @@
case ScrollingNodeType::MainFrame:
case ScrollingNodeType::Subframe: {
ScrollingStateFrameScrollingNode& scrollingStateNode = downcast<ScrollingStateFrameScrollingNode>(*currNode);
-
- if (scrollingStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer))
- scrollingStateNode.setLayer(layerTreeHost.layerForID(scrollingStateNode.layer()));
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer))
+ scrollingStateNode.setScrollContainerLayer(layerTreeHost.layerForID(scrollingStateNode.scrollContainerLayer()));
+
if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
scrollingStateNode.setScrolledContentsLayer(layerTreeHost.layerForID(scrollingStateNode.scrolledContentsLayer()));
@@ -85,8 +88,6 @@
case ScrollingNodeType::Fixed:
case ScrollingNodeType::Sticky:
case ScrollingNodeType::FrameHosting:
- if (currNode->hasChangedProperty(ScrollingStateNode::ScrollLayer))
- currNode->setLayer(layerTreeHost.layerForID(currNode->layer()));
break;
}
}
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm (240860 => 240861)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm 2019-02-01 20:10:23 UTC (rev 240861)
@@ -52,8 +52,9 @@
{
ScrollingTreeFrameScrollingNodeIOS::commitStateBeforeChildren(stateNode);
- if (stateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollLayer)) {
- if (scrollLayer() && [[scrollLayer() delegate] isKindOfClass:[UIScrollView self]])
+ // FIXME: Should be ScrollContainerLayer.
+ if (stateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)) {
+ if (scrolledContentsLayer() && [[scrolledContentsLayer() delegate] isKindOfClass:[UIScrollView self]])
m_scrollingNodeDelegate = std::make_unique<ScrollingTreeScrollingNodeDelegateIOS>(*this);
else
m_scrollingNodeDelegate = nullptr;
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm (240860 => 240861)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm 2019-02-01 20:10:23 UTC (rev 240861)
@@ -53,7 +53,7 @@
void ScrollingTreeOverflowScrollingNodeIOS::commitStateBeforeChildren(const WebCore::ScrollingStateNode& stateNode)
{
- if (stateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollLayer))
+ if (stateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer))
m_scrollingNodeDelegate->resetScrollViewDelegate();
ScrollingTreeOverflowScrollingNode::commitStateBeforeChildren(stateNode);
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm (240860 => 240861)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm 2019-02-01 19:33:21 UTC (rev 240860)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm 2019-02-01 20:10:23 UTC (rev 240861)
@@ -194,17 +194,27 @@
void ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren(const ScrollingStateScrollingNode& scrollingStateNode)
{
- if (scrollingStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer))
- m_scrollLayer = scrollingStateNode.layer();
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer)) {
+ RetainPtr<CALayer> layer;
+ layer = scrollingStateNode.scrollContainerLayer();
+ if ([[layer delegate] isKindOfClass:[UIScrollView self]])
+ m_scrollLayer = layer;
+ }
- if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
- m_scrolledContentsLayer = scrollingStateNode.scrolledContentsLayer();
+ // FIMXE: ScrollContainerLayer should always be the UIScrollView layer.
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)) {
+ RetainPtr<CALayer> layer;
+ layer = scrollingStateNode.scrolledContentsLayer();
+ if ([[layer delegate] isKindOfClass:[UIScrollView self]])
+ m_scrollLayer = layer;
+ }
}
void ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren(const ScrollingStateScrollingNode& scrollingStateNode)
{
SetForScope<bool> updatingChange(m_updatingFromStateNode, true);
- if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollLayer)
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer)
+ || scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)
|| scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::TotalContentsSize)
|| scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ReachableContentsSize)
|| scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollPosition)
@@ -213,7 +223,8 @@
UIScrollView *scrollView = (UIScrollView *)[scrollLayer() delegate];
ASSERT([scrollView isKindOfClass:[UIScrollView self]]);
- if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollLayer)) {
+ if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrollContainerLayer)
+ || scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)) {
if (!m_scrollViewDelegate)
m_scrollViewDelegate = adoptNS([[WKScrollingNodeScrollViewDelegate alloc] initWithScrollingTreeNodeDelegate:this]);