Use unowned ptr to Node from outside XFA node tree.

Change-Id: Idcd992224fc5411c97f3001293af83a6c581e695
Reviewed-on: https://pdfium-review.googlesource.com/36991
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/cfxjse_engine.cpp b/fxjs/cfxjse_engine.cpp
index 78b152b..9b54555 100644
--- a/fxjs/cfxjse_engine.cpp
+++ b/fxjs/cfxjse_engine.cpp
@@ -624,7 +624,7 @@
         dwStyles |= XFA_RESOLVENODE_Bind;
         findObjects.clear();
         findObjects.push_back(
-            m_ResolveProcessor->GetNodeHelper()->m_pAllStartParent);
+            m_ResolveProcessor->GetNodeHelper()->m_pAllStartParent.Get());
         continue;
       }
       break;
@@ -724,7 +724,7 @@
                   XFA_RESOLVENODE_BindNew)) {
     CXFA_NodeHelper* helper = m_ResolveProcessor->GetNodeHelper();
     if (helper->m_pCreateParent)
-      resolveNodeRS->objects.push_back(helper->m_pCreateParent);
+      resolveNodeRS->objects.push_back(helper->m_pCreateParent.Get());
     else
       helper->CreateNode_ForCondition(rndFind.m_wsCondition);
 
diff --git a/xfa/fxfa/parser/cxfa_nodehelper.cpp b/xfa/fxfa/parser/cxfa_nodehelper.cpp
index 7eddddf..e4fb866 100644
--- a/xfa/fxfa/parser/cxfa_nodehelper.cpp
+++ b/xfa/fxfa/parser/cxfa_nodehelper.cpp
@@ -17,15 +17,9 @@
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
 
-CXFA_NodeHelper::CXFA_NodeHelper()
-    : m_eLastCreateType(XFA_Element::DataValue),
-      m_pCreateParent(nullptr),
-      m_iCreateCount(0),
-      m_iCreateFlag(XFA_ResolveNode_RSType_CreateNodeOne),
-      m_iCurAllStart(-1),
-      m_pAllStartParent(nullptr) {}
+CXFA_NodeHelper::CXFA_NodeHelper() = default;
 
-CXFA_NodeHelper::~CXFA_NodeHelper() {}
+CXFA_NodeHelper::~CXFA_NodeHelper() = default;
 
 CXFA_Node* CXFA_NodeHelper::ResolveNodes_GetOneChild(CXFA_Node* parent,
                                                      const wchar_t* pwsName,
diff --git a/xfa/fxfa/parser/cxfa_nodehelper.h b/xfa/fxfa/parser/cxfa_nodehelper.h
index e13387e..b53e1f4 100644
--- a/xfa/fxfa/parser/cxfa_nodehelper.h
+++ b/xfa/fxfa/parser/cxfa_nodehelper.h
@@ -61,12 +61,12 @@
   void SetCreateNodeType(CXFA_Node* refNode);
   bool NodeIsProperty(CXFA_Node* refNode);
 
-  XFA_Element m_eLastCreateType;
-  CXFA_Node* m_pCreateParent;
-  int32_t m_iCreateCount;
-  XFA_ResolveNode_RSType m_iCreateFlag;
-  int32_t m_iCurAllStart;
-  CXFA_Node* m_pAllStartParent;
+  XFA_Element m_eLastCreateType = XFA_Element::DataValue;
+  XFA_ResolveNode_RSType m_iCreateFlag = XFA_ResolveNode_RSType_CreateNodeOne;
+  int32_t m_iCreateCount = 0;
+  int32_t m_iCurAllStart = -1;
+  UnownedPtr<CXFA_Node> m_pCreateParent;
+  UnownedPtr<CXFA_Node> m_pAllStartParent;
 };
 
 #endif  // XFA_FXFA_PARSER_CXFA_NODEHELPER_H_
diff --git a/xfa/fxfa/parser/cxfa_thisproxy.h b/xfa/fxfa/parser/cxfa_thisproxy.h
index 4bb0f5a..197a97d 100644
--- a/xfa/fxfa/parser/cxfa_thisproxy.h
+++ b/xfa/fxfa/parser/cxfa_thisproxy.h
@@ -7,21 +7,21 @@
 #ifndef XFA_FXFA_PARSER_CXFA_THISPROXY_H_
 #define XFA_FXFA_PARSER_CXFA_THISPROXY_H_
 
+#include "core/fxcrt/unowned_ptr.h"
+#include "xfa/fxfa/parser/cxfa_node.h"
 #include "xfa/fxfa/parser/cxfa_object.h"
 
-class CXFA_Node;
-
 class CXFA_ThisProxy : public CXFA_Object {
  public:
   CXFA_ThisProxy(CXFA_Node* pThisNode, CXFA_Node* pScriptNode);
   ~CXFA_ThisProxy() override;
 
-  CXFA_Node* GetThisNode() const { return m_pThisNode; }
-  CXFA_Node* GetScriptNode() const { return m_pScriptNode; }
+  CXFA_Node* GetThisNode() const { return m_pThisNode.Get(); }
+  CXFA_Node* GetScriptNode() const { return m_pScriptNode.Get(); }
 
  private:
-  CXFA_Node* m_pThisNode;
-  CXFA_Node* m_pScriptNode;
+  UnownedPtr<CXFA_Node> m_pThisNode;
+  UnownedPtr<CXFA_Node> m_pScriptNode;
 };
 
 #endif  // XFA_FXFA_PARSER_CXFA_THISPROXY_H_