ScrollingTreeFrameScrollingNodeIOS.h [plain text]
#pragma once
#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&, ScrollingNodeType, ScrollingNodeID);
virtual ~ScrollingTreeFrameScrollingNodeIOS();
protected:
ScrollingTreeFrameScrollingNodeIOS(ScrollingTree&, ScrollingNodeType, ScrollingNodeID);
void commitStateBeforeChildren(const ScrollingStateNode&) override;
void commitStateAfterChildren(const ScrollingStateNode&) override;
void handleWheelEvent(const PlatformWheelEvent&) override { }
FloatPoint scrollPosition() const override;
void setScrollPositionWithoutContentEdgeConstraints(const FloatPoint&) override;
void updateLayersAfterViewportChange(const FloatRect& fixedPositionRect, double scale) override;
void updateLayersAfterDelegatedScroll(const FloatPoint&) override;
void setScrollLayerPosition(const FloatPoint&, const FloatRect& layoutViewport) override;
FloatPoint minimumScrollPosition() const override;
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)