Viewport constrained elements should work properly with headers and footers
[WebKit-https.git] / Source / WebCore / page / scrolling / ScrollingTreeScrollingNode.h
index 4a69f50..ce7f167 100644 (file)
@@ -42,13 +42,13 @@ class ScrollingStateScrollingNode;
 
 class ScrollingTreeScrollingNode : public ScrollingTreeNode {
 public:
-    static PassOwnPtr<ScrollingTreeScrollingNode> create(ScrollingTree*);
+    static PassOwnPtr<ScrollingTreeScrollingNode> create(ScrollingTree*, ScrollingNodeID);
     virtual ~ScrollingTreeScrollingNode();
 
-    virtual void update(ScrollingStateNode*) OVERRIDE;
+    virtual void updateBeforeChildren(ScrollingStateNode*) OVERRIDE;
 
     // FIXME: We should implement this when we support ScrollingTreeScrollingNodes as children.
-    virtual void parentScrollPositionDidChange(const IntRect& /*viewportRect*/) OVERRIDE { }
+    virtual void parentScrollPositionDidChange(const IntRect& /*viewportRect*/, const FloatSize& /*cumulativeDelta*/) OVERRIDE { }
 
     virtual void handleWheelEvent(const PlatformWheelEvent&) = 0;
     virtual void setScrollPosition(const IntPoint&) = 0;
@@ -56,10 +56,10 @@ public:
     MainThreadScrollingReasons shouldUpdateScrollLayerPositionOnMainThread() const { return m_shouldUpdateScrollLayerPositionOnMainThread; }
 
 protected:
-    explicit ScrollingTreeScrollingNode(ScrollingTree*);
+    explicit ScrollingTreeScrollingNode(ScrollingTree*, ScrollingNodeID);
 
     const IntRect& viewportRect() const { return m_viewportRect; }
-    const IntSize& contentsSize() const { return m_contentsSize; }
+    const IntSize& totalContentsSize() const { return m_totalContentsSize; }
 
     float frameScaleFactor() const { return m_frameScaleFactor; }
 
@@ -73,9 +73,12 @@ protected:
 
     const IntPoint& scrollOrigin() const { return m_scrollOrigin; }
 
+    int headerHeight() const { return m_headerHeight; }
+    int footerHeight() const { return m_footerHeight; }
+
 private:
     IntRect m_viewportRect;
-    IntSize m_contentsSize;
+    IntSize m_totalContentsSize;
     IntPoint m_scrollOrigin;
     
     float m_frameScaleFactor;
@@ -90,6 +93,9 @@ private:
 
     ScrollbarMode m_horizontalScrollbarMode;
     ScrollbarMode m_verticalScrollbarMode;
+
+    int m_headerHeight;
+    int m_footerHeight;
 };
 
 } // namespace WebCore