Remove CFXJSE_ResolveProcessor::SetEngine()
Pass it into constructor and make member const.
Change-Id: I814f8f0c8fea9411652f754e51b95135e74356c4
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/96110
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/xfa/cfxjse_engine.cpp b/fxjs/xfa/cfxjse_engine.cpp
index 1e190fc..6142beb 100644
--- a/fxjs/xfa/cfxjse_engine.cpp
+++ b/fxjs/xfa/cfxjse_engine.cpp
@@ -119,10 +119,8 @@
return pJSObject ? pJSObject->GetXFAObject() : nullptr;
}
-CFXJSE_Engine::CFXJSE_Engine(
- CXFA_Document* pDocument,
- CJS_Runtime* fxjs_runtime,
- std::unique_ptr<CFXJSE_ResolveProcessor> pProcessor)
+CFXJSE_Engine::CFXJSE_Engine(CXFA_Document* pDocument,
+ CJS_Runtime* fxjs_runtime)
: CFX_V8(fxjs_runtime->GetIsolate()),
m_pSubordinateRuntime(fxjs_runtime),
m_pDocument(pDocument),
@@ -130,8 +128,7 @@
&kGlobalClassDescriptor,
pDocument->GetRoot()->JSObject(),
nullptr)),
- m_ResolveProcessor(std::move(pProcessor)) {
- m_ResolveProcessor->SetEngine(this);
+ m_ResolveProcessor(std::make_unique<CFXJSE_ResolveProcessor>(this)) {
RemoveBuiltInObjs(m_JsContext.get());
m_JsContext->EnableCompatibleMode();
diff --git a/fxjs/xfa/cfxjse_engine.h b/fxjs/xfa/cfxjse_engine.h
index 8fbc599..ce8108e 100644
--- a/fxjs/xfa/cfxjse_engine.h
+++ b/fxjs/xfa/cfxjse_engine.h
@@ -106,9 +106,7 @@
ByteStringView szPropName,
bool bQueryIn);
- CFXJSE_Engine(CXFA_Document* pDocument,
- CJS_Runtime* fxjs_runtime,
- std::unique_ptr<CFXJSE_ResolveProcessor> pProcessor);
+ CFXJSE_Engine(CXFA_Document* pDocument, CJS_Runtime* fxjs_runtime);
~CFXJSE_Engine() override;
void SetEventParam(CXFA_EventParam* param) { m_eventParam = param; }
diff --git a/fxjs/xfa/cfxjse_resolveprocessor.cpp b/fxjs/xfa/cfxjse_resolveprocessor.cpp
index a945b97..20dc040 100644
--- a/fxjs/xfa/cfxjse_resolveprocessor.cpp
+++ b/fxjs/xfa/cfxjse_resolveprocessor.cpp
@@ -25,16 +25,12 @@
#include "xfa/fxfa/parser/cxfa_occur.h"
#include "xfa/fxfa/parser/xfa_utils.h"
-CFXJSE_ResolveProcessor::CFXJSE_ResolveProcessor()
- : m_pNodeHelper(std::make_unique<CFXJSE_NodeHelper>()) {}
+CFXJSE_ResolveProcessor::CFXJSE_ResolveProcessor(CFXJSE_Engine* pEngine)
+ : m_pEngine(pEngine),
+ m_pNodeHelper(std::make_unique<CFXJSE_NodeHelper>()) {}
CFXJSE_ResolveProcessor::~CFXJSE_ResolveProcessor() = default;
-void CFXJSE_ResolveProcessor::SetEngine(CFXJSE_Engine* pEngine) {
- DCHECK(!m_pEngine);
- m_pEngine = pEngine;
-}
-
bool CFXJSE_ResolveProcessor::Resolve(v8::Isolate* pIsolate, NodeData& rnd) {
if (!rnd.m_CurObject)
return false;
diff --git a/fxjs/xfa/cfxjse_resolveprocessor.h b/fxjs/xfa/cfxjse_resolveprocessor.h
index d8b076b..3ab63de 100644
--- a/fxjs/xfa/cfxjse_resolveprocessor.h
+++ b/fxjs/xfa/cfxjse_resolveprocessor.h
@@ -36,10 +36,9 @@
CFXJSE_Engine::ResolveResult m_Result;
};
- CFXJSE_ResolveProcessor();
+ explicit CFXJSE_ResolveProcessor(CFXJSE_Engine* pEngine);
~CFXJSE_ResolveProcessor();
- void SetEngine(CFXJSE_Engine* pEngine);
bool Resolve(v8::Isolate* pIsolate, NodeData& rnd);
int32_t GetFilter(WideStringView wsExpression, int32_t nStart, NodeData& rnd);
int32_t IndexForDataBind(const WideString& wsNextCondition, int32_t iCount);
@@ -72,7 +71,7 @@
NodeData* pRnd);
int32_t m_iCurStart = 0;
- UnownedPtr<CFXJSE_Engine> m_pEngine;
+ UnownedPtr<CFXJSE_Engine> const m_pEngine;
std::unique_ptr<CFXJSE_NodeHelper> const m_pNodeHelper;
};
diff --git a/xfa/fxfa/parser/cxfa_document.cpp b/xfa/fxfa/parser/cxfa_document.cpp
index f4485fe..119cb08 100644
--- a/xfa/fxfa/parser/cxfa_document.cpp
+++ b/xfa/fxfa/parser/cxfa_document.cpp
@@ -1456,8 +1456,7 @@
CFXJSE_Engine* CXFA_Document::InitScriptContext(CJS_Runtime* fxjs_runtime) {
DCHECK(!m_pScriptContext);
- m_pScriptContext = std::make_unique<CFXJSE_Engine>(
- this, fxjs_runtime, std::make_unique<CFXJSE_ResolveProcessor>());
+ m_pScriptContext = std::make_unique<CFXJSE_Engine>(this, fxjs_runtime);
return m_pScriptContext.get();
}