| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fxfa/parser/xfa_script_resolveprocessor.h" | 7 #include "xfa/fxfa/parser/xfa_script_resolveprocessor.h" |
| 8 | 8 |
| 9 #include "core/fxcrt/include/fx_ext.h" | 9 #include "core/fxcrt/include/fx_ext.h" |
| 10 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" | 10 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" |
| (...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 687 } | 687 } |
| 688 } | 688 } |
| 689 void CXFA_ResolveProcessor::XFA_ResolveNode_DoPredicateFilter( | 689 void CXFA_ResolveProcessor::XFA_ResolveNode_DoPredicateFilter( |
| 690 int32_t iCurIndex, | 690 int32_t iCurIndex, |
| 691 CFX_WideString wsCondition, | 691 CFX_WideString wsCondition, |
| 692 int32_t iFoundCount, | 692 int32_t iFoundCount, |
| 693 CXFA_ResolveNodesData& rnd) { | 693 CXFA_ResolveNodesData& rnd) { |
| 694 CXFA_NodeArray& findNodes = (CXFA_NodeArray&)rnd.m_Nodes; | 694 CXFA_NodeArray& findNodes = (CXFA_NodeArray&)rnd.m_Nodes; |
| 695 FXSYS_assert(iFoundCount == findNodes.GetSize()); | 695 FXSYS_assert(iFoundCount == findNodes.GetSize()); |
| 696 CFX_WideString wsExpression; | 696 CFX_WideString wsExpression; |
| 697 IXFA_ScriptContext* pContext = NULL; | |
| 698 XFA_SCRIPTLANGTYPE eLangType = XFA_SCRIPTLANGTYPE_Unkown; | 697 XFA_SCRIPTLANGTYPE eLangType = XFA_SCRIPTLANGTYPE_Unkown; |
| 699 if (wsCondition.Left(2) == FX_WSTRC(L".[") && | 698 if (wsCondition.Left(2) == FX_WSTRC(L".[") && |
| 700 wsCondition.Right(1) == FX_WSTRC(L"]")) { | 699 wsCondition.Right(1) == FX_WSTRC(L"]")) { |
| 701 eLangType = XFA_SCRIPTLANGTYPE_Formcalc; | 700 eLangType = XFA_SCRIPTLANGTYPE_Formcalc; |
| 702 } else if (wsCondition.Left(2) == FX_WSTRC(L".(") && | 701 } else if (wsCondition.Left(2) == FX_WSTRC(L".(") && |
| 703 wsCondition.Right(1) == FX_WSTRC(L")")) { | 702 wsCondition.Right(1) == FX_WSTRC(L")")) { |
| 704 eLangType = XFA_SCRIPTLANGTYPE_Javascript; | 703 eLangType = XFA_SCRIPTLANGTYPE_Javascript; |
| 705 } else { | 704 } else { |
| 706 return; | 705 return; |
| 707 } | 706 } |
| 708 pContext = rnd.m_pSC; | 707 |
| 708 CXFA_ScriptContext* pContext = rnd.m_pSC; |
| 709 wsExpression = wsCondition.Mid(2, wsCondition.GetLength() - 3); | 709 wsExpression = wsCondition.Mid(2, wsCondition.GetLength() - 3); |
| 710 for (int32_t i = iFoundCount - 1; i >= 0; i--) { | 710 for (int32_t i = iFoundCount - 1; i >= 0; i--) { |
| 711 CXFA_Object* node = findNodes[i]; | 711 CXFA_Object* node = findNodes[i]; |
| 712 FX_BOOL bRet = FALSE; | 712 FX_BOOL bRet = FALSE; |
| 713 FXJSE_HVALUE pRetValue = FXJSE_Value_Create(rnd.m_pSC->GetRuntime()); | 713 FXJSE_HVALUE pRetValue = FXJSE_Value_Create(rnd.m_pSC->GetRuntime()); |
| 714 bRet = pContext->RunScript(eLangType, wsExpression, pRetValue, node); | 714 bRet = pContext->RunScript(eLangType, wsExpression, pRetValue, node); |
| 715 if (!bRet || !FXJSE_Value_ToBoolean(pRetValue)) { | 715 if (!bRet || !FXJSE_Value_ToBoolean(pRetValue)) { |
| 716 findNodes.RemoveAt(i); | 716 findNodes.RemoveAt(i); |
| 717 } | 717 } |
| 718 FXJSE_Value_Release(pRetValue); | 718 FXJSE_Value_Release(pRetValue); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 817 if (m_pNodeHelper->XFA_CreateNode_ForCondition(wsNextCondition)) { | 817 if (m_pNodeHelper->XFA_CreateNode_ForCondition(wsNextCondition)) { |
| 818 if (m_pNodeHelper->m_eLastCreateType == XFA_ELEMENT_DataGroup) { | 818 if (m_pNodeHelper->m_eLastCreateType == XFA_ELEMENT_DataGroup) { |
| 819 iIndex = 0; | 819 iIndex = 0; |
| 820 } else { | 820 } else { |
| 821 iIndex = iCount - 1; | 821 iIndex = iCount - 1; |
| 822 } | 822 } |
| 823 } else { | 823 } else { |
| 824 iIndex = iCount - 1; | 824 iIndex = iCount - 1; |
| 825 } | 825 } |
| 826 } | 826 } |
| OLD | NEW |