Move CXFA_ResolveProcessor to CFXJSE_ResolveProcessor.

The resolve processor is only used by cfxjse classes, so move to live in
fxjs/.

Change-Id: I41b8c8e0a491a2b4ee04c1410cbddef63d843105
Reviewed-on: https://pdfium-review.googlesource.com/17850
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index 60b5776..626727d 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1297,6 +1297,8 @@
         "fxjs/cfxjse_formcalc_context.h",
         "fxjs/cfxjse_isolatetracker.cpp",
         "fxjs/cfxjse_isolatetracker.h",
+        "fxjs/cfxjse_resolveprocessor.cpp",
+        "fxjs/cfxjse_resolveprocessor.h",
         "fxjs/cfxjse_runtimedata.cpp",
         "fxjs/cfxjse_runtimedata.h",
         "fxjs/cfxjse_value.cpp",
@@ -1863,8 +1865,6 @@
       "xfa/fxfa/parser/cxfa_para.cpp",
       "xfa/fxfa/parser/cxfa_para.h",
       "xfa/fxfa/parser/cxfa_rectangle.h",
-      "xfa/fxfa/parser/cxfa_resolveprocessor.cpp",
-      "xfa/fxfa/parser/cxfa_resolveprocessor.h",
       "xfa/fxfa/parser/cxfa_script.cpp",
       "xfa/fxfa/parser/cxfa_script.h",
       "xfa/fxfa/parser/cxfa_simple_parser.cpp",
diff --git a/fxjs/cfxjse_engine.cpp b/fxjs/cfxjse_engine.cpp
index fb36c6d..6d990f6 100644
--- a/fxjs/cfxjse_engine.cpp
+++ b/fxjs/cfxjse_engine.cpp
@@ -13,6 +13,7 @@
 #include "core/fxcrt/fx_extension.h"
 #include "fxjs/cfxjse_arguments.h"
 #include "fxjs/cfxjse_class.h"
+#include "fxjs/cfxjse_resolveprocessor.h"
 #include "fxjs/cfxjse_value.h"
 #include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
@@ -24,7 +25,6 @@
 #include "xfa/fxfa/parser/cxfa_nodehelper.h"
 #include "xfa/fxfa/parser/cxfa_nodelist.h"
 #include "xfa/fxfa/parser/cxfa_object.h"
-#include "xfa/fxfa/parser/cxfa_resolveprocessor.h"
 #include "xfa/fxfa/parser/cxfa_thisproxy.h"
 #include "xfa/fxfa/parser/xfa_basic_data.h"
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
@@ -142,7 +142,7 @@
   m_pIsolate = pIsolate;
   DefineJsContext();
   DefineJsClass();
-  m_ResolveProcessor = pdfium::MakeUnique<CXFA_ResolveProcessor>();
+  m_ResolveProcessor = pdfium::MakeUnique<CFXJSE_ResolveProcessor>();
 }
 
 bool CFXJSE_Engine::RunScript(XFA_SCRIPTLANGTYPE eScriptType,
@@ -574,11 +574,11 @@
   m_ResolveProcessor->GetNodeHelper()->m_pCreateParent = nullptr;
   m_ResolveProcessor->GetNodeHelper()->m_iCurAllStart = -1;
 
-  CXFA_ResolveNodesData rndFind;
+  CFXJSE_ResolveNodeData rndFind(this);
   int32_t nStart = 0;
   int32_t nLevel = 0;
   int32_t nRet = -1;
-  rndFind.m_pSC = this;
+
   std::vector<CXFA_Object*> findObjects;
   findObjects.push_back(refObject ? refObject : m_pDocument->GetRoot());
   int32_t nNodes = 0;
@@ -633,7 +633,7 @@
       if (((dwStyles & XFA_RESOLVENODE_Bind) ||
            (dwStyles & XFA_RESOLVENODE_CreateNode)) &&
           nNodes > 1) {
-        CXFA_ResolveNodesData rndBind;
+        CFXJSE_ResolveNodeData rndBind(nullptr);
         m_ResolveProcessor->GetFilter(wsExpression, nStart, rndBind);
         m_ResolveProcessor->SetIndexDataBind(rndBind.m_wsCondition, i, nNodes);
         bDataBind = true;
diff --git a/fxjs/cfxjse_engine.h b/fxjs/cfxjse_engine.h
index 34383ca..f901850 100644
--- a/fxjs/cfxjse_engine.h
+++ b/fxjs/cfxjse_engine.h
@@ -19,7 +19,7 @@
 
 #define XFA_RESOLVENODE_TagName 0x0002
 
-class CXFA_ResolveProcessor;
+class CFXJSE_ResolveProcessor;
 
 class CFXJSE_Engine {
  public:
@@ -116,7 +116,7 @@
   // CacheList holds the NodeList items so we can clean them up when we're done.
   std::vector<std::unique_ptr<CXFA_NodeList>> m_CacheList;
   std::vector<CXFA_Node*>* m_pScriptNodeArray;
-  std::unique_ptr<CXFA_ResolveProcessor> m_ResolveProcessor;
+  std::unique_ptr<CFXJSE_ResolveProcessor> m_ResolveProcessor;
   std::unique_ptr<CFXJSE_FormCalcContext> m_FM2JSContext;
   CXFA_Object* m_pThisObject;
   uint32_t m_dwBuiltInInFlags;
diff --git a/xfa/fxfa/parser/cxfa_resolveprocessor.cpp b/fxjs/cfxjse_resolveprocessor.cpp
similarity index 90%
rename from xfa/fxfa/parser/cxfa_resolveprocessor.cpp
rename to fxjs/cfxjse_resolveprocessor.cpp
index 6656a52..de48001 100644
--- a/xfa/fxfa/parser/cxfa_resolveprocessor.cpp
+++ b/fxjs/cfxjse_resolveprocessor.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "xfa/fxfa/parser/cxfa_resolveprocessor.h"
+#include "fxjs/cfxjse_resolveprocessor.h"
 
 #include <algorithm>
 #include <utility>
@@ -22,12 +22,12 @@
 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
 
-CXFA_ResolveProcessor::CXFA_ResolveProcessor()
+CFXJSE_ResolveProcessor::CFXJSE_ResolveProcessor()
     : m_iCurStart(0), m_pNodeHelper(pdfium::MakeUnique<CXFA_NodeHelper>()) {}
 
-CXFA_ResolveProcessor::~CXFA_ResolveProcessor() {}
+CFXJSE_ResolveProcessor::~CFXJSE_ResolveProcessor() {}
 
-int32_t CXFA_ResolveProcessor::Resolve(CXFA_ResolveNodesData& rnd) {
+int32_t CFXJSE_ResolveProcessor::Resolve(CFXJSE_ResolveNodeData& rnd) {
   if (!rnd.m_CurObject)
     return -1;
 
@@ -86,7 +86,7 @@
   return pdfium::CollectionSize<int32_t>(rnd.m_Objects);
 }
 
-int32_t CXFA_ResolveProcessor::ResolveAnyChild(CXFA_ResolveNodesData& rnd) {
+int32_t CFXJSE_ResolveProcessor::ResolveAnyChild(CFXJSE_ResolveNodeData& rnd) {
   WideString wsName = rnd.m_wsName;
   WideString wsCondition = rnd.m_wsCondition;
   CXFA_Node* findNode = nullptr;
@@ -114,7 +114,7 @@
   return pdfium::CollectionSize<int32_t>(rnd.m_Objects);
 }
 
-int32_t CXFA_ResolveProcessor::ResolveDollar(CXFA_ResolveNodesData& rnd) {
+int32_t CFXJSE_ResolveProcessor::ResolveDollar(CFXJSE_ResolveNodeData& rnd) {
   WideString wsName = rnd.m_wsName;
   WideString wsCondition = rnd.m_wsCondition;
   int32_t iNameLen = wsName.GetLength();
@@ -140,7 +140,8 @@
   return pdfium::CollectionSize<int32_t>(rnd.m_Objects);
 }
 
-int32_t CXFA_ResolveProcessor::ResolveExcalmatory(CXFA_ResolveNodesData& rnd) {
+int32_t CFXJSE_ResolveProcessor::ResolveExcalmatory(
+    CFXJSE_ResolveNodeData& rnd) {
   if (rnd.m_nLevel > 0)
     return 0;
 
@@ -149,8 +150,7 @@
   if (!datasets)
     return 0;
 
-  CXFA_ResolveNodesData rndFind;
-  rndFind.m_pSC = rnd.m_pSC;
+  CFXJSE_ResolveNodeData rndFind(rnd.m_pSC);
   rndFind.m_CurObject = datasets;
   rndFind.m_wsName = rnd.m_wsName.Right(rnd.m_wsName.GetLength() - 1);
   rndFind.m_uHashName = static_cast<XFA_HashCode>(
@@ -164,15 +164,15 @@
   return pdfium::CollectionSize<int32_t>(rnd.m_Objects);
 }
 
-int32_t CXFA_ResolveProcessor::ResolveNumberSign(CXFA_ResolveNodesData& rnd) {
+int32_t CFXJSE_ResolveProcessor::ResolveNumberSign(
+    CFXJSE_ResolveNodeData& rnd) {
   WideString wsName = rnd.m_wsName.Right(rnd.m_wsName.GetLength() - 1);
   WideString wsCondition = rnd.m_wsCondition;
   CXFA_Node* curNode = ToNode(rnd.m_CurObject);
   if (ResolveForAttributeRs(curNode, rnd, wsName.AsStringView()))
     return 1;
 
-  CXFA_ResolveNodesData rndFind;
-  rndFind.m_pSC = rnd.m_pSC;
+  CFXJSE_ResolveNodeData rndFind(rnd.m_pSC);
   rndFind.m_nLevel = rnd.m_nLevel + 1;
   rndFind.m_dwStyles = rnd.m_dwStyles;
   rndFind.m_dwStyles |= XFA_RESOLVENODE_TagName;
@@ -196,9 +196,9 @@
   return pdfium::CollectionSize<int32_t>(rnd.m_Objects);
 }
 
-int32_t CXFA_ResolveProcessor::ResolveForAttributeRs(
+int32_t CFXJSE_ResolveProcessor::ResolveForAttributeRs(
     CXFA_Object* curNode,
-    CXFA_ResolveNodesData& rnd,
+    CFXJSE_ResolveNodeData& rnd,
     const WideStringView& strAttr) {
   const XFA_SCRIPTATTRIBUTEINFO* lpScriptAttribute =
       XFA_GetScriptAttributeByName(curNode->GetElementType(), strAttr);
@@ -211,7 +211,7 @@
   return 1;
 }
 
-int32_t CXFA_ResolveProcessor::ResolveNormal(CXFA_ResolveNodesData& rnd) {
+int32_t CFXJSE_ResolveProcessor::ResolveNormal(CFXJSE_ResolveNodeData& rnd) {
   if (rnd.m_nLevel > 32 || !rnd.m_CurObject->IsNode())
     return 0;
 
@@ -221,12 +221,13 @@
   WideString& wsName = rnd.m_wsName;
   XFA_HashCode uNameHash = rnd.m_uHashName;
   WideString& wsCondition = rnd.m_wsCondition;
-  CXFA_ResolveNodesData rndFind;
+
+  CFXJSE_ResolveNodeData rndFind(rnd.m_pSC);
   rndFind.m_wsName = rnd.m_wsName;
   rndFind.m_wsCondition = rnd.m_wsCondition;
-  rndFind.m_pSC = rnd.m_pSC;
   rndFind.m_nLevel = rnd.m_nLevel + 1;
   rndFind.m_uHashName = uNameHash;
+
   std::vector<CXFA_Node*> children;
   std::vector<CXFA_Node*> properties;
   CXFA_Node* pVariablesNode = nullptr;
@@ -472,7 +473,7 @@
   return 0;
 }
 
-int32_t CXFA_ResolveProcessor::ResolveAsterisk(CXFA_ResolveNodesData& rnd) {
+int32_t CFXJSE_ResolveProcessor::ResolveAsterisk(CFXJSE_ResolveNodeData& rnd) {
   CXFA_Node* curNode = ToNode(rnd.m_CurObject);
   std::vector<CXFA_Node*> array =
       curNode->GetNodeList(XFA_NODEFILTER_Children | XFA_NODEFILTER_Properties,
@@ -481,7 +482,7 @@
   return pdfium::CollectionSize<int32_t>(rnd.m_Objects);
 }
 
-int32_t CXFA_ResolveProcessor::ResolvePopStack(std::vector<int32_t>* stack) {
+int32_t CFXJSE_ResolveProcessor::ResolvePopStack(std::vector<int32_t>* stack) {
   if (stack->empty())
     return -1;
 
@@ -490,9 +491,9 @@
   return nType;
 }
 
-int32_t CXFA_ResolveProcessor::GetFilter(const WideStringView& wsExpression,
-                                         int32_t nStart,
-                                         CXFA_ResolveNodesData& rnd) {
+int32_t CFXJSE_ResolveProcessor::GetFilter(const WideStringView& wsExpression,
+                                           int32_t nStart,
+                                           CFXJSE_ResolveNodeData& rnd) {
   ASSERT(nStart > -1);
   int32_t iLength = wsExpression.GetLength();
   if (nStart >= iLength) {
@@ -590,10 +591,10 @@
       static_cast<XFA_HashCode>(FX_HashCode_GetW(wsName.AsStringView(), false));
   return nStart;
 }
-void CXFA_ResolveProcessor::ConditionArray(int32_t iCurIndex,
-                                           WideString wsCondition,
-                                           int32_t iFoundCount,
-                                           CXFA_ResolveNodesData& rnd) {
+void CFXJSE_ResolveProcessor::ConditionArray(int32_t iCurIndex,
+                                             WideString wsCondition,
+                                             int32_t iFoundCount,
+                                             CFXJSE_ResolveNodeData& rnd) {
   int32_t iLen = wsCondition.GetLength();
   bool bRelative = false;
   bool bAll = false;
@@ -656,10 +657,10 @@
   }
 }
 
-void CXFA_ResolveProcessor::DoPredicateFilter(int32_t iCurIndex,
-                                              WideString wsCondition,
-                                              int32_t iFoundCount,
-                                              CXFA_ResolveNodesData& rnd) {
+void CFXJSE_ResolveProcessor::DoPredicateFilter(int32_t iCurIndex,
+                                                WideString wsCondition,
+                                                int32_t iFoundCount,
+                                                CFXJSE_ResolveNodeData& rnd) {
   ASSERT(iFoundCount == pdfium::CollectionSize<int32_t>(rnd.m_Objects));
   WideString wsExpression;
   XFA_SCRIPTLANGTYPE eLangType = XFA_SCRIPTLANGTYPE_Unkown;
@@ -682,8 +683,8 @@
   }
 }
 
-void CXFA_ResolveProcessor::FilterCondition(CXFA_ResolveNodesData& rnd,
-                                            WideString wsCondition) {
+void CFXJSE_ResolveProcessor::FilterCondition(CFXJSE_ResolveNodeData& rnd,
+                                              WideString wsCondition) {
   int32_t iCurrIndex = 0;
   const std::vector<CXFA_Node*>* pArray = rnd.m_pSC->GetUpObjectArray();
   if (!pArray->empty()) {
@@ -740,8 +741,8 @@
       return;
   }
 }
-void CXFA_ResolveProcessor::SetStylesForChild(uint32_t dwParentStyles,
-                                              CXFA_ResolveNodesData& rnd) {
+void CFXJSE_ResolveProcessor::SetStylesForChild(uint32_t dwParentStyles,
+                                                CFXJSE_ResolveNodeData& rnd) {
   uint32_t dwSubStyles = XFA_RESOLVENODE_Children;
   if (dwParentStyles & XFA_RESOLVENODE_TagName) {
     dwSubStyles |= XFA_RESOLVENODE_TagName;
@@ -753,7 +754,7 @@
   rnd.m_dwStyles = dwSubStyles;
 }
 
-int32_t CXFA_ResolveProcessor::SetResultCreateNode(
+int32_t CFXJSE_ResolveProcessor::SetResultCreateNode(
     XFA_RESOLVENODE_RS& resolveNodeRS,
     WideString& wsLastCondition) {
   if (m_pNodeHelper->m_pCreateParent)
@@ -769,9 +770,9 @@
   return pdfium::CollectionSize<int32_t>(resolveNodeRS.objects);
 }
 
-void CXFA_ResolveProcessor::SetIndexDataBind(WideString& wsNextCondition,
-                                             int32_t& iIndex,
-                                             int32_t iCount) {
+void CFXJSE_ResolveProcessor::SetIndexDataBind(WideString& wsNextCondition,
+                                               int32_t& iIndex,
+                                               int32_t iCount) {
   if (m_pNodeHelper->CreateNode_ForCondition(wsNextCondition)) {
     if (m_pNodeHelper->m_eLastCreateType == XFA_Element::DataGroup) {
       iIndex = 0;
@@ -783,7 +784,7 @@
   }
 }
 
-CXFA_ResolveNodesData::CXFA_ResolveNodesData(CFXJSE_Engine* pSC)
+CFXJSE_ResolveNodeData::CFXJSE_ResolveNodeData(CFXJSE_Engine* pSC)
     : m_pSC(pSC),
       m_CurObject(nullptr),
       m_wsName(),
@@ -795,4 +796,4 @@
       m_pScriptAttribute(nullptr),
       m_dwFlag(XFA_RESOVENODE_RSTYPE_Nodes) {}
 
-CXFA_ResolveNodesData::~CXFA_ResolveNodesData() {}
+CFXJSE_ResolveNodeData::~CFXJSE_ResolveNodeData() {}
diff --git a/xfa/fxfa/parser/cxfa_resolveprocessor.h b/fxjs/cfxjse_resolveprocessor.h
similarity index 60%
rename from xfa/fxfa/parser/cxfa_resolveprocessor.h
rename to fxjs/cfxjse_resolveprocessor.h
index c12dfdc..f376cca 100644
--- a/xfa/fxfa/parser/cxfa_resolveprocessor.h
+++ b/fxjs/cfxjse_resolveprocessor.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef XFA_FXFA_PARSER_CXFA_RESOLVEPROCESSOR_H_
-#define XFA_FXFA_PARSER_CXFA_RESOLVEPROCESSOR_H_
+#ifndef FXJS_CFXJSE_RESOLVEPROCESSOR_H_
+#define FXJS_CFXJSE_RESOLVEPROCESSOR_H_
 
 #include <memory>
 #include <vector>
@@ -15,10 +15,10 @@
 class CXFA_NodeHelper;
 class CFXJSE_Engine;
 
-class CXFA_ResolveNodesData {
+class CFXJSE_ResolveNodeData {
  public:
-  explicit CXFA_ResolveNodesData(CFXJSE_Engine* pSC = nullptr);
-  ~CXFA_ResolveNodesData();
+  explicit CFXJSE_ResolveNodeData(CFXJSE_Engine* pSC);
+  ~CFXJSE_ResolveNodeData();
 
   CFXJSE_Engine* m_pSC;
   CXFA_Object* m_CurObject;
@@ -32,15 +32,15 @@
   XFA_RESOVENODE_RSTYPE m_dwFlag;
 };
 
-class CXFA_ResolveProcessor {
+class CFXJSE_ResolveProcessor {
  public:
-  CXFA_ResolveProcessor();
-  ~CXFA_ResolveProcessor();
+  CFXJSE_ResolveProcessor();
+  ~CFXJSE_ResolveProcessor();
 
-  int32_t Resolve(CXFA_ResolveNodesData& rnd);
+  int32_t Resolve(CFXJSE_ResolveNodeData& rnd);
   int32_t GetFilter(const WideStringView& wsExpression,
                     int32_t nStart,
-                    CXFA_ResolveNodesData& rnd);
+                    CFXJSE_ResolveNodeData& rnd);
   int32_t SetResultCreateNode(XFA_RESOLVENODE_RS& resolveNodeRS,
                               WideString& wsLastCondition);
   void SetIndexDataBind(WideString& wsNextCondition,
@@ -52,29 +52,29 @@
 
  private:
   int32_t ResolveForAttributeRs(CXFA_Object* curNode,
-                                CXFA_ResolveNodesData& rnd,
+                                CFXJSE_ResolveNodeData& rnd,
                                 const WideStringView& strAttr);
-  int32_t ResolveAnyChild(CXFA_ResolveNodesData& rnd);
-  int32_t ResolveDollar(CXFA_ResolveNodesData& rnd);
-  int32_t ResolveExcalmatory(CXFA_ResolveNodesData& rnd);
-  int32_t ResolveNumberSign(CXFA_ResolveNodesData& rnd);
-  int32_t ResolveAsterisk(CXFA_ResolveNodesData& rnd);
-  int32_t ResolveNormal(CXFA_ResolveNodesData& rnd);
+  int32_t ResolveAnyChild(CFXJSE_ResolveNodeData& rnd);
+  int32_t ResolveDollar(CFXJSE_ResolveNodeData& rnd);
+  int32_t ResolveExcalmatory(CFXJSE_ResolveNodeData& rnd);
+  int32_t ResolveNumberSign(CFXJSE_ResolveNodeData& rnd);
+  int32_t ResolveAsterisk(CFXJSE_ResolveNodeData& rnd);
+  int32_t ResolveNormal(CFXJSE_ResolveNodeData& rnd);
   int32_t ResolvePopStack(std::vector<int32_t>* stack);
-  void SetStylesForChild(uint32_t dwParentStyles, CXFA_ResolveNodesData& rnd);
+  void SetStylesForChild(uint32_t dwParentStyles, CFXJSE_ResolveNodeData& rnd);
 
   void ConditionArray(int32_t iCurIndex,
                       WideString wsCondition,
                       int32_t iFoundCount,
-                      CXFA_ResolveNodesData& rnd);
+                      CFXJSE_ResolveNodeData& rnd);
   void DoPredicateFilter(int32_t iCurIndex,
                          WideString wsCondition,
                          int32_t iFoundCount,
-                         CXFA_ResolveNodesData& rnd);
-  void FilterCondition(CXFA_ResolveNodesData& rnd, WideString wsCondition);
+                         CFXJSE_ResolveNodeData& rnd);
+  void FilterCondition(CFXJSE_ResolveNodeData& rnd, WideString wsCondition);
 
   int32_t m_iCurStart;
   std::unique_ptr<CXFA_NodeHelper> m_pNodeHelper;
 };
 
-#endif  // XFA_FXFA_PARSER_CXFA_RESOLVEPROCESSOR_H_
+#endif  // FXJS_CFXJSE_RESOLVEPROCESSOR_H_