Use more UnownedPtrs in CFXJSE_Engine.

Change-Id: If577500905f5bc5bb631718e9c87aa03ee6bee5a
Reviewed-on: https://pdfium-review.googlesource.com/41571
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fxjs/cfxjse_engine.cpp b/fxjs/cfxjse_engine.cpp
index 305e29a..eb19573 100644
--- a/fxjs/cfxjse_engine.cpp
+++ b/fxjs/cfxjse_engine.cpp
@@ -138,7 +138,7 @@
   } else {
     btScript = FX_UTF8Encode(wsScript);
   }
-  AutoRestorer<CXFA_Object*> nodeRestorer(&m_pThisObject);
+  AutoRestorer<UnownedPtr<CXFA_Object>> nodeRestorer(&m_pThisObject);
   m_pThisObject = pThisObject;
 
   CFXJSE_Value* pValue = pThisObject ? GetJSValueFromMap(pThisObject) : nullptr;
@@ -510,7 +510,7 @@
   CXFA_Node* pThisObject = pParent->GetParent();
   CFXJSE_Context* pVariablesContext =
       CreateVariablesContext(pScriptNode, pThisObject);
-  AutoRestorer<CXFA_Object*> nodeRestorer(&m_pThisObject);
+  AutoRestorer<UnownedPtr<CXFA_Object>> nodeRestorer(&m_pThisObject);
   m_pThisObject = pThisObject;
   return pVariablesContext->ExecuteScript(btScript.c_str(), hRetValue.get(),
                                           nullptr);
@@ -563,10 +563,6 @@
   }
 }
 
-CFXJSE_Class* CFXJSE_Engine::GetJseNormalClass() {
-  return m_pJsClass;
-}
-
 bool CFXJSE_Engine::ResolveObjects(CXFA_Object* refObject,
                                    const WideStringView& wsExpression,
                                    XFA_RESOLVENODE_RS* resolveNodeRS,
@@ -753,7 +749,7 @@
     return iter->second.get();
 
   auto jsValue = pdfium::MakeUnique<CFXJSE_Value>(GetIsolate());
-  jsValue->SetObject(pObject, m_pJsClass);
+  jsValue->SetObject(pObject, m_pJsClass.Get());
 
   CFXJSE_Value* pValue = jsValue.get();
   m_mapObjectToValue.insert(std::make_pair(pObject, std::move(jsValue)));
diff --git a/fxjs/cfxjse_engine.h b/fxjs/cfxjse_engine.h
index 2279eea..a766e26 100644
--- a/fxjs/cfxjse_engine.h
+++ b/fxjs/cfxjse_engine.h
@@ -67,7 +67,7 @@
                       CXFA_Node* bindNode);
   CFXJSE_Value* GetJSValueFromMap(CXFA_Object* pObject);
   void AddToCacheList(std::unique_ptr<CXFA_List> pList);
-  CXFA_Object* GetThisObject() const { return m_pThisObject; }
+  CXFA_Object* GetThisObject() const { return m_pThisObject.Get(); }
 
   int32_t GetIndexByName(CXFA_Node* refNode);
   int32_t GetIndexByClassName(CXFA_Node* refNode);
@@ -75,7 +75,7 @@
 
   void SetNodesOfRunScript(std::vector<CXFA_Node*>* pArray);
   void AddNodesOfRunScript(CXFA_Node* pNode);
-  CFXJSE_Class* GetJseNormalClass();
+  CFXJSE_Class* GetJseNormalClass() const { return m_pJsClass.Get(); }
 
   void SetRunAtType(XFA_AttributeEnum eRunAt) { m_eRunAtType = eRunAt; }
   bool IsRunAtClient() { return m_eRunAtType != XFA_AttributeEnum::Server; }
@@ -108,7 +108,7 @@
   UnownedPtr<CJS_Runtime> const m_pSubordinateRuntime;
   UnownedPtr<CXFA_Document> const m_pDocument;
   std::unique_ptr<CFXJSE_Context> m_JsContext;
-  CFXJSE_Class* m_pJsClass = nullptr;
+  UnownedPtr<CFXJSE_Class> m_pJsClass;
   CXFA_Script::Type m_eScriptType = CXFA_Script::Type::Unknown;
   std::map<CXFA_Object*, std::unique_ptr<CFXJSE_Value>> m_mapObjectToValue;
   std::map<CXFA_Object*, std::unique_ptr<CFXJSE_Context>>
@@ -117,10 +117,10 @@
   std::vector<CXFA_Node*> m_upObjectArray;
   // CacheList holds the List items so we can clean them up when we're done.
   std::vector<std::unique_ptr<CXFA_List>> m_CacheList;
-  std::vector<CXFA_Node*>* m_pScriptNodeArray = nullptr;
+  UnownedPtr<std::vector<CXFA_Node*>> m_pScriptNodeArray;
   const std::unique_ptr<CFXJSE_ResolveProcessor> m_ResolveProcessor;
   std::unique_ptr<CFXJSE_FormCalcContext> m_FM2JSContext;
-  CXFA_Object* m_pThisObject = nullptr;
+  UnownedPtr<CXFA_Object> m_pThisObject;
   XFA_AttributeEnum m_eRunAtType = XFA_AttributeEnum::Client;
 };