Split off CFXJSE_Engine::GetScriptObject() from GetThisObject(). Two separate methods are cleaner than passing a fixed boolean that changes the meaning of the call. Change-Id: Ie4ef4716c4c6b7ac950141a579ef443ec84a9813 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/72552 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fxjs/xfa/cfxjse_engine.cpp b/fxjs/xfa/cfxjse_engine.cpp index 77f22517..f43a777 100644 --- a/fxjs/xfa/cfxjse_engine.cpp +++ b/fxjs/xfa/cfxjse_engine.cpp
@@ -191,7 +191,7 @@ CFXJSE_Engine* lpScriptContext = pDoc->GetScriptContext(); CXFA_Node* pRefNode = ToNode(lpScriptContext->GetThisObject()); if (lpOrginalNode->IsThisProxy()) - pRefNode = ToNode(lpScriptContext->GetVariablesThis(lpOrginalNode, false)); + pRefNode = ToNode(lpScriptContext->GetVariablesThis(lpOrginalNode)); WideString wsPropName = WideString::FromUTF8(szPropName); if (lpScriptContext->QueryNodeByFlag( @@ -252,8 +252,7 @@ CXFA_Node* pRefNode = ToNode(lpScriptContext->GetThisObject()); if (pOriginalObject->IsThisProxy()) { - pRefNode = - ToNode(lpScriptContext->GetVariablesThis(pOriginalObject, false)); + pRefNode = ToNode(lpScriptContext->GetVariablesThis(pOriginalObject)); } if (lpScriptContext->QueryNodeByFlag( pRefNode, wsPropName.AsStringView(), pValue, @@ -269,7 +268,7 @@ } CXFA_Object* pScriptObject = - lpScriptContext->GetVariablesThis(pOriginalObject, true); + lpScriptContext->GetVariablesScript(pOriginalObject); if (pScriptObject && lpScriptContext->QueryVariableValue( pScriptObject->AsNode(), szPropName, pValue, true)) { return; @@ -305,7 +304,7 @@ return FXJSE_ClassPropType_None; CFXJSE_Engine* lpScriptContext = pObject->GetDocument()->GetScriptContext(); - pObject = lpScriptContext->GetVariablesThis(pObject, false); + pObject = lpScriptContext->GetVariablesThis(pObject); WideString wsPropName = WideString::FromUTF8(szPropName); if (pObject->JSObject()->HasMethod(wsPropName)) return FXJSE_ClassPropType_Method; @@ -325,8 +324,7 @@ WideString wsPropName = WideString::FromUTF8(szPropName); CFXJSE_Engine* lpScriptContext = pOriginalObject->GetDocument()->GetScriptContext(); - CXFA_Object* pObject = - lpScriptContext->GetVariablesThis(pOriginalObject, false); + CXFA_Object* pObject = lpScriptContext->GetVariablesThis(pOriginalObject); if (wsPropName.EqualsASCII("xfa")) { CFXJSE_Value* pValue = lpScriptContext->GetOrCreateJSBindingFromMap( lpScriptContext->GetDocument()->GetRoot()); @@ -353,7 +351,7 @@ return; CXFA_Object* pScriptObject = - lpScriptContext->GetVariablesThis(pOriginalObject, true); + lpScriptContext->GetVariablesScript(pOriginalObject); if (!pScriptObject) return; @@ -403,8 +401,7 @@ CFXJSE_Engine* lpScriptContext = pOriginalObject->GetDocument()->GetScriptContext(); - CXFA_Object* pObject = - lpScriptContext->GetVariablesThis(pOriginalObject, false); + CXFA_Object* pObject = lpScriptContext->GetVariablesThis(pOriginalObject); WideString wsPropName = WideString::FromUTF8(szPropName); WideStringView wsPropNameView = wsPropName.AsStringView(); Optional<XFA_SCRIPTATTRIBUTEINFO> info = @@ -442,7 +439,7 @@ } CXFA_Object* pScriptObject = - lpScriptContext->GetVariablesThis(pOriginalObject, true); + lpScriptContext->GetVariablesScript(pOriginalObject); if (pScriptObject) { lpScriptContext->QueryVariableValue(ToNode(pScriptObject), szPropName, pReturnValue, false); @@ -457,7 +454,7 @@ return FXJSE_ClassPropType_None; CFXJSE_Engine* lpScriptContext = pObject->GetDocument()->GetScriptContext(); - pObject = lpScriptContext->GetVariablesThis(pObject, false); + pObject = lpScriptContext->GetVariablesThis(pObject); XFA_Element eType = pObject->GetElementType(); WideString wsPropName = WideString::FromUTF8(szPropName); if (pObject->JSObject()->HasMethod(wsPropName)) @@ -478,7 +475,7 @@ return CJS_Result::Failure(L"no Holder() present."); CFXJSE_Engine* lpScriptContext = pObject->GetDocument()->GetScriptContext(); - pObject = lpScriptContext->GetVariablesThis(pObject, false); + pObject = lpScriptContext->GetVariablesThis(pObject); std::vector<v8::Local<v8::Value>> parameters; for (int i = 0; i < info.Length(); i++) @@ -511,13 +508,14 @@ return pResult; } -CXFA_Object* CFXJSE_Engine::GetVariablesThis(CXFA_Object* pObject, - bool bScriptNode) { +CXFA_Object* CFXJSE_Engine::GetVariablesThis(CXFA_Object* pObject) { CXFA_ThisProxy* pProxy = ToThisProxy(pObject); - if (!pProxy) - return pObject; + return pProxy ? pProxy->GetThisNode() : pObject; +} - return bScriptNode ? pProxy->GetScriptNode() : pProxy->GetThisNode(); +CXFA_Object* CFXJSE_Engine::GetVariablesScript(CXFA_Object* pObject) { + CXFA_ThisProxy* pProxy = ToThisProxy(pObject); + return pProxy ? pProxy->GetScriptNode() : pObject; } bool CFXJSE_Engine::RunVariablesScript(CXFA_Node* pScriptNode) {
diff --git a/fxjs/xfa/cfxjse_engine.h b/fxjs/xfa/cfxjse_engine.h index 8ca1d01..0f64095 100644 --- a/fxjs/xfa/cfxjse_engine.h +++ b/fxjs/xfa/cfxjse_engine.h
@@ -112,7 +112,8 @@ uint32_t dwFlag, bool bSetting); bool IsStrictScopeInJavaScript(); - CXFA_Object* GetVariablesThis(CXFA_Object* pObject, bool bScriptNode); + CXFA_Object* GetVariablesThis(CXFA_Object* pObject); + CXFA_Object* GetVariablesScript(CXFA_Object* pObject); bool QueryVariableValue(CXFA_Node* pScriptNode, ByteStringView szPropName, CFXJSE_Value* pValue,