ScrollingTreeFrameScrollingNodeIOS.h [plain text]
#ifndef ScrollingTreeFrameScrollingNodeIOS_h
#define ScrollingTreeFrameScrollingNodeIOS_h
#if ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS)
#include "ScrollingTreeFrameScrollingNode.h"
#include <wtf/RetainPtr.h>
OBJC_CLASS CALayer;
namespace WebCore {
class ScrollingTreeFrameScrollingNodeIOS : public ScrollingTreeFrameScrollingNode {
public:
WEBCORE_EXPORT static Ref<ScrollingTreeFrameScrollingNodeIOS> create(ScrollingTree&, ScrollingNodeID);
virtual ~ScrollingTreeFrameScrollingNodeIOS();
protected:
ScrollingTreeFrameScrollingNodeIOS(ScrollingTree&, ScrollingNodeID);
virtual void updateBeforeChildren(const ScrollingStateNode&) override;
virtual void updateAfterChildren(const ScrollingStateNode&) override;
virtual void handleWheelEvent(const PlatformWheelEvent&) override { }
virtual FloatPoint scrollPosition() const override;
virtual void setScrollPositionWithoutContentEdgeConstraints(const FloatPoint&) override;
virtual void updateLayersAfterViewportChange(const FloatRect& fixedPositionRect, double scale) override;
virtual void updateLayersAfterDelegatedScroll(const FloatPoint&) override;
virtual void setScrollLayerPosition(const FloatPoint&) override;
virtual FloatPoint minimumScrollPosition() const override;
virtual FloatPoint maximumScrollPosition() const override;
private:
void updateChildNodesAfterScroll(const FloatPoint&);
CALayer *scrollLayer() const { return m_scrollLayer.get(); }
RetainPtr<CALayer> m_scrollLayer;
RetainPtr<CALayer> m_counterScrollingLayer;
RetainPtr<CALayer> m_headerLayer;
RetainPtr<CALayer> m_footerLayer;
FloatPoint m_probableMainThreadScrollPosition;
};
}
#endif // ENABLE(ASYNC_SCROLLING) && PLATFORM(IOS)
#endif // ScrollingTreeFrameScrollingNodeIOS_h