Use UnownedPtr<> in cxfa_nodeiteratortemplate.h

Change-Id: I48c20a56ca25a6821bc9b51aa59c037fe2341194
Reviewed-on: https://pdfium-review.googlesource.com/36972
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h b/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h
index 214f38e..10543fd 100644
--- a/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h
+++ b/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h
@@ -7,14 +7,16 @@
 #ifndef XFA_FXFA_PARSER_CXFA_NODEITERATORTEMPLATE_H_
 #define XFA_FXFA_PARSER_CXFA_NODEITERATORTEMPLATE_H_
 
+#include "core/fxcrt/unowned_ptr.h"
+
 template <class NodeType, class TraverseStrategy>
 class CXFA_NodeIteratorTemplate {
  public:
   explicit CXFA_NodeIteratorTemplate(NodeType* pRoot)
       : m_pRoot(pRoot), m_pCurrent(pRoot) {}
 
-  NodeType* GetRoot() const { return m_pRoot; }
-  NodeType* GetCurrent() const { return m_pCurrent; }
+  NodeType* GetRoot() const { return m_pRoot.Get(); }
+  NodeType* GetCurrent() const { return m_pCurrent.Get(); }
 
   void Reset() { m_pCurrent = m_pRoot; }
   bool SetCurrent(NodeType* pNode) {
@@ -30,18 +32,18 @@
     if (!m_pRoot)
       return nullptr;
     if (!m_pCurrent) {
-      m_pCurrent = LastDescendant(m_pRoot);
-      return m_pCurrent;
+      m_pCurrent = LastDescendant(m_pRoot.Get());
+      return m_pCurrent.Get();
     }
-    NodeType* pSibling = PreviousSiblingWithinSubtree(m_pCurrent);
+    NodeType* pSibling = PreviousSiblingWithinSubtree(m_pCurrent.Get());
     if (pSibling) {
       m_pCurrent = LastDescendant(pSibling);
-      return m_pCurrent;
+      return m_pCurrent.Get();
     }
-    NodeType* pParent = ParentWithinSubtree(m_pCurrent);
+    NodeType* pParent = ParentWithinSubtree(m_pCurrent.Get());
     if (pParent) {
       m_pCurrent = pParent;
-      return m_pCurrent;
+      return pParent;
     }
     return nullptr;
   }
@@ -49,10 +51,10 @@
   NodeType* MoveToNext() {
     if (!m_pRoot || !m_pCurrent)
       return nullptr;
-    NodeType* pChild = TraverseStrategy::GetFirstChild(m_pCurrent);
+    NodeType* pChild = TraverseStrategy::GetFirstChild(m_pCurrent.Get());
     if (pChild) {
       m_pCurrent = pChild;
-      return m_pCurrent;
+      return pChild;
     }
     return SkipChildrenAndMoveToNext();
   }
@@ -60,17 +62,17 @@
   NodeType* SkipChildrenAndMoveToNext() {
     if (!m_pRoot)
       return nullptr;
-    NodeType* pNode = m_pCurrent;
+    NodeType* pNode = m_pCurrent.Get();
     while (pNode) {
       NodeType* pSibling = NextSiblingWithinSubtree(pNode);
       if (pSibling) {
         m_pCurrent = pSibling;
-        return m_pCurrent;
+        return pSibling;
       }
       pNode = ParentWithinSubtree(pNode);
     }
     m_pCurrent = nullptr;
-    return m_pCurrent;
+    return nullptr;
   }
 
  private:
@@ -122,8 +124,8 @@
     return pChild ? LastDescendant(pChild) : pNode;
   }
 
-  NodeType* m_pRoot;
-  NodeType* m_pCurrent;
+  UnownedPtr<NodeType> m_pRoot;
+  UnownedPtr<NodeType> m_pCurrent;
 };
 
 #endif  // XFA_FXFA_PARSER_CXFA_NODEITERATORTEMPLATE_H_