Position::findParent() should take a reference
authorjhoneycutt@apple.com <jhoneycutt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Jun 2015 00:49:54 +0000 (00:49 +0000)
committerjhoneycutt@apple.com <jhoneycutt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Jun 2015 00:49:54 +0000 (00:49 +0000)
https://bugs.webkit.org/show_bug.cgi?id=146038

Reviewed by Darin Adler.

* dom/Position.cpp:
(WebCore::Position::containerNode):
(WebCore::Position::parentAnchoredEquivalent):
Pass a reference; there is already a null check.
(WebCore::Position::previous):
Add a missing null check. Code below this expects that node is non-null.
(WebCore::Position::next):
Ditto.
(WebCore::Position::atStartOfTree):
(WebCore::Position::atEndOfTree):
Pass a reference.
(WebCore::Position::findParent):
Changed to take a reference.

* dom/Position.h:
Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@185682 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/dom/Position.cpp
Source/WebCore/dom/Position.h

index 4a30c75..d462b5f 100644 (file)
@@ -1,3 +1,27 @@
+2015-06-16  Jon Honeycutt  <jhoneycutt@apple.com>
+
+        Position::findParent() should take a reference
+        https://bugs.webkit.org/show_bug.cgi?id=146038
+
+        Reviewed by Darin Adler.
+
+        * dom/Position.cpp:
+        (WebCore::Position::containerNode):
+        (WebCore::Position::parentAnchoredEquivalent):
+        Pass a reference; there is already a null check.
+        (WebCore::Position::previous):
+        Add a missing null check. Code below this expects that node is non-null.
+        (WebCore::Position::next):
+        Ditto.
+        (WebCore::Position::atStartOfTree):
+        (WebCore::Position::atEndOfTree):
+        Pass a reference.
+        (WebCore::Position::findParent):
+        Changed to take a reference.
+
+        * dom/Position.h:
+        Ditto.
+
 2015-06-17  Brent Fulgham  <bfulgham@apple.com>
 
         Overflow regions with scroll snap points are not reliably rubber banding
index ed9e248..fcc703f 100644 (file)
@@ -162,7 +162,7 @@ Node* Position::containerNode() const
         return m_anchorNode.get();
     case PositionIsBeforeAnchor:
     case PositionIsAfterAnchor:
-        return findParent(m_anchorNode.get());
+        return findParent(*m_anchorNode);
     }
     ASSERT_NOT_REACHED();
     return nullptr;
@@ -222,7 +222,7 @@ Position Position::parentAnchoredEquivalent() const
     
     // FIXME: This should only be necessary for legacy positions, but is also needed for positions before and after Tables
     if (m_offset <= 0 && (m_anchorType != PositionIsAfterAnchor && m_anchorType != PositionIsAfterChildren)) {
-        if (findParent(m_anchorNode.get()) && (editingIgnoresContent(m_anchorNode.get()) || isRenderedTable(m_anchorNode.get())))
+        if (findParent(*m_anchorNode) && (editingIgnoresContent(m_anchorNode.get()) || isRenderedTable(m_anchorNode.get())))
             return positionInParentBeforeNode(m_anchorNode.get());
         return Position(m_anchorNode.get(), 0, PositionIsOffsetInAnchor);
     }
@@ -310,6 +310,9 @@ Position Position::previous(PositionMoveType moveType) const
 
     if (anchorType() == PositionIsBeforeAnchor) {
         node = containerNode();
+        if (!node)
+            return *this;
+
         offset = computeOffsetInContainerNode();
     }
 
@@ -332,7 +335,7 @@ Position Position::previous(PositionMoveType moveType) const
         }
     }
 
-    ContainerNode* parent = findParent(node);
+    ContainerNode* parent = findParent(*node);
     if (!parent)
         return *this;
 
@@ -360,6 +363,9 @@ Position Position::next(PositionMoveType moveType) const
 
     if (anchorType() == PositionIsAfterAnchor) {
         node = containerNode();
+        if (!node)
+            return *this;
+
         offset = computeOffsetInContainerNode();
     }
 
@@ -376,7 +382,7 @@ Position Position::next(PositionMoveType moveType) const
         return createLegacyEditingPosition(node, (moveType == Character) ? uncheckedNextOffset(node, offset) : offset + 1);
     }
 
-    ContainerNode* parent = findParent(node);
+    ContainerNode* parent = findParent(*node);
     if (!parent)
         return *this;
 
@@ -478,7 +484,7 @@ bool Position::atStartOfTree() const
         return true;
 
     Node* container = containerNode();
-    if (container && findParent(container))
+    if (container && findParent(*container))
         return false;
 
     switch (m_anchorType) {
@@ -503,7 +509,7 @@ bool Position::atEndOfTree() const
         return true;
 
     Node* container = containerNode();
-    if (container && findParent(container))
+    if (container && findParent(*container))
         return false;
 
     switch (m_anchorType) {
@@ -938,9 +944,9 @@ bool Position::nodeIsUserSelectNone(Node* node)
     return node && node->renderer() && node->renderer()->style().userSelect() == SELECT_NONE;
 }
 
-ContainerNode* Position::findParent(const Node* node)
+ContainerNode* Position::findParent(const Node& node)
 {
-    return node->nonShadowBoundaryParentNode();
+    return node.nonShadowBoundaryParentNode();
 }
 
 #if ENABLE(USERSELECT_ALL)
index cb35e22..0f316da 100644 (file)
@@ -198,7 +198,7 @@ public:
     static bool nodeIsUserSelectAll(const Node*) { return false; }
     static Node* rootUserSelectAllForNode(Node*) { return 0; }
 #endif
-    static ContainerNode* findParent(const Node*);
+    static ContainerNode* findParent(const Node&);
     
     void debugPosition(const char* msg = "") const;