diff options
Diffstat (limited to 'fxjs')
-rw-r--r-- | fxjs/cfxjse_engine.cpp | 29 | ||||
-rw-r--r-- | fxjs/cfxjse_formcalc_context.cpp | 64 | ||||
-rw-r--r-- | fxjs/cfxjse_formcalc_context.h | 4 | ||||
-rw-r--r-- | fxjs/cfxjse_resolveprocessor.cpp | 4 | ||||
-rw-r--r-- | fxjs/cfxjse_resolveprocessor.h | 2 | ||||
-rw-r--r-- | fxjs/cjx_hostpseudomodel.cpp | 26 | ||||
-rw-r--r-- | fxjs/cjx_node.cpp | 31 | ||||
-rw-r--r-- | fxjs/cjx_object.cpp | 1 | ||||
-rw-r--r-- | fxjs/cjx_object.h | 2 |
9 files changed, 87 insertions, 76 deletions
diff --git a/fxjs/cfxjse_engine.cpp b/fxjs/cfxjse_engine.cpp index 6d990f66fb..8ed88d4fab 100644 --- a/fxjs/cfxjse_engine.cpp +++ b/fxjs/cfxjse_engine.cpp @@ -213,14 +213,15 @@ bool CFXJSE_Engine::QueryNodeByFlag(CXFA_Node* refNode, XFA_RESOLVENODE_RS resolveRs; if (ResolveObjects(refNode, propname, resolveRs, dwFlag) <= 0) return false; - if (resolveRs.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { + if (resolveRs.dwFlags == XFA_RESOLVENODE_RSTYPE_Nodes) { pValue->Assign(GetJSValueFromMap(resolveRs.objects.front())); return true; } - if (resolveRs.dwFlags == XFA_RESOVENODE_RSTYPE_Attribute) { + if (resolveRs.dwFlags == XFA_RESOLVENODE_RSTYPE_Attribute) { const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = resolveRs.pScriptAttribute; if (lpAttributeInfo) { - (resolveRs.objects.front()->*(lpAttributeInfo->lpfnCallback))( + CJX_Object* jsObject = resolveRs.objects.front()->JSObject(); + (jsObject->*(lpAttributeInfo->callback))( pValue, bSetting, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute); } } @@ -338,7 +339,8 @@ void CFXJSE_Engine::NormalPropertySetter(CFXJSE_Value* pOriginalValue, const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = XFA_GetScriptAttributeByName( pObject->GetElementType(), wsPropName.AsStringView()); if (lpAttributeInfo) { - (pObject->*(lpAttributeInfo->lpfnCallback))( + CJX_Object* jsObject = pObject->JSObject(); + (jsObject->*(lpAttributeInfo->callback))( pReturnValue, true, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute); } else { if (pObject->IsNode()) { @@ -359,7 +361,8 @@ void CFXJSE_Engine::NormalPropertySetter(CFXJSE_Value* pOriginalValue, XFA_GetScriptAttributeByName(pPropOrChild->GetElementType(), wsDefaultName.AsStringView()); if (lpAttrInfo) { - (pPropOrChild->*(lpAttrInfo->lpfnCallback))( + CJX_Node* jsObject = pPropOrChild->JSNode(); + (jsObject->*(lpAttrInfo->callback))( pReturnValue, true, (XFA_ATTRIBUTE)lpAttrInfo->eAttribute); return; } @@ -418,13 +421,15 @@ void CFXJSE_Engine::NormalMethodCall(CFXJSE_Value* pThis, CFXJSE_Engine* lpScriptContext = pObject->GetDocument()->GetScriptContext(); pObject = lpScriptContext->GetVariablesThis(pObject); + WideString wsFunName = WideString::FromUTF8(szFuncName); const XFA_METHODINFO* lpMethodInfo = GetMethodByName(pObject->GetElementType(), wsFunName.AsStringView()); if (!lpMethodInfo) return; - (pObject->*(lpMethodInfo->lpfnCallback))(&args); + CJX_Object* jsObject = pObject->JSObject(); + (jsObject->*(lpMethodInfo->callback))(&args); } bool CFXJSE_Engine::IsStrictScopeInJavaScript() { return m_pDocument->HasFlag(XFA_DOCFLAG_StrictScoping); @@ -640,18 +645,18 @@ int32_t CFXJSE_Engine::ResolveObjects(CXFA_Object* refObject, } rndFind.m_CurObject = findObjects[i++]; rndFind.m_nLevel = nLevel; - rndFind.m_dwFlag = XFA_RESOVENODE_RSTYPE_Nodes; + rndFind.m_dwFlag = XFA_RESOLVENODE_RSTYPE_Nodes; nRet = m_ResolveProcessor->Resolve(rndFind); if (nRet < 1) { continue; } - if (rndFind.m_dwFlag == XFA_RESOVENODE_RSTYPE_Attribute && + if (rndFind.m_dwFlag == XFA_RESOLVENODE_RSTYPE_Attribute && rndFind.m_pScriptAttribute && nStart < pdfium::base::checked_cast<int32_t>(wsExpression.GetLength())) { auto pValue = pdfium::MakeUnique<CFXJSE_Value>(m_pIsolate); - (rndFind.m_Objects.front() - ->*(rndFind.m_pScriptAttribute->lpfnCallback))( + CJX_Object* jsObject = rndFind.m_Objects.front()->JSObject(); + (jsObject->*(rndFind.m_pScriptAttribute->callback))( pValue.get(), false, (XFA_ATTRIBUTE)rndFind.m_pScriptAttribute->eAttribute); rndFind.m_Objects.front() = ToObject(pValue.get(), nullptr); @@ -703,7 +708,7 @@ int32_t CFXJSE_Engine::ResolveObjects(CXFA_Object* refObject, resolveNodeRS.objects.insert(resolveNodeRS.objects.end(), findObjects.begin(), findObjects.end()); } - if (rndFind.m_dwFlag == XFA_RESOVENODE_RSTYPE_Attribute) { + if (rndFind.m_dwFlag == XFA_RESOLVENODE_RSTYPE_Attribute) { resolveNodeRS.pScriptAttribute = rndFind.m_pScriptAttribute; return 1; } @@ -713,7 +718,7 @@ int32_t CFXJSE_Engine::ResolveObjects(CXFA_Object* refObject, m_ResolveProcessor->SetResultCreateNode(resolveNodeRS, rndFind.m_wsCondition); if (!bNextCreate && (dwStyles & XFA_RESOLVENODE_CreateNode)) { - resolveNodeRS.dwFlags = XFA_RESOVENODE_RSTYPE_ExistNodes; + resolveNodeRS.dwFlags = XFA_RESOLVENODE_RSTYPE_ExistNodes; } return pdfium::CollectionSize<int32_t>(resolveNodeRS.objects); } diff --git a/fxjs/cfxjse_formcalc_context.cpp b/fxjs/cfxjse_formcalc_context.cpp index ff74cb9767..c8c78f43eb 100644 --- a/fxjs/cfxjse_formcalc_context.cpp +++ b/fxjs/cfxjse_formcalc_context.cpp @@ -5193,10 +5193,10 @@ void CFXJSE_FormCalcContext::dot_accessor(CFXJSE_Value* pThis, for (int32_t i = 2; i < iLength; i++) { argAccessor->GetObjectPropertyByIdx(i, hJSObjValue.get()); - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; if (ResolveObjects(pThis, hJSObjValue.get(), szSomExp.AsStringView(), - resoveNodeRS, true, szName.IsEmpty()) > 0) { - ParseResolveResult(pThis, resoveNodeRS, hJSObjValue.get(), + resolveNodeRS, true, szName.IsEmpty()) > 0) { + ParseResolveResult(pThis, resolveNodeRS, hJSObjValue.get(), &resolveValues[i - 2], &bAttribute); iCounter += resolveValues[i - 2].size(); } @@ -5229,18 +5229,18 @@ void CFXJSE_FormCalcContext::dot_accessor(CFXJSE_Value* pThis, return; } - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; int32_t iRet = 0; ByteString bsAccessorName = args.GetUTF8String(1); if (argAccessor->IsObject() || (argAccessor->IsNull() && bsAccessorName.IsEmpty())) { iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringView(), - resoveNodeRS, true, szName.IsEmpty()); + resolveNodeRS, true, szName.IsEmpty()); } else if (!argAccessor->IsObject() && !bsAccessorName.IsEmpty() && GetObjectForName(pThis, argAccessor.get(), bsAccessorName.AsStringView())) { iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringView(), - resoveNodeRS, true, szName.IsEmpty()); + resolveNodeRS, true, szName.IsEmpty()); } if (iRet < 1) { pContext->ThrowPropertyNotInObjectException( @@ -5251,7 +5251,7 @@ void CFXJSE_FormCalcContext::dot_accessor(CFXJSE_Value* pThis, std::vector<std::unique_ptr<CFXJSE_Value>> resolveValues; bool bAttribute = false; - ParseResolveResult(pThis, resoveNodeRS, argAccessor.get(), &resolveValues, + ParseResolveResult(pThis, resolveNodeRS, argAccessor.get(), &resolveValues, &bAttribute); std::vector<std::unique_ptr<CFXJSE_Value>> values; @@ -5311,10 +5311,10 @@ void CFXJSE_FormCalcContext::dotdot_accessor(CFXJSE_Value* pThis, bool bAttribute = false; for (int32_t i = 2; i < iLength; i++) { argAccessor->GetObjectPropertyByIdx(i, hJSObjValue.get()); - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; if (ResolveObjects(pThis, hJSObjValue.get(), szSomExp.AsStringView(), - resoveNodeRS, false) > 0) { - ParseResolveResult(pThis, resoveNodeRS, hJSObjValue.get(), + resolveNodeRS, false) > 0) { + ParseResolveResult(pThis, resolveNodeRS, hJSObjValue.get(), &resolveValues[i - 2], &bAttribute); iCounter += resolveValues[i - 2].size(); } @@ -5347,18 +5347,18 @@ void CFXJSE_FormCalcContext::dotdot_accessor(CFXJSE_Value* pThis, return; } - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; int32_t iRet = 0; ByteString bsAccessorName = args.GetUTF8String(1); if (argAccessor->IsObject() || (argAccessor->IsNull() && bsAccessorName.IsEmpty())) { iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringView(), - resoveNodeRS, false); + resolveNodeRS, false); } else if (!argAccessor->IsObject() && !bsAccessorName.IsEmpty() && GetObjectForName(pThis, argAccessor.get(), bsAccessorName.AsStringView())) { iRet = ResolveObjects(pThis, argAccessor.get(), szSomExp.AsStringView(), - resoveNodeRS, false); + resolveNodeRS, false); } if (iRet < 1) { pContext->ThrowPropertyNotInObjectException( @@ -5369,7 +5369,7 @@ void CFXJSE_FormCalcContext::dotdot_accessor(CFXJSE_Value* pThis, std::vector<std::unique_ptr<CFXJSE_Value>> resolveValues; bool bAttribute = false; - ParseResolveResult(pThis, resoveNodeRS, argAccessor.get(), &resolveValues, + ParseResolveResult(pThis, resolveNodeRS, argAccessor.get(), &resolveValues, &bAttribute); std::vector<std::unique_ptr<CFXJSE_Value>> values; @@ -5785,7 +5785,8 @@ void CFXJSE_FormCalcContext::GetObjectDefaultValue( pDefaultValue->SetNull(); return; } - pNode->Script_Som_DefaultValue(pDefaultValue, false, (XFA_ATTRIBUTE)-1); + pNode->JSNode()->Script_Som_DefaultValue(pDefaultValue, false, + (XFA_ATTRIBUTE)-1); } // static @@ -5795,7 +5796,7 @@ bool CFXJSE_FormCalcContext::SetObjectDefaultValue(CFXJSE_Value* pValue, if (!pNode) return false; - pNode->Script_Som_DefaultValue(hNewValue, true, (XFA_ATTRIBUTE)-1); + pNode->JSNode()->Script_Som_DefaultValue(hNewValue, true, (XFA_ATTRIBUTE)-1); return true; } @@ -5840,28 +5841,29 @@ bool CFXJSE_FormCalcContext::GetObjectForName( return false; CFXJSE_Engine* pScriptContext = pDoc->GetScriptContext(); - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; uint32_t dwFlags = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_Parent; int32_t iRet = pScriptContext->ResolveObjects( pScriptContext->GetThisObject(), - WideString::FromUTF8(szAccessorName).AsStringView(), resoveNodeRS, + WideString::FromUTF8(szAccessorName).AsStringView(), resolveNodeRS, dwFlags); - if (iRet >= 1 && resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { + if (iRet >= 1 && resolveNodeRS.dwFlags == XFA_RESOLVENODE_RSTYPE_Nodes) { accessorValue->Assign( - pScriptContext->GetJSValueFromMap(resoveNodeRS.objects.front())); + pScriptContext->GetJSValueFromMap(resolveNodeRS.objects.front())); return true; } return false; } // static -int32_t CFXJSE_FormCalcContext::ResolveObjects(CFXJSE_Value* pThis, - CFXJSE_Value* pRefValue, - const ByteStringView& bsSomExp, - XFA_RESOLVENODE_RS& resoveNodeRS, - bool bdotAccessor, - bool bHasNoResolveName) { +int32_t CFXJSE_FormCalcContext::ResolveObjects( + CFXJSE_Value* pThis, + CFXJSE_Value* pRefValue, + const ByteStringView& bsSomExp, + XFA_RESOLVENODE_RS& resolveNodeRS, + bool bdotAccessor, + bool bHasNoResolveName) { CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument(); if (!pDoc) return -1; @@ -5898,13 +5900,13 @@ int32_t CFXJSE_FormCalcContext::ResolveObjects(CFXJSE_Value* pThis, dFlags = XFA_RESOLVENODE_AnyChild; } return pScriptContext->ResolveObjects(pNode, wsSomExpression.AsStringView(), - resoveNodeRS, dFlags); + resolveNodeRS, dFlags); } // static void CFXJSE_FormCalcContext::ParseResolveResult( CFXJSE_Value* pThis, - const XFA_RESOLVENODE_RS& resoveNodeRS, + const XFA_RESOLVENODE_RS& resolveNodeRS, CFXJSE_Value* pParentValue, std::vector<std::unique_ptr<CFXJSE_Value>>* resultValues, bool* bAttribute) { @@ -5915,10 +5917,10 @@ void CFXJSE_FormCalcContext::ParseResolveResult( CFXJSE_FormCalcContext* pContext = ToJSContext(pThis, nullptr); v8::Isolate* pIsolate = pContext->GetScriptRuntime(); - if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { + if (resolveNodeRS.dwFlags == XFA_RESOLVENODE_RSTYPE_Nodes) { *bAttribute = false; CFXJSE_Engine* pScriptContext = pContext->GetDocument()->GetScriptContext(); - for (CXFA_Object* pObject : resoveNodeRS.objects) { + for (CXFA_Object* pObject : resolveNodeRS.objects) { resultValues->push_back(pdfium::MakeUnique<CFXJSE_Value>(pIsolate)); resultValues->back()->Assign(pScriptContext->GetJSValueFromMap(pObject)); } @@ -5926,7 +5928,7 @@ void CFXJSE_FormCalcContext::ParseResolveResult( } CXFA_ValueArray objectProperties(pIsolate); - int32_t iRet = resoveNodeRS.GetAttributeResult(&objectProperties); + int32_t iRet = resolveNodeRS.GetAttributeResult(&objectProperties); *bAttribute = true; if (iRet != 0) { *bAttribute = false; diff --git a/fxjs/cfxjse_formcalc_context.h b/fxjs/cfxjse_formcalc_context.h index ec9c14b77b..ba331426df 100644 --- a/fxjs/cfxjse_formcalc_context.h +++ b/fxjs/cfxjse_formcalc_context.h @@ -395,12 +395,12 @@ class CFXJSE_FormCalcContext : public CFXJSE_HostObject { static int32_t ResolveObjects(CFXJSE_Value* pThis, CFXJSE_Value* pParentValue, const ByteStringView& bsSomExp, - XFA_RESOLVENODE_RS& resoveNodeRS, + XFA_RESOLVENODE_RS& resolveNodeRS, bool bdotAccessor = true, bool bHasNoResolveName = false); static void ParseResolveResult( CFXJSE_Value* pThis, - const XFA_RESOLVENODE_RS& resoveNodeRS, + const XFA_RESOLVENODE_RS& resolveNodeRS, CFXJSE_Value* pParentValue, std::vector<std::unique_ptr<CFXJSE_Value>>* resultValues, bool* bAttribute); diff --git a/fxjs/cfxjse_resolveprocessor.cpp b/fxjs/cfxjse_resolveprocessor.cpp index de4800119b..2ca3a44525 100644 --- a/fxjs/cfxjse_resolveprocessor.cpp +++ b/fxjs/cfxjse_resolveprocessor.cpp @@ -207,7 +207,7 @@ int32_t CFXJSE_ResolveProcessor::ResolveForAttributeRs( rnd.m_pScriptAttribute = lpScriptAttribute; rnd.m_Objects.push_back(curNode); - rnd.m_dwFlag = XFA_RESOVENODE_RSTYPE_Attribute; + rnd.m_dwFlag = XFA_RESOLVENODE_RSTYPE_Attribute; return 1; } @@ -794,6 +794,6 @@ CFXJSE_ResolveNodeData::CFXJSE_ResolveNodeData(CFXJSE_Engine* pSC) m_Objects(), m_dwStyles(XFA_RESOLVENODE_Children), m_pScriptAttribute(nullptr), - m_dwFlag(XFA_RESOVENODE_RSTYPE_Nodes) {} + m_dwFlag(XFA_RESOLVENODE_RSTYPE_Nodes) {} CFXJSE_ResolveNodeData::~CFXJSE_ResolveNodeData() {} diff --git a/fxjs/cfxjse_resolveprocessor.h b/fxjs/cfxjse_resolveprocessor.h index f376cca4c7..2961d21727 100644 --- a/fxjs/cfxjse_resolveprocessor.h +++ b/fxjs/cfxjse_resolveprocessor.h @@ -29,7 +29,7 @@ class CFXJSE_ResolveNodeData { std::vector<CXFA_Object*> m_Objects; // Not owned. uint32_t m_dwStyles; const XFA_SCRIPTATTRIBUTEINFO* m_pScriptAttribute; - XFA_RESOVENODE_RSTYPE m_dwFlag; + XFA_RESOLVENODE_RSTYPE m_dwFlag; }; class CFXJSE_ResolveProcessor { diff --git a/fxjs/cjx_hostpseudomodel.cpp b/fxjs/cjx_hostpseudomodel.cpp index b667e7a7f0..5b6fa02591 100644 --- a/fxjs/cjx_hostpseudomodel.cpp +++ b/fxjs/cjx_hostpseudomodel.cpp @@ -283,13 +283,14 @@ void CJX_HostPseudoModel::OpenList(CFXJSE_Arguments* pArguments) { uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings; - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; int32_t iRet = pScriptContext->ResolveObjects( - pObject, pValue->ToWideString().AsStringView(), resoveNodeRS, dwFlag); - if (iRet < 1 || !resoveNodeRS.objects.front()->IsNode()) + pObject, pValue->ToWideString().AsStringView(), resolveNodeRS, + dwFlag); + if (iRet < 1 || !resolveNodeRS.objects.front()->IsNode()) return; - pNode = resoveNodeRS.objects.front()->AsNode(); + pNode = resolveNodeRS.objects.front()->AsNode(); } } @@ -386,13 +387,13 @@ void CJX_HostPseudoModel::ResetData(CFXJSE_Arguments* pArguments) { uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings; - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; int32_t iRet = pScriptContext->ResolveObjects( - pObject, wsName.AsStringView(), resoveNodeRS, dwFlag); - if (iRet < 1 || !resoveNodeRS.objects.front()->IsNode()) + pObject, wsName.AsStringView(), resolveNodeRS, dwFlag); + if (iRet < 1 || !resolveNodeRS.objects.front()->IsNode()) continue; - pNode = resoveNodeRS.objects.front()->AsNode(); + pNode = resolveNodeRS.objects.front()->AsNode(); pNotify->ResetData(pNode->GetWidgetData()); } if (!pNode) @@ -450,13 +451,14 @@ void CJX_HostPseudoModel::SetFocus(CFXJSE_Arguments* pArguments) { uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings; - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; int32_t iRet = pScriptContext->ResolveObjects( - pObject, pValue->ToWideString().AsStringView(), resoveNodeRS, dwFlag); - if (iRet < 1 || !resoveNodeRS.objects.front()->IsNode()) + pObject, pValue->ToWideString().AsStringView(), resolveNodeRS, + dwFlag); + if (iRet < 1 || !resolveNodeRS.objects.front()->IsNode()) return; - pNode = resoveNodeRS.objects.front()->AsNode(); + pNode = resolveNodeRS.objects.front()->AsNode(); } } pNotify->SetFocusWidgetNode(pNode); diff --git a/fxjs/cjx_node.cpp b/fxjs/cjx_node.cpp index 945b12f868..c710d31812 100644 --- a/fxjs/cjx_node.cpp +++ b/fxjs/cjx_node.cpp @@ -450,24 +450,25 @@ void CJX_Node::Script_TreeClass_ResolveNode(CFXJSE_Arguments* pArguments) { uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Attributes | XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings; - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; int32_t iRet = pScriptContext->ResolveObjects( - refNode, wsExpression.AsStringView(), resoveNodeRS, dwFlag); + refNode, wsExpression.AsStringView(), resolveNodeRS, dwFlag); if (iRet < 1) { pArguments->GetReturnValue()->SetNull(); return; } - if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { - CXFA_Object* pObject = resoveNodeRS.objects.front(); + if (resolveNodeRS.dwFlags == XFA_RESOLVENODE_RSTYPE_Nodes) { + CXFA_Object* pObject = resolveNodeRS.objects.front(); pArguments->GetReturnValue()->Assign( pScriptContext->GetJSValueFromMap(pObject)); } else { const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = - resoveNodeRS.pScriptAttribute; + resolveNodeRS.pScriptAttribute; if (lpAttributeInfo && lpAttributeInfo->eValueType == XFA_SCRIPT_Object) { auto pValue = pdfium::MakeUnique<CFXJSE_Value>(pScriptContext->GetRuntime()); - (resoveNodeRS.objects.front()->*(lpAttributeInfo->lpfnCallback))( + CJX_Object* jsObject = resolveNodeRS.objects.front()->JSObject(); + (jsObject->*(lpAttributeInfo->callback))( pValue.get(), false, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute); pArguments->GetReturnValue()->Assign(pValue.get()); } else { @@ -503,20 +504,20 @@ void CJX_Node::ResolveNodeList(CFXJSE_Value* pValue, CFXJSE_Engine* pScriptContext = GetDocument()->GetScriptContext(); if (!pScriptContext) return; - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; if (!refNode) refNode = GetXFANode(); pScriptContext->ResolveObjects(refNode, wsExpression.AsStringView(), - resoveNodeRS, dwFlag); + resolveNodeRS, dwFlag); CXFA_ArrayNodeList* pNodeList = new CXFA_ArrayNodeList(GetDocument()); - if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { - for (CXFA_Object* pObject : resoveNodeRS.objects) { + if (resolveNodeRS.dwFlags == XFA_RESOLVENODE_RSTYPE_Nodes) { + for (CXFA_Object* pObject : resolveNodeRS.objects) { if (pObject->IsNode()) pNodeList->Append(pObject->AsNode()); } } else { CXFA_ValueArray valueArray(pScriptContext->GetRuntime()); - if (resoveNodeRS.GetAttributeResult(&valueArray) > 0) { + if (resolveNodeRS.GetAttributeResult(&valueArray) > 0) { for (CXFA_Object* pObject : valueArray.GetAttributeObject()) { if (pObject->IsNode()) pNodeList->Append(pObject->AsNode()); @@ -1268,11 +1269,11 @@ void CJX_Node::Script_Attribute_String(CFXJSE_Value* pValue, XFA_RESOLVENODE_Attributes | XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings; - XFA_RESOLVENODE_RS resoveNodeRS; + XFA_RESOLVENODE_RS resolveNodeRS; int32_t iRet = GetDocument()->GetScriptContext()->ResolveObjects( - pProtoRoot, wsSOM.AsStringView(), resoveNodeRS, dwFlag); - if (iRet > 0 && resoveNodeRS.objects.front()->IsNode()) { - pProtoNode = resoveNodeRS.objects.front()->AsNode(); + pProtoRoot, wsSOM.AsStringView(), resolveNodeRS, dwFlag); + if (iRet > 0 && resolveNodeRS.objects.front()->IsNode()) { + pProtoNode = resolveNodeRS.objects.front()->AsNode(); } } else if (!wsID.IsEmpty()) { pProtoNode = diff --git a/fxjs/cjx_object.cpp b/fxjs/cjx_object.cpp index 3efab63d48..5a334cf3cd 100644 --- a/fxjs/cjx_object.cpp +++ b/fxjs/cjx_object.cpp @@ -7,6 +7,7 @@ #include "fxjs/cjx_object.h" #include "fxjs/cfxjse_value.h" +#include "xfa/fxfa/parser/cxfa_document.h" #include "xfa/fxfa/parser/cxfa_object.h" CJX_Object::CJX_Object(CXFA_Object* obj) : object_(obj) {} diff --git a/fxjs/cjx_object.h b/fxjs/cjx_object.h index 27006f5169..e21b38ec86 100644 --- a/fxjs/cjx_object.h +++ b/fxjs/cjx_object.h @@ -10,10 +10,10 @@ #include "core/fxcrt/unowned_ptr.h" #include "core/fxcrt/widestring.h" #include "xfa/fxfa/fxfa_basic.h" -#include "xfa/fxfa/parser/cxfa_document.h" class CFXJSE_Value; class CXFA_Object; +class CXFA_Document; class CJX_Object { public: |