Title: [162747] trunk/Source/WebCore
Revision
162747
Author
simon.fra...@apple.com
Date
2014-01-24 18:32:23 -0800 (Fri, 24 Jan 2014)

Log Message

Add typesafe casts for ScrollingTreeNode classes
https://bugs.webkit.org/show_bug.cgi?id=127597

Reviewed by Tim Horton.

Add a ScrollingNodeType member to ScrollingTreeNodes and
use it for type-safe casting.

* page/scrolling/ScrollingTreeNode.cpp:
(WebCore::ScrollingTreeNode::ScrollingTreeNode):
* page/scrolling/ScrollingTreeNode.h:
(WebCore::ScrollingTreeNode::nodeType):
(WebCore::ScrollingTreeNode::scrollingNodeID):
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::ScrollingTreeScrollingNode):
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/mac/ScrollingTreeFixedNode.h:
* page/scrolling/mac/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::ScrollingTreeFixedNode):
* page/scrolling/mac/ScrollingTreeStickyNode.h:
* page/scrolling/mac/ScrollingTreeStickyNode.mm:
(WebCore::ScrollingTreeStickyNode::ScrollingTreeStickyNode):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (162746 => 162747)


--- trunk/Source/WebCore/ChangeLog	2014-01-25 02:11:39 UTC (rev 162746)
+++ trunk/Source/WebCore/ChangeLog	2014-01-25 02:32:23 UTC (rev 162747)
@@ -1,3 +1,28 @@
+2014-01-24  Simon Fraser  <simon.fra...@apple.com>
+
+        Add typesafe casts for ScrollingTreeNode classes
+        https://bugs.webkit.org/show_bug.cgi?id=127597
+
+        Reviewed by Tim Horton.
+
+        Add a ScrollingNodeType member to ScrollingTreeNodes and
+        use it for type-safe casting.
+
+        * page/scrolling/ScrollingTreeNode.cpp:
+        (WebCore::ScrollingTreeNode::ScrollingTreeNode):
+        * page/scrolling/ScrollingTreeNode.h:
+        (WebCore::ScrollingTreeNode::nodeType):
+        (WebCore::ScrollingTreeNode::scrollingNodeID):
+        * page/scrolling/ScrollingTreeScrollingNode.cpp:
+        (WebCore::ScrollingTreeScrollingNode::ScrollingTreeScrollingNode):
+        * page/scrolling/ScrollingTreeScrollingNode.h:
+        * page/scrolling/mac/ScrollingTreeFixedNode.h:
+        * page/scrolling/mac/ScrollingTreeFixedNode.mm:
+        (WebCore::ScrollingTreeFixedNode::ScrollingTreeFixedNode):
+        * page/scrolling/mac/ScrollingTreeStickyNode.h:
+        * page/scrolling/mac/ScrollingTreeStickyNode.mm:
+        (WebCore::ScrollingTreeStickyNode::ScrollingTreeStickyNode):
+
 2014-01-24  Anders Carlsson  <ander...@apple.com>
 
         Remove back/forward list related functions from Page

Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.cpp (162746 => 162747)


--- trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.cpp	2014-01-25 02:11:39 UTC (rev 162746)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.cpp	2014-01-25 02:32:23 UTC (rev 162747)
@@ -32,8 +32,9 @@
 
 namespace WebCore {
 
-ScrollingTreeNode::ScrollingTreeNode(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
+ScrollingTreeNode::ScrollingTreeNode(ScrollingTree& scrollingTree, ScrollingNodeType nodeType, ScrollingNodeID nodeID)
     : m_scrollingTree(scrollingTree)
+    , m_nodeType(nodeType)
     , m_nodeID(nodeID)
     , m_parent(0)
 {

Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h (162746 => 162747)


--- trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h	2014-01-25 02:11:39 UTC (rev 162746)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h	2014-01-25 02:32:23 UTC (rev 162747)
@@ -43,13 +43,14 @@
 public:
     virtual ~ScrollingTreeNode();
 
+    ScrollingNodeType nodeType() const { return m_nodeType; }
+    ScrollingNodeID scrollingNodeID() const { return m_nodeID; }
+
     virtual void updateBeforeChildren(const ScrollingStateNode&) = 0;
     virtual void updateAfterChildren(const ScrollingStateNode&) { }
 
     virtual void parentScrollPositionDidChange(const IntRect& viewportRect, const FloatSize& cumulativeDelta) = 0;
 
-    ScrollingNodeID scrollingNodeID() const { return m_nodeID; }
-
     ScrollingTreeNode* parent() const { return m_parent; }
     void setParent(ScrollingTreeNode* parent) { m_parent = parent; }
 
@@ -57,7 +58,7 @@
     void removeChild(ScrollingTreeNode*);
 
 protected:
-    ScrollingTreeNode(ScrollingTree&, ScrollingNodeID);
+    ScrollingTreeNode(ScrollingTree&, ScrollingNodeType, ScrollingNodeID);
     ScrollingTree& scrollingTree() const { return m_scrollingTree; }
 
     typedef Vector<OwnPtr<ScrollingTreeNode>> ScrollingTreeChildrenVector;
@@ -66,11 +67,15 @@
 private:
     ScrollingTree& m_scrollingTree;
 
-    ScrollingNodeID m_nodeID;
+    const ScrollingNodeType m_nodeType;
+    const ScrollingNodeID m_nodeID;
 
     ScrollingTreeNode* m_parent;
 };
 
+#define SCROLLING_NODE_TYPE_CASTS(ToValueTypeName, predicate) \
+    TYPE_CASTS_BASE(ToValueTypeName, ScrollingTreeNode, value, value->predicate, value.predicate)
+
 } // namespace WebCore
 
 #endif // ENABLE(ASYNC_SCROLLING)

Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp (162746 => 162747)


--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp	2014-01-25 02:11:39 UTC (rev 162746)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp	2014-01-25 02:32:23 UTC (rev 162747)
@@ -34,7 +34,7 @@
 namespace WebCore {
 
 ScrollingTreeScrollingNode::ScrollingTreeScrollingNode(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
-    : ScrollingTreeNode(scrollingTree, nodeID)
+    : ScrollingTreeNode(scrollingTree, ScrollingNode, nodeID)
     , m_frameScaleFactor(1)
     , m_headerHeight(0)
     , m_footerHeight(0)

Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h (162746 => 162747)


--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h	2014-01-25 02:11:39 UTC (rev 162746)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h	2014-01-25 02:32:23 UTC (rev 162747)
@@ -100,6 +100,8 @@
     ScrollBehaviorForFixedElements m_behaviorForFixed;
 };
 
+SCROLLING_NODE_TYPE_CASTS(ScrollingTreeScrollingNode, nodeType() == ScrollingNode);
+
 } // namespace WebCore
 
 #endif // ENABLE(ASYNC_SCROLLING)

Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h (162746 => 162747)


--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h	2014-01-25 02:11:39 UTC (rev 162746)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h	2014-01-25 02:32:23 UTC (rev 162747)
@@ -54,6 +54,8 @@
     RetainPtr<CALayer> m_layer;
 };
 
+SCROLLING_NODE_TYPE_CASTS(ScrollingTreeFixedNode, nodeType() == FixedNode);
+
 } // namespace WebCore
 
 #endif // ENABLE(ASYNC_SCROLLING)

Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm (162746 => 162747)


--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm	2014-01-25 02:11:39 UTC (rev 162746)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm	2014-01-25 02:32:23 UTC (rev 162747)
@@ -40,7 +40,7 @@
 }
 
 ScrollingTreeFixedNode::ScrollingTreeFixedNode(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
-    : ScrollingTreeNode(scrollingTree, nodeID)
+    : ScrollingTreeNode(scrollingTree, FixedNode, nodeID)
 {
 }
 

Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h (162746 => 162747)


--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h	2014-01-25 02:11:39 UTC (rev 162746)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h	2014-01-25 02:32:23 UTC (rev 162747)
@@ -54,6 +54,8 @@
     RetainPtr<CALayer> m_layer;
 };
 
+SCROLLING_NODE_TYPE_CASTS(ScrollingTreeStickyNode, nodeType() == StickyNode);
+
 } // namespace WebCore
 
 #endif // ENABLE(ASYNC_SCROLLING)

Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm (162746 => 162747)


--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm	2014-01-25 02:11:39 UTC (rev 162746)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm	2014-01-25 02:32:23 UTC (rev 162747)
@@ -40,7 +40,7 @@
 }
 
 ScrollingTreeStickyNode::ScrollingTreeStickyNode(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
-    : ScrollingTreeNode(scrollingTree, nodeID)
+    : ScrollingTreeNode(scrollingTree, StickyNode, nodeID)
 {
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to