ScrollingStateStickyNode.h [plain text]
#ifndef ScrollingStateStickyNode_h
#define ScrollingStateStickyNode_h
#if ENABLE(THREADED_SCROLLING) || USE(COORDINATED_GRAPHICS)
#include "ScrollingConstraints.h"
#include "ScrollingStateNode.h"
#include <wtf/Forward.h>
namespace WebCore {
class StickyPositionViewportConstraints;
class ScrollingStateStickyNode : public ScrollingStateNode {
public:
static PassOwnPtr<ScrollingStateStickyNode> create(ScrollingStateTree*, ScrollingNodeID);
virtual PassOwnPtr<ScrollingStateNode> clone();
virtual ~ScrollingStateStickyNode();
enum {
ViewportConstraints = NumStateNodeBits
};
void updateConstraints(const StickyPositionViewportConstraints&);
const StickyPositionViewportConstraints& viewportConstraints() const { return m_constraints; }
private:
ScrollingStateStickyNode(ScrollingStateTree*, ScrollingNodeID);
ScrollingStateStickyNode(const ScrollingStateStickyNode&);
virtual bool isStickyNode() OVERRIDE { return true; }
virtual void syncLayerPositionForViewportRect(const LayoutRect& viewportRect) OVERRIDE;
virtual void dumpProperties(TextStream&, int indent) const OVERRIDE;
StickyPositionViewportConstraints m_constraints;
};
inline ScrollingStateStickyNode* toScrollingStateStickyNode(ScrollingStateNode* node)
{
ASSERT_WITH_SECURITY_IMPLICATION(!node || node->isStickyNode());
return static_cast<ScrollingStateStickyNode*>(node);
}
void toScrollingStateStickyNode(const ScrollingStateStickyNode*);
}
#endif // ENABLE(THREADED_SCROLLING) || USE(COORDINATED_GRAPHICS)
#endif // ScrollingStateStickyNode_h