void ScrollingCoordinatorCoordinatedGraphics::updateViewportConstrainedNode(ScrollingNodeID nodeID, const ViewportConstraints& constraints, GraphicsLayer* graphicsLayer) { ASSERT(supportsFixedPositionLayers()); ScrollingStateNode* node = m_scrollingStateTree->stateNodeForID(nodeID); if (!node) return; switch (constraints.constraintType()) { case ViewportConstraints::FixedPositionConstraint: { toCoordinatedGraphicsLayer(graphicsLayer)->setFixedToViewport(true); // FIXME : Use constraints! downcast<ScrollingStateFixedNode>(*node).setLayer(graphicsLayer); break; } case ViewportConstraints::StickyPositionConstraint: break; // FIXME : Support sticky elements. default: ASSERT_NOT_REACHED(); } }
void AsyncScrollingCoordinator::updateViewportConstrainedNode(ScrollingNodeID nodeID, const ViewportConstraints& constraints, GraphicsLayer* graphicsLayer) { ASSERT(supportsFixedPositionLayers()); ScrollingStateNode* node = m_scrollingStateTree->stateNodeForID(nodeID); if (!node) return; switch (constraints.constraintType()) { case ViewportConstraints::FixedPositionConstraint: { ScrollingStateFixedNode& fixedNode = downcast<ScrollingStateFixedNode>(*node); fixedNode.setLayer(graphicsLayer); fixedNode.updateConstraints((const FixedPositionViewportConstraints&)constraints); break; } case ViewportConstraints::StickyPositionConstraint: { ScrollingStateStickyNode& stickyNode = downcast<ScrollingStateStickyNode>(*node); stickyNode.setLayer(graphicsLayer); stickyNode.updateConstraints((const StickyPositionViewportConstraints&)constraints); break; } } }