| 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 | 
|---|