| 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_object.h" | 7 #include "xfa/fxfa/parser/xfa_object.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| 11 #include "core/fxcrt/include/fx_ext.h" | 11 #include "core/fxcrt/include/fx_ext.h" |
| 12 #include "fxjse/include/cfxjse_arguments.h" | 12 #include "fxjse/include/cfxjse_arguments.h" |
| 13 #include "third_party/base/stl_util.h" | 13 #include "third_party/base/stl_util.h" |
| 14 #include "xfa/fde/xml/fde_xml_imp.h" | 14 #include "xfa/fde/xml/fde_xml_imp.h" |
| 15 #include "xfa/fgas/crt/fgas_codepage.h" | 15 #include "xfa/fgas/crt/fgas_codepage.h" |
| 16 #include "xfa/fgas/crt/fgas_system.h" | 16 #include "xfa/fgas/crt/fgas_system.h" |
| 17 #include "xfa/fxfa/app/xfa_ffnotify.h" | 17 #include "xfa/fxfa/app/xfa_ffnotify.h" |
| 18 #include "xfa/fxfa/parser/cxfa_occur.h" | 18 #include "xfa/fxfa/parser/cxfa_occur.h" |
| 19 #include "xfa/fxfa/parser/xfa_basic_imp.h" | 19 #include "xfa/fxfa/parser/xfa_basic_imp.h" |
| 20 #include "xfa/fxfa/parser/xfa_doclayout.h" | 20 #include "xfa/fxfa/parser/xfa_doclayout.h" |
| 21 #include "xfa/fxfa/parser/xfa_document.h" | 21 #include "xfa/fxfa/parser/xfa_document.h" |
| 22 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" | 22 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" |
| 23 #include "xfa/fxfa/parser/xfa_localemgr.h" | 23 #include "xfa/fxfa/parser/xfa_localemgr.h" |
| 24 #include "xfa/fxfa/parser/xfa_parser.h" | |
| 25 #include "xfa/fxfa/parser/xfa_parser_imp.h" | 24 #include "xfa/fxfa/parser/xfa_parser_imp.h" |
| 26 #include "xfa/fxfa/parser/xfa_script.h" | 25 #include "xfa/fxfa/parser/xfa_script.h" |
| 27 #include "xfa/fxfa/parser/xfa_script_imp.h" | 26 #include "xfa/fxfa/parser/xfa_script_imp.h" |
| 28 #include "xfa/fxfa/parser/xfa_utils.h" | 27 #include "xfa/fxfa/parser/xfa_utils.h" |
| 29 | 28 |
| 30 namespace { | 29 namespace { |
| 31 | 30 |
| 32 void XFA_DeleteWideString(void* pData) { | 31 void XFA_DeleteWideString(void* pData) { |
| 33 delete static_cast<CFX_WideString*>(pData); | 32 delete static_cast<CFX_WideString*>(pData); |
| 34 } | 33 } |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 CXFA_Node* pNext = pNode->m_pNext; | 128 CXFA_Node* pNext = pNode->m_pNext; |
| 130 pNode->m_pParent = nullptr; | 129 pNode->m_pParent = nullptr; |
| 131 delete pNode; | 130 delete pNode; |
| 132 pNode = pNext; | 131 pNode = pNext; |
| 133 } | 132 } |
| 134 if (m_pXMLNode && IsOwnXMLNode()) | 133 if (m_pXMLNode && IsOwnXMLNode()) |
| 135 m_pXMLNode->Release(); | 134 m_pXMLNode->Release(); |
| 136 } | 135 } |
| 137 | 136 |
| 138 CXFA_Node* CXFA_Node::Clone(FX_BOOL bRecursive) { | 137 CXFA_Node* CXFA_Node::Clone(FX_BOOL bRecursive) { |
| 139 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | 138 CXFA_Node* pClone = m_pDocument->CreateNode(m_ePacket, m_elementType); |
| 140 CXFA_Node* pClone = pFactory->CreateNode(m_ePacket, m_elementType); | |
| 141 if (!pClone) | 139 if (!pClone) |
| 142 return nullptr; | 140 return nullptr; |
| 143 | 141 |
| 144 MergeAllData(pClone); | 142 MergeAllData(pClone); |
| 145 pClone->UpdateNameHash(); | 143 pClone->UpdateNameHash(); |
| 146 if (IsNeedSavingXMLNode()) { | 144 if (IsNeedSavingXMLNode()) { |
| 147 CFDE_XMLNode* pCloneXML = nullptr; | 145 CFDE_XMLNode* pCloneXML = nullptr; |
| 148 if (IsAttributeInXML()) { | 146 if (IsAttributeInXML()) { |
| 149 CFX_WideString wsName; | 147 CFX_WideString wsName; |
| 150 GetAttribute(XFA_ATTRIBUTE_Name, wsName, FALSE); | 148 GetAttribute(XFA_ATTRIBUTE_Name, wsName, FALSE); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 pChild = pChild->m_pNext; | 286 pChild = pChild->m_pNext; |
| 289 } | 287 } |
| 290 if (bFilterOneOfProperties && nodes.GetSize() < 1) { | 288 if (bFilterOneOfProperties && nodes.GetSize() < 1) { |
| 291 int32_t iProperties = 0; | 289 int32_t iProperties = 0; |
| 292 const XFA_PROPERTY* pProperty = | 290 const XFA_PROPERTY* pProperty = |
| 293 XFA_GetElementProperties(GetElementType(), iProperties); | 291 XFA_GetElementProperties(GetElementType(), iProperties); |
| 294 if (!pProperty || iProperties < 1) | 292 if (!pProperty || iProperties < 1) |
| 295 return 0; | 293 return 0; |
| 296 for (int32_t i = 0; i < iProperties; i++) { | 294 for (int32_t i = 0; i < iProperties; i++) { |
| 297 if (pProperty[i].uFlags & XFA_PROPERTYFLAG_DefaultOneOf) { | 295 if (pProperty[i].uFlags & XFA_PROPERTYFLAG_DefaultOneOf) { |
| 298 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | |
| 299 const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(GetPacketID()); | 296 const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(GetPacketID()); |
| 300 CXFA_Node* pNewNode = | 297 CXFA_Node* pNewNode = |
| 301 pFactory->CreateNode(pPacket, pProperty[i].eName); | 298 m_pDocument->CreateNode(pPacket, pProperty[i].eName); |
| 302 if (!pNewNode) | 299 if (!pNewNode) |
| 303 break; | 300 break; |
| 304 InsertChild(pNewNode, nullptr); | 301 InsertChild(pNewNode, nullptr); |
| 305 pNewNode->SetFlag(XFA_NodeFlag_Initialized, true); | 302 pNewNode->SetFlag(XFA_NodeFlag_Initialized, true); |
| 306 nodes.Add(pNewNode); | 303 nodes.Add(pNewNode); |
| 307 break; | 304 break; |
| 308 } | 305 } |
| 309 } | 306 } |
| 310 } | 307 } |
| 311 } | 308 } |
| 312 return nodes.GetSize(); | 309 return nodes.GetSize(); |
| 313 } | 310 } |
| 314 | 311 |
| 315 CXFA_Node* CXFA_Node::CreateSamePacketNode(XFA_Element eType, | 312 CXFA_Node* CXFA_Node::CreateSamePacketNode(XFA_Element eType, |
| 316 uint32_t dwFlags) { | 313 uint32_t dwFlags) { |
| 317 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | 314 CXFA_Node* pNode = m_pDocument->CreateNode(m_ePacket, eType); |
| 318 CXFA_Node* pNode = pFactory->CreateNode(m_ePacket, eType); | |
| 319 pNode->SetFlag(dwFlags, true); | 315 pNode->SetFlag(dwFlags, true); |
| 320 return pNode; | 316 return pNode; |
| 321 } | 317 } |
| 322 | 318 |
| 323 CXFA_Node* CXFA_Node::CloneTemplateToForm(FX_BOOL bRecursive) { | 319 CXFA_Node* CXFA_Node::CloneTemplateToForm(FX_BOOL bRecursive) { |
| 324 ASSERT(m_ePacket == XFA_XDPPACKET_Template); | 320 ASSERT(m_ePacket == XFA_XDPPACKET_Template); |
| 325 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | 321 CXFA_Node* pClone = |
| 326 CXFA_Node* pClone = pFactory->CreateNode(XFA_XDPPACKET_Form, m_elementType); | 322 m_pDocument->CreateNode(XFA_XDPPACKET_Form, m_elementType); |
| 327 if (!pClone) | 323 if (!pClone) |
| 328 return nullptr; | 324 return nullptr; |
| 329 | 325 |
| 330 pClone->SetTemplateNode(this); | 326 pClone->SetTemplateNode(this); |
| 331 pClone->UpdateNameHash(); | 327 pClone->UpdateNameHash(); |
| 332 pClone->SetXMLMappingNode(GetXMLMappingNode()); | 328 pClone->SetXMLMappingNode(GetXMLMappingNode()); |
| 333 if (bRecursive) { | 329 if (bRecursive) { |
| 334 for (CXFA_Node* pChild = GetNodeItem(XFA_NODEITEM_FirstChild); pChild; | 330 for (CXFA_Node* pChild = GetNodeItem(XFA_NODEITEM_FirstChild); pChild; |
| 335 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 331 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 336 pClone->InsertChild(pChild->CloneTemplateToForm(bRecursive)); | 332 pClone->InsertChild(pChild->CloneTemplateToForm(bRecursive)); |
| (...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 931 bool bIgnoreRoot = true; | 927 bool bIgnoreRoot = true; |
| 932 bool bOverwrite = 0; | 928 bool bOverwrite = 0; |
| 933 wsExpression = | 929 wsExpression = |
| 934 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); | 930 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 935 if (wsExpression.IsEmpty()) | 931 if (wsExpression.IsEmpty()) |
| 936 return; | 932 return; |
| 937 if (iLength >= 2) | 933 if (iLength >= 2) |
| 938 bIgnoreRoot = !!pArguments->GetInt32(1); | 934 bIgnoreRoot = !!pArguments->GetInt32(1); |
| 939 if (iLength >= 3) | 935 if (iLength >= 3) |
| 940 bOverwrite = !!pArguments->GetInt32(2); | 936 bOverwrite = !!pArguments->GetInt32(2); |
| 941 std::unique_ptr<IXFA_Parser, ReleaseDeleter<IXFA_Parser>> pParser( | 937 std::unique_ptr<CXFA_SimpleParser> pParser( |
| 942 IXFA_Parser::Create(m_pDocument)); | 938 new CXFA_SimpleParser(m_pDocument, false)); |
| 943 if (!pParser) | 939 if (!pParser) |
| 944 return; | 940 return; |
| 945 CFDE_XMLNode* pXMLNode = nullptr; | 941 CFDE_XMLNode* pXMLNode = nullptr; |
| 946 int32_t iParserStatus = | 942 int32_t iParserStatus = |
| 947 pParser->ParseXMLData(wsExpression, pXMLNode, nullptr); | 943 pParser->ParseXMLData(wsExpression, pXMLNode, nullptr); |
| 948 if (iParserStatus != XFA_PARSESTATUS_Done || !pXMLNode) | 944 if (iParserStatus != XFA_PARSESTATUS_Done || !pXMLNode) |
| 949 return; | 945 return; |
| 950 if (bIgnoreRoot && | 946 if (bIgnoreRoot && |
| 951 (pXMLNode->GetType() != FDE_XMLNODE_Element || | 947 (pXMLNode->GetType() != FDE_XMLNODE_Element || |
| 952 XFA_RecognizeRichText(static_cast<CFDE_XMLElement*>(pXMLNode)))) { | 948 XFA_RecognizeRichText(static_cast<CFDE_XMLElement*>(pXMLNode)))) { |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1258 } | 1254 } |
| 1259 } | 1255 } |
| 1260 | 1256 |
| 1261 void CXFA_Node::Script_Attribute_SendAttributeChangeMessage( | 1257 void CXFA_Node::Script_Attribute_SendAttributeChangeMessage( |
| 1262 XFA_ATTRIBUTE eAttribute, | 1258 XFA_ATTRIBUTE eAttribute, |
| 1263 FX_BOOL bScriptModify) { | 1259 FX_BOOL bScriptModify) { |
| 1264 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); | 1260 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); |
| 1265 if (!pLayoutPro) | 1261 if (!pLayoutPro) |
| 1266 return; | 1262 return; |
| 1267 | 1263 |
| 1268 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 1264 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 1269 if (!pNotify) | 1265 if (!pNotify) |
| 1270 return; | 1266 return; |
| 1271 | 1267 |
| 1272 uint32_t dwPacket = GetPacketID(); | 1268 uint32_t dwPacket = GetPacketID(); |
| 1273 if (!(dwPacket & XFA_XDPPACKET_Form)) { | 1269 if (!(dwPacket & XFA_XDPPACKET_Form)) { |
| 1274 pNotify->OnValueChanged(this, eAttribute, this, this); | 1270 pNotify->OnValueChanged(this, eAttribute, this, this); |
| 1275 return; | 1271 return; |
| 1276 } | 1272 } |
| 1277 | 1273 |
| 1278 bool bNeedFindContainer = false; | 1274 bool bNeedFindContainer = false; |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1534 case XFA_SOM_FormatMessage: | 1530 case XFA_SOM_FormatMessage: |
| 1535 validate.SetFormatMessageText(pValue->ToWideString()); | 1531 validate.SetFormatMessageText(pValue->ToWideString()); |
| 1536 break; | 1532 break; |
| 1537 case XFA_SOM_MandatoryMessage: | 1533 case XFA_SOM_MandatoryMessage: |
| 1538 validate.SetNullMessageText(pValue->ToWideString()); | 1534 validate.SetNullMessageText(pValue->ToWideString()); |
| 1539 break; | 1535 break; |
| 1540 default: | 1536 default: |
| 1541 break; | 1537 break; |
| 1542 } | 1538 } |
| 1543 if (!bNew) { | 1539 if (!bNew) { |
| 1544 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 1540 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 1545 if (!pNotify) { | 1541 if (!pNotify) { |
| 1546 return; | 1542 return; |
| 1547 } | 1543 } |
| 1548 pNotify->AddCalcValidate(this); | 1544 pNotify->AddCalcValidate(this); |
| 1549 } | 1545 } |
| 1550 } else { | 1546 } else { |
| 1551 CFX_WideString wsMessage; | 1547 CFX_WideString wsMessage; |
| 1552 switch (iMessageType) { | 1548 switch (iMessageType) { |
| 1553 case XFA_SOM_ValidationMessage: | 1549 case XFA_SOM_ValidationMessage: |
| 1554 validate.GetScriptMessageText(wsMessage); | 1550 validate.GetScriptMessageText(wsMessage); |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2098 pArguments->GetReturnValue()->SetBoolean( | 2094 pArguments->GetReturnValue()->SetBoolean( |
| 2099 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); | 2095 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); |
| 2100 } | 2096 } |
| 2101 } else { | 2097 } else { |
| 2102 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execEvent"); | 2098 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execEvent"); |
| 2103 } | 2099 } |
| 2104 } | 2100 } |
| 2105 void CXFA_Node::Script_Field_ExecInitialize(CFXJSE_Arguments* pArguments) { | 2101 void CXFA_Node::Script_Field_ExecInitialize(CFXJSE_Arguments* pArguments) { |
| 2106 int32_t argc = pArguments->GetLength(); | 2102 int32_t argc = pArguments->GetLength(); |
| 2107 if (argc == 0) { | 2103 if (argc == 0) { |
| 2108 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2104 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2109 if (!pNotify) { | 2105 if (!pNotify) { |
| 2110 return; | 2106 return; |
| 2111 } | 2107 } |
| 2112 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize, FALSE, FALSE); | 2108 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize, FALSE, FALSE); |
| 2113 } else { | 2109 } else { |
| 2114 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execInitialize"); | 2110 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execInitialize"); |
| 2115 } | 2111 } |
| 2116 } | 2112 } |
| 2117 void CXFA_Node::Script_Field_DeleteItem(CFXJSE_Arguments* pArguments) { | 2113 void CXFA_Node::Script_Field_DeleteItem(CFXJSE_Arguments* pArguments) { |
| 2118 int32_t iLength = pArguments->GetLength(); | 2114 int32_t iLength = pArguments->GetLength(); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2185 } | 2181 } |
| 2186 int32_t iIndex = pArguments->GetInt32(0); | 2182 int32_t iIndex = pArguments->GetInt32(0); |
| 2187 FX_BOOL bValue = pWidgetData->GetItemState(iIndex); | 2183 FX_BOOL bValue = pWidgetData->GetItemState(iIndex); |
| 2188 CFXJSE_Value* pValue = pArguments->GetReturnValue(); | 2184 CFXJSE_Value* pValue = pArguments->GetReturnValue(); |
| 2189 if (pValue) | 2185 if (pValue) |
| 2190 pValue->SetBoolean(bValue); | 2186 pValue->SetBoolean(bValue); |
| 2191 } | 2187 } |
| 2192 void CXFA_Node::Script_Field_ExecCalculate(CFXJSE_Arguments* pArguments) { | 2188 void CXFA_Node::Script_Field_ExecCalculate(CFXJSE_Arguments* pArguments) { |
| 2193 int32_t argc = pArguments->GetLength(); | 2189 int32_t argc = pArguments->GetLength(); |
| 2194 if (argc == 0) { | 2190 if (argc == 0) { |
| 2195 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2191 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2196 if (!pNotify) { | 2192 if (!pNotify) { |
| 2197 return; | 2193 return; |
| 2198 } | 2194 } |
| 2199 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate, FALSE, FALSE); | 2195 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate, FALSE, FALSE); |
| 2200 } else { | 2196 } else { |
| 2201 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execCalculate"); | 2197 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execCalculate"); |
| 2202 } | 2198 } |
| 2203 } | 2199 } |
| 2204 void CXFA_Node::Script_Field_SetItems(CFXJSE_Arguments* pArguments) {} | 2200 void CXFA_Node::Script_Field_SetItems(CFXJSE_Arguments* pArguments) {} |
| 2205 void CXFA_Node::Script_Field_GetDisplayItem(CFXJSE_Arguments* pArguments) { | 2201 void CXFA_Node::Script_Field_GetDisplayItem(CFXJSE_Arguments* pArguments) { |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2263 } | 2259 } |
| 2264 if (iLength >= 2) { | 2260 if (iLength >= 2) { |
| 2265 CFX_ByteString bsValue = pArguments->GetUTF8String(1); | 2261 CFX_ByteString bsValue = pArguments->GetUTF8String(1); |
| 2266 wsValue = CFX_WideString::FromUTF8(bsValue.AsStringC()); | 2262 wsValue = CFX_WideString::FromUTF8(bsValue.AsStringC()); |
| 2267 } | 2263 } |
| 2268 pWidgetData->InsertItem(wsLabel, wsValue, -1, TRUE); | 2264 pWidgetData->InsertItem(wsLabel, wsValue, -1, TRUE); |
| 2269 } | 2265 } |
| 2270 void CXFA_Node::Script_Field_ExecValidate(CFXJSE_Arguments* pArguments) { | 2266 void CXFA_Node::Script_Field_ExecValidate(CFXJSE_Arguments* pArguments) { |
| 2271 int32_t argc = pArguments->GetLength(); | 2267 int32_t argc = pArguments->GetLength(); |
| 2272 if (argc == 0) { | 2268 if (argc == 0) { |
| 2273 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2269 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2274 if (!pNotify) { | 2270 if (!pNotify) { |
| 2275 pArguments->GetReturnValue()->SetBoolean(FALSE); | 2271 pArguments->GetReturnValue()->SetBoolean(FALSE); |
| 2276 } else { | 2272 } else { |
| 2277 int32_t iRet = | 2273 int32_t iRet = |
| 2278 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate, FALSE, FALSE); | 2274 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate, FALSE, FALSE); |
| 2279 pArguments->GetReturnValue()->SetBoolean( | 2275 pArguments->GetReturnValue()->SetBoolean( |
| 2280 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); | 2276 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); |
| 2281 } | 2277 } |
| 2282 } else { | 2278 } else { |
| 2283 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execValidate"); | 2279 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execValidate"); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2352 pArguments->GetReturnValue()->SetNull(); | 2348 pArguments->GetReturnValue()->SetNull(); |
| 2353 return; | 2349 return; |
| 2354 } | 2350 } |
| 2355 pArguments->GetReturnValue()->Assign( | 2351 pArguments->GetReturnValue()->Assign( |
| 2356 m_pDocument->GetScriptContext()->GetJSValueFromMap(pReturnNode)); | 2352 m_pDocument->GetScriptContext()->GetJSValueFromMap(pReturnNode)); |
| 2357 } | 2353 } |
| 2358 | 2354 |
| 2359 void CXFA_Node::Script_ExclGroup_ExecInitialize(CFXJSE_Arguments* pArguments) { | 2355 void CXFA_Node::Script_ExclGroup_ExecInitialize(CFXJSE_Arguments* pArguments) { |
| 2360 int32_t argc = pArguments->GetLength(); | 2356 int32_t argc = pArguments->GetLength(); |
| 2361 if (argc == 0) { | 2357 if (argc == 0) { |
| 2362 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2358 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2363 if (!pNotify) { | 2359 if (!pNotify) { |
| 2364 return; | 2360 return; |
| 2365 } | 2361 } |
| 2366 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize); | 2362 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize); |
| 2367 } else { | 2363 } else { |
| 2368 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execInitialize"); | 2364 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execInitialize"); |
| 2369 } | 2365 } |
| 2370 } | 2366 } |
| 2371 void CXFA_Node::Script_ExclGroup_ExecCalculate(CFXJSE_Arguments* pArguments) { | 2367 void CXFA_Node::Script_ExclGroup_ExecCalculate(CFXJSE_Arguments* pArguments) { |
| 2372 int32_t argc = pArguments->GetLength(); | 2368 int32_t argc = pArguments->GetLength(); |
| 2373 if (argc == 0) { | 2369 if (argc == 0) { |
| 2374 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2370 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2375 if (!pNotify) { | 2371 if (!pNotify) { |
| 2376 return; | 2372 return; |
| 2377 } | 2373 } |
| 2378 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); | 2374 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); |
| 2379 } else { | 2375 } else { |
| 2380 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execCalculate"); | 2376 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execCalculate"); |
| 2381 } | 2377 } |
| 2382 } | 2378 } |
| 2383 void CXFA_Node::Script_ExclGroup_ExecValidate(CFXJSE_Arguments* pArguments) { | 2379 void CXFA_Node::Script_ExclGroup_ExecValidate(CFXJSE_Arguments* pArguments) { |
| 2384 int32_t argc = pArguments->GetLength(); | 2380 int32_t argc = pArguments->GetLength(); |
| 2385 if (argc == 0) { | 2381 if (argc == 0) { |
| 2386 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2382 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2387 if (!pNotify) { | 2383 if (!pNotify) { |
| 2388 pArguments->GetReturnValue()->SetBoolean(FALSE); | 2384 pArguments->GetReturnValue()->SetBoolean(FALSE); |
| 2389 } else { | 2385 } else { |
| 2390 int32_t iRet = pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); | 2386 int32_t iRet = pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); |
| 2391 pArguments->GetReturnValue()->SetBoolean( | 2387 pArguments->GetReturnValue()->SetBoolean( |
| 2392 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); | 2388 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); |
| 2393 } | 2389 } |
| 2394 } else { | 2390 } else { |
| 2395 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execValidate"); | 2391 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execValidate"); |
| 2396 } | 2392 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2438 CXFA_Node* pManagerNode = nullptr; | 2434 CXFA_Node* pManagerNode = nullptr; |
| 2439 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; | 2435 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; |
| 2440 pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { | 2436 pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { |
| 2441 if (pNode->GetElementType() == XFA_Element::InstanceManager) { | 2437 if (pNode->GetElementType() == XFA_Element::InstanceManager) { |
| 2442 pManagerNode = pNode; | 2438 pManagerNode = pNode; |
| 2443 break; | 2439 break; |
| 2444 } | 2440 } |
| 2445 } | 2441 } |
| 2446 if (pManagerNode) { | 2442 if (pManagerNode) { |
| 2447 pManagerNode->InstanceManager_MoveInstance(iTo, iFrom); | 2443 pManagerNode->InstanceManager_MoveInstance(iTo, iFrom); |
| 2448 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2444 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2449 if (!pNotify) { | 2445 if (!pNotify) { |
| 2450 return; | 2446 return; |
| 2451 } | 2447 } |
| 2452 CXFA_Node* pToInstance = | 2448 CXFA_Node* pToInstance = |
| 2453 XFA_ScriptInstanceManager_GetItem(pManagerNode, iTo); | 2449 XFA_ScriptInstanceManager_GetItem(pManagerNode, iTo); |
| 2454 if (pToInstance && | 2450 if (pToInstance && |
| 2455 pToInstance->GetElementType() == XFA_Element::Subform) { | 2451 pToInstance->GetElementType() == XFA_Element::Subform) { |
| 2456 pNotify->RunSubformIndexChange(pToInstance); | 2452 pNotify->RunSubformIndexChange(pToInstance); |
| 2457 } | 2453 } |
| 2458 CXFA_Node* pFromInstance = | 2454 CXFA_Node* pFromInstance = |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2513 execSingleEventByName( | 2509 execSingleEventByName( |
| 2514 CFX_WideString::FromUTF8(eventString.AsStringC()).AsStringC(), | 2510 CFX_WideString::FromUTF8(eventString.AsStringC()).AsStringC(), |
| 2515 XFA_Element::Subform); | 2511 XFA_Element::Subform); |
| 2516 } else { | 2512 } else { |
| 2517 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execEvent"); | 2513 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execEvent"); |
| 2518 } | 2514 } |
| 2519 } | 2515 } |
| 2520 void CXFA_Node::Script_Subform_ExecInitialize(CFXJSE_Arguments* pArguments) { | 2516 void CXFA_Node::Script_Subform_ExecInitialize(CFXJSE_Arguments* pArguments) { |
| 2521 int32_t argc = pArguments->GetLength(); | 2517 int32_t argc = pArguments->GetLength(); |
| 2522 if (argc == 0) { | 2518 if (argc == 0) { |
| 2523 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2519 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2524 if (!pNotify) { | 2520 if (!pNotify) { |
| 2525 return; | 2521 return; |
| 2526 } | 2522 } |
| 2527 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize); | 2523 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize); |
| 2528 } else { | 2524 } else { |
| 2529 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execInitialize"); | 2525 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execInitialize"); |
| 2530 } | 2526 } |
| 2531 } | 2527 } |
| 2532 void CXFA_Node::Script_Subform_ExecCalculate(CFXJSE_Arguments* pArguments) { | 2528 void CXFA_Node::Script_Subform_ExecCalculate(CFXJSE_Arguments* pArguments) { |
| 2533 int32_t argc = pArguments->GetLength(); | 2529 int32_t argc = pArguments->GetLength(); |
| 2534 if (argc == 0) { | 2530 if (argc == 0) { |
| 2535 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2531 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2536 if (!pNotify) { | 2532 if (!pNotify) { |
| 2537 return; | 2533 return; |
| 2538 } | 2534 } |
| 2539 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); | 2535 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); |
| 2540 } else { | 2536 } else { |
| 2541 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execCalculate"); | 2537 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execCalculate"); |
| 2542 } | 2538 } |
| 2543 } | 2539 } |
| 2544 void CXFA_Node::Script_Subform_ExecValidate(CFXJSE_Arguments* pArguments) { | 2540 void CXFA_Node::Script_Subform_ExecValidate(CFXJSE_Arguments* pArguments) { |
| 2545 int32_t argc = pArguments->GetLength(); | 2541 int32_t argc = pArguments->GetLength(); |
| 2546 if (argc == 0) { | 2542 if (argc == 0) { |
| 2547 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2543 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 2548 if (!pNotify) { | 2544 if (!pNotify) { |
| 2549 pArguments->GetReturnValue()->SetBoolean(FALSE); | 2545 pArguments->GetReturnValue()->SetBoolean(FALSE); |
| 2550 } else { | 2546 } else { |
| 2551 int32_t iRet = pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); | 2547 int32_t iRet = pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); |
| 2552 pArguments->GetReturnValue()->SetBoolean( | 2548 pArguments->GetReturnValue()->SetBoolean( |
| 2553 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); | 2549 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); |
| 2554 } | 2550 } |
| 2555 } else { | 2551 } else { |
| 2556 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execValidate"); | 2552 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execValidate"); |
| 2557 } | 2553 } |
| (...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2999 void CXFA_Node::Script_InstanceManager_MoveInstance( | 2995 void CXFA_Node::Script_InstanceManager_MoveInstance( |
| 3000 CFXJSE_Arguments* pArguments) { | 2996 CFXJSE_Arguments* pArguments) { |
| 3001 int32_t argc = pArguments->GetLength(); | 2997 int32_t argc = pArguments->GetLength(); |
| 3002 if (argc != 2) { | 2998 if (argc != 2) { |
| 3003 pArguments->GetReturnValue()->SetUndefined(); | 2999 pArguments->GetReturnValue()->SetUndefined(); |
| 3004 return; | 3000 return; |
| 3005 } | 3001 } |
| 3006 int32_t iFrom = pArguments->GetInt32(0); | 3002 int32_t iFrom = pArguments->GetInt32(0); |
| 3007 int32_t iTo = pArguments->GetInt32(1); | 3003 int32_t iTo = pArguments->GetInt32(1); |
| 3008 InstanceManager_MoveInstance(iTo, iFrom); | 3004 InstanceManager_MoveInstance(iTo, iFrom); |
| 3009 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 3005 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 3010 if (!pNotify) { | 3006 if (!pNotify) { |
| 3011 return; | 3007 return; |
| 3012 } | 3008 } |
| 3013 CXFA_Node* pToInstance = XFA_ScriptInstanceManager_GetItem(this, iTo); | 3009 CXFA_Node* pToInstance = XFA_ScriptInstanceManager_GetItem(this, iTo); |
| 3014 if (pToInstance && pToInstance->GetElementType() == XFA_Element::Subform) { | 3010 if (pToInstance && pToInstance->GetElementType() == XFA_Element::Subform) { |
| 3015 pNotify->RunSubformIndexChange(pToInstance); | 3011 pNotify->RunSubformIndexChange(pToInstance); |
| 3016 } | 3012 } |
| 3017 CXFA_Node* pFromInstance = XFA_ScriptInstanceManager_GetItem(this, iFrom); | 3013 CXFA_Node* pFromInstance = XFA_ScriptInstanceManager_GetItem(this, iFrom); |
| 3018 if (pFromInstance && | 3014 if (pFromInstance && |
| 3019 pFromInstance->GetElementType() == XFA_Element::Subform) { | 3015 pFromInstance->GetElementType() == XFA_Element::Subform) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 3034 return; | 3030 return; |
| 3035 } | 3031 } |
| 3036 CXFA_Occur nodeOccur(GetOccurNode()); | 3032 CXFA_Occur nodeOccur(GetOccurNode()); |
| 3037 int32_t iMin = nodeOccur.GetMin(); | 3033 int32_t iMin = nodeOccur.GetMin(); |
| 3038 if (iCount - 1 < iMin) { | 3034 if (iCount - 1 < iMin) { |
| 3039 ThrowException(XFA_IDS_VIOLATE_BOUNDARY, L"min"); | 3035 ThrowException(XFA_IDS_VIOLATE_BOUNDARY, L"min"); |
| 3040 return; | 3036 return; |
| 3041 } | 3037 } |
| 3042 CXFA_Node* pRemoveInstance = XFA_ScriptInstanceManager_GetItem(this, iIndex); | 3038 CXFA_Node* pRemoveInstance = XFA_ScriptInstanceManager_GetItem(this, iIndex); |
| 3043 XFA_ScriptInstanceManager_RemoveItem(this, pRemoveInstance); | 3039 XFA_ScriptInstanceManager_RemoveItem(this, pRemoveInstance); |
| 3044 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 3040 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 3045 if (pNotify) { | 3041 if (pNotify) { |
| 3046 for (int32_t i = iIndex; i < iCount - 1; i++) { | 3042 for (int32_t i = iIndex; i < iCount - 1; i++) { |
| 3047 CXFA_Node* pSubformInstance = XFA_ScriptInstanceManager_GetItem(this, i); | 3043 CXFA_Node* pSubformInstance = XFA_ScriptInstanceManager_GetItem(this, i); |
| 3048 if (pSubformInstance && | 3044 if (pSubformInstance && |
| 3049 pSubformInstance->GetElementType() == XFA_Element::Subform) { | 3045 pSubformInstance->GetElementType() == XFA_Element::Subform) { |
| 3050 pNotify->RunSubformIndexChange(pSubformInstance); | 3046 pNotify->RunSubformIndexChange(pSubformInstance); |
| 3051 } | 3047 } |
| 3052 } | 3048 } |
| 3053 } | 3049 } |
| 3054 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); | 3050 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 3085 if (iMax >= 0 && iCount >= iMax) { | 3081 if (iMax >= 0 && iCount >= iMax) { |
| 3086 ThrowException(XFA_IDS_VIOLATE_BOUNDARY, L"max"); | 3082 ThrowException(XFA_IDS_VIOLATE_BOUNDARY, L"max"); |
| 3087 return; | 3083 return; |
| 3088 } | 3084 } |
| 3089 CXFA_Node* pNewInstance = | 3085 CXFA_Node* pNewInstance = |
| 3090 XFA_ScriptInstanceManager_CreateInstance(this, fFlags); | 3086 XFA_ScriptInstanceManager_CreateInstance(this, fFlags); |
| 3091 XFA_ScriptInstanceManager_InsertItem(this, pNewInstance, iCount, iCount, | 3087 XFA_ScriptInstanceManager_InsertItem(this, pNewInstance, iCount, iCount, |
| 3092 FALSE); | 3088 FALSE); |
| 3093 pArguments->GetReturnValue()->Assign( | 3089 pArguments->GetReturnValue()->Assign( |
| 3094 m_pDocument->GetScriptContext()->GetJSValueFromMap(pNewInstance)); | 3090 m_pDocument->GetScriptContext()->GetJSValueFromMap(pNewInstance)); |
| 3095 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 3091 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 3096 if (!pNotify) { | 3092 if (!pNotify) { |
| 3097 return; | 3093 return; |
| 3098 } | 3094 } |
| 3099 pNotify->RunNodeInitialize(pNewInstance); | 3095 pNotify->RunNodeInitialize(pNewInstance); |
| 3100 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); | 3096 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); |
| 3101 if (!pLayoutPro) { | 3097 if (!pLayoutPro) { |
| 3102 return; | 3098 return; |
| 3103 } | 3099 } |
| 3104 pLayoutPro->AddChangedContainer( | 3100 pLayoutPro->AddChangedContainer( |
| 3105 ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); | 3101 ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3126 if (iMax >= 0 && iCount >= iMax) { | 3122 if (iMax >= 0 && iCount >= iMax) { |
| 3127 ThrowException(XFA_IDS_VIOLATE_BOUNDARY, L"max"); | 3123 ThrowException(XFA_IDS_VIOLATE_BOUNDARY, L"max"); |
| 3128 return; | 3124 return; |
| 3129 } | 3125 } |
| 3130 CXFA_Node* pNewInstance = | 3126 CXFA_Node* pNewInstance = |
| 3131 XFA_ScriptInstanceManager_CreateInstance(this, bBind); | 3127 XFA_ScriptInstanceManager_CreateInstance(this, bBind); |
| 3132 XFA_ScriptInstanceManager_InsertItem(this, pNewInstance, iIndex, iCount, | 3128 XFA_ScriptInstanceManager_InsertItem(this, pNewInstance, iIndex, iCount, |
| 3133 TRUE); | 3129 TRUE); |
| 3134 pArguments->GetReturnValue()->Assign( | 3130 pArguments->GetReturnValue()->Assign( |
| 3135 m_pDocument->GetScriptContext()->GetJSValueFromMap(pNewInstance)); | 3131 m_pDocument->GetScriptContext()->GetJSValueFromMap(pNewInstance)); |
| 3136 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 3132 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 3137 if (!pNotify) { | 3133 if (!pNotify) { |
| 3138 return; | 3134 return; |
| 3139 } | 3135 } |
| 3140 pNotify->RunNodeInitialize(pNewInstance); | 3136 pNotify->RunNodeInitialize(pNewInstance); |
| 3141 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); | 3137 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); |
| 3142 if (!pLayoutPro) { | 3138 if (!pLayoutPro) { |
| 3143 return; | 3139 return; |
| 3144 } | 3140 } |
| 3145 pLayoutPro->AddChangedContainer( | 3141 pLayoutPro->AddChangedContainer( |
| 3146 ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); | 3142 ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3187 iCount--; | 3183 iCount--; |
| 3188 } | 3184 } |
| 3189 } | 3185 } |
| 3190 } else if (iDesired > iCount) { | 3186 } else if (iDesired > iCount) { |
| 3191 while (iCount < iDesired) { | 3187 while (iCount < iDesired) { |
| 3192 CXFA_Node* pNewInstance = | 3188 CXFA_Node* pNewInstance = |
| 3193 XFA_ScriptInstanceManager_CreateInstance(this, TRUE); | 3189 XFA_ScriptInstanceManager_CreateInstance(this, TRUE); |
| 3194 XFA_ScriptInstanceManager_InsertItem(this, pNewInstance, iCount, iCount, | 3190 XFA_ScriptInstanceManager_InsertItem(this, pNewInstance, iCount, iCount, |
| 3195 FALSE); | 3191 FALSE); |
| 3196 iCount++; | 3192 iCount++; |
| 3197 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 3193 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 3198 if (!pNotify) { | 3194 if (!pNotify) { |
| 3199 return 0; | 3195 return 0; |
| 3200 } | 3196 } |
| 3201 pNotify->RunNodeInitialize(pNewInstance); | 3197 pNotify->RunNodeInitialize(pNewInstance); |
| 3202 } | 3198 } |
| 3203 } | 3199 } |
| 3204 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); | 3200 CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); |
| 3205 if (pLayoutPro) { | 3201 if (pLayoutPro) { |
| 3206 pLayoutPro->AddChangedContainer( | 3202 pLayoutPro->AddChangedContainer( |
| 3207 ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); | 3203 ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Form))); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3279 int32_t argc = pArguments->GetLength(); | 3275 int32_t argc = pArguments->GetLength(); |
| 3280 if (argc == 0) { | 3276 if (argc == 0) { |
| 3281 m_pDocument->DoDataRemerge(TRUE); | 3277 m_pDocument->DoDataRemerge(TRUE); |
| 3282 } else { | 3278 } else { |
| 3283 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"remerge"); | 3279 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"remerge"); |
| 3284 } | 3280 } |
| 3285 } | 3281 } |
| 3286 void CXFA_Node::Script_Form_ExecInitialize(CFXJSE_Arguments* pArguments) { | 3282 void CXFA_Node::Script_Form_ExecInitialize(CFXJSE_Arguments* pArguments) { |
| 3287 int32_t argc = pArguments->GetLength(); | 3283 int32_t argc = pArguments->GetLength(); |
| 3288 if (argc == 0) { | 3284 if (argc == 0) { |
| 3289 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 3285 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 3290 if (!pNotify) { | 3286 if (!pNotify) { |
| 3291 return; | 3287 return; |
| 3292 } | 3288 } |
| 3293 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize); | 3289 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Initialize); |
| 3294 } else { | 3290 } else { |
| 3295 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execInitialize"); | 3291 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execInitialize"); |
| 3296 } | 3292 } |
| 3297 } | 3293 } |
| 3298 void CXFA_Node::Script_Form_Recalculate(CFXJSE_Arguments* pArguments) { | 3294 void CXFA_Node::Script_Form_Recalculate(CFXJSE_Arguments* pArguments) { |
| 3299 CXFA_EventParam* pEventParam = | 3295 CXFA_EventParam* pEventParam = |
| 3300 m_pDocument->GetScriptContext()->GetEventParam(); | 3296 m_pDocument->GetScriptContext()->GetEventParam(); |
| 3301 if (pEventParam->m_eType == XFA_EVENT_Calculate || | 3297 if (pEventParam->m_eType == XFA_EVENT_Calculate || |
| 3302 pEventParam->m_eType == XFA_EVENT_InitCalculate) { | 3298 pEventParam->m_eType == XFA_EVENT_InitCalculate) { |
| 3303 return; | 3299 return; |
| 3304 } | 3300 } |
| 3305 int32_t argc = pArguments->GetLength(); | 3301 int32_t argc = pArguments->GetLength(); |
| 3306 if (argc == 1) { | 3302 if (argc == 1) { |
| 3307 const bool bScriptFlags = pArguments->GetInt32(0) != 0; | 3303 const bool bScriptFlags = pArguments->GetInt32(0) != 0; |
| 3308 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 3304 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 3309 if (!pNotify) { | 3305 if (!pNotify) { |
| 3310 return; | 3306 return; |
| 3311 } | 3307 } |
| 3312 if (bScriptFlags) { | 3308 if (bScriptFlags) { |
| 3313 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); | 3309 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); |
| 3314 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); | 3310 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); |
| 3315 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Ready, TRUE); | 3311 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Ready, TRUE); |
| 3316 } else { | 3312 } else { |
| 3317 } | 3313 } |
| 3318 } else { | 3314 } else { |
| 3319 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"recalculate"); | 3315 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"recalculate"); |
| 3320 } | 3316 } |
| 3321 } | 3317 } |
| 3322 void CXFA_Node::Script_Form_ExecCalculate(CFXJSE_Arguments* pArguments) { | 3318 void CXFA_Node::Script_Form_ExecCalculate(CFXJSE_Arguments* pArguments) { |
| 3323 int32_t argc = pArguments->GetLength(); | 3319 int32_t argc = pArguments->GetLength(); |
| 3324 if (argc == 0) { | 3320 if (argc == 0) { |
| 3325 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 3321 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 3326 if (!pNotify) { | 3322 if (!pNotify) { |
| 3327 return; | 3323 return; |
| 3328 } | 3324 } |
| 3329 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); | 3325 pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Calculate); |
| 3330 } else { | 3326 } else { |
| 3331 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execCalculate"); | 3327 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execCalculate"); |
| 3332 } | 3328 } |
| 3333 } | 3329 } |
| 3334 void CXFA_Node::Script_Form_ExecValidate(CFXJSE_Arguments* pArguments) { | 3330 void CXFA_Node::Script_Form_ExecValidate(CFXJSE_Arguments* pArguments) { |
| 3335 int32_t argc = pArguments->GetLength(); | 3331 int32_t argc = pArguments->GetLength(); |
| 3336 if (argc == 0) { | 3332 if (argc == 0) { |
| 3337 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 3333 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 3338 if (!pNotify) { | 3334 if (!pNotify) { |
| 3339 pArguments->GetReturnValue()->SetBoolean(FALSE); | 3335 pArguments->GetReturnValue()->SetBoolean(FALSE); |
| 3340 } else { | 3336 } else { |
| 3341 int32_t iRet = pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); | 3337 int32_t iRet = pNotify->ExecEventByDeepFirst(this, XFA_EVENT_Validate); |
| 3342 pArguments->GetReturnValue()->SetBoolean( | 3338 pArguments->GetReturnValue()->SetBoolean( |
| 3343 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); | 3339 (iRet == XFA_EVENTERROR_Error) ? FALSE : TRUE); |
| 3344 } | 3340 } |
| 3345 } else { | 3341 } else { |
| 3346 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execValidate"); | 3342 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execValidate"); |
| 3347 } | 3343 } |
| (...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4368 | 4364 |
| 4369 if (pProperty->uFlags & XFA_PROPERTYFLAG_OneOf) { | 4365 if (pProperty->uFlags & XFA_PROPERTYFLAG_OneOf) { |
| 4370 pNode = m_pChild; | 4366 pNode = m_pChild; |
| 4371 for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 4367 for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 4372 const XFA_PROPERTY* pExistProperty = | 4368 const XFA_PROPERTY* pExistProperty = |
| 4373 XFA_GetPropertyOfElement(eType, pNode->GetElementType(), dwPacket); | 4369 XFA_GetPropertyOfElement(eType, pNode->GetElementType(), dwPacket); |
| 4374 if (pExistProperty && (pExistProperty->uFlags & XFA_PROPERTYFLAG_OneOf)) | 4370 if (pExistProperty && (pExistProperty->uFlags & XFA_PROPERTYFLAG_OneOf)) |
| 4375 return nullptr; | 4371 return nullptr; |
| 4376 } | 4372 } |
| 4377 } | 4373 } |
| 4378 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | 4374 |
| 4379 const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(dwPacket); | 4375 const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(dwPacket); |
| 4380 CXFA_Node* pNewNode = nullptr; | 4376 CXFA_Node* pNewNode = nullptr; |
| 4381 for (; iCount <= index; iCount++) { | 4377 for (; iCount <= index; iCount++) { |
| 4382 pNewNode = pFactory->CreateNode(pPacket, eProperty); | 4378 pNewNode = m_pDocument->CreateNode(pPacket, eProperty); |
| 4383 if (!pNewNode) | 4379 if (!pNewNode) |
| 4384 return nullptr; | 4380 return nullptr; |
| 4385 InsertChild(pNewNode, nullptr); | 4381 InsertChild(pNewNode, nullptr); |
| 4386 pNewNode->SetFlag(XFA_NodeFlag_Initialized, true); | 4382 pNewNode->SetFlag(XFA_NodeFlag_Initialized, true); |
| 4387 } | 4383 } |
| 4388 return pNewNode; | 4384 return pNewNode; |
| 4389 } | 4385 } |
| 4390 int32_t CXFA_Node::CountChildren(XFA_Element eType, FX_BOOL bOnlyChild) { | 4386 int32_t CXFA_Node::CountChildren(XFA_Element eType, FX_BOOL bOnlyChild) { |
| 4391 CXFA_Node* pNode = m_pChild; | 4387 CXFA_Node* pNode = m_pChild; |
| 4392 int32_t iCount = 0; | 4388 int32_t iCount = 0; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4455 pNode->m_pNext = pPrev->m_pNext; | 4451 pNode->m_pNext = pPrev->m_pNext; |
| 4456 pPrev->m_pNext = pNode; | 4452 pPrev->m_pNext = pNode; |
| 4457 index = iCount; | 4453 index = iCount; |
| 4458 } | 4454 } |
| 4459 if (!pNode->m_pNext) { | 4455 if (!pNode->m_pNext) { |
| 4460 m_pLastChild = pNode; | 4456 m_pLastChild = pNode; |
| 4461 } | 4457 } |
| 4462 ASSERT(m_pLastChild); | 4458 ASSERT(m_pLastChild); |
| 4463 ASSERT(!m_pLastChild->m_pNext); | 4459 ASSERT(!m_pLastChild->m_pNext); |
| 4464 pNode->ClearFlag(XFA_NodeFlag_HasRemovedChildren); | 4460 pNode->ClearFlag(XFA_NodeFlag_HasRemovedChildren); |
| 4465 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 4461 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 4466 if (pNotify) | 4462 if (pNotify) |
| 4467 pNotify->OnChildAdded(this); | 4463 pNotify->OnChildAdded(this); |
| 4468 | 4464 |
| 4469 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { | 4465 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { |
| 4470 ASSERT(!pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent)); | 4466 ASSERT(!pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent)); |
| 4471 m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, index); | 4467 m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, index); |
| 4472 pNode->ClearFlag(XFA_NodeFlag_OwnXMLNode); | 4468 pNode->ClearFlag(XFA_NodeFlag_OwnXMLNode); |
| 4473 } | 4469 } |
| 4474 return index; | 4470 return index; |
| 4475 } | 4471 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 4502 } | 4498 } |
| 4503 pNode->m_pNext = pPrev->m_pNext; | 4499 pNode->m_pNext = pPrev->m_pNext; |
| 4504 pPrev->m_pNext = pNode; | 4500 pPrev->m_pNext = pNode; |
| 4505 } | 4501 } |
| 4506 if (!pNode->m_pNext) { | 4502 if (!pNode->m_pNext) { |
| 4507 m_pLastChild = pNode; | 4503 m_pLastChild = pNode; |
| 4508 } | 4504 } |
| 4509 ASSERT(m_pLastChild); | 4505 ASSERT(m_pLastChild); |
| 4510 ASSERT(!m_pLastChild->m_pNext); | 4506 ASSERT(!m_pLastChild->m_pNext); |
| 4511 pNode->ClearFlag(XFA_NodeFlag_HasRemovedChildren); | 4507 pNode->ClearFlag(XFA_NodeFlag_HasRemovedChildren); |
| 4512 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 4508 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 4513 if (pNotify) | 4509 if (pNotify) |
| 4514 pNotify->OnChildAdded(this); | 4510 pNotify->OnChildAdded(this); |
| 4515 | 4511 |
| 4516 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { | 4512 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { |
| 4517 ASSERT(!pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent)); | 4513 ASSERT(!pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent)); |
| 4518 m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, nIndex); | 4514 m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, nIndex); |
| 4519 pNode->ClearFlag(XFA_NodeFlag_OwnXMLNode); | 4515 pNode->ClearFlag(XFA_NodeFlag_OwnXMLNode); |
| 4520 } | 4516 } |
| 4521 return TRUE; | 4517 return TRUE; |
| 4522 } | 4518 } |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4681 bool CXFA_Node::HasFlag(XFA_NodeFlag dwFlag) const { | 4677 bool CXFA_Node::HasFlag(XFA_NodeFlag dwFlag) const { |
| 4682 if (m_uNodeFlags & dwFlag) | 4678 if (m_uNodeFlags & dwFlag) |
| 4683 return true; | 4679 return true; |
| 4684 if (dwFlag == XFA_NodeFlag_HasRemovedChildren) | 4680 if (dwFlag == XFA_NodeFlag_HasRemovedChildren) |
| 4685 return m_pParent && m_pParent->HasFlag(dwFlag); | 4681 return m_pParent && m_pParent->HasFlag(dwFlag); |
| 4686 return false; | 4682 return false; |
| 4687 } | 4683 } |
| 4688 | 4684 |
| 4689 void CXFA_Node::SetFlag(uint32_t dwFlag, bool bNotify) { | 4685 void CXFA_Node::SetFlag(uint32_t dwFlag, bool bNotify) { |
| 4690 if (dwFlag == XFA_NodeFlag_Initialized && bNotify && !IsInitialized()) { | 4686 if (dwFlag == XFA_NodeFlag_Initialized && bNotify && !IsInitialized()) { |
| 4691 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 4687 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 4692 if (pNotify) { | 4688 if (pNotify) { |
| 4693 pNotify->OnNodeReady(this); | 4689 pNotify->OnNodeReady(this); |
| 4694 } | 4690 } |
| 4695 } | 4691 } |
| 4696 m_uNodeFlags |= dwFlag; | 4692 m_uNodeFlags |= dwFlag; |
| 4697 } | 4693 } |
| 4698 | 4694 |
| 4699 void CXFA_Node::ClearFlag(uint32_t dwFlag) { | 4695 void CXFA_Node::ClearFlag(uint32_t dwFlag) { |
| 4700 m_uNodeFlags &= ~dwFlag; | 4696 m_uNodeFlags &= ~dwFlag; |
| 4701 } | 4697 } |
| 4702 | 4698 |
| 4703 FX_BOOL CXFA_Node::IsAttributeInXML() { | 4699 FX_BOOL CXFA_Node::IsAttributeInXML() { |
| 4704 return GetEnum(XFA_ATTRIBUTE_Contains) == XFA_ATTRIBUTEENUM_MetaData; | 4700 return GetEnum(XFA_ATTRIBUTE_Contains) == XFA_ATTRIBUTEENUM_MetaData; |
| 4705 } | 4701 } |
| 4706 | 4702 |
| 4707 void CXFA_Node::OnRemoved(bool bNotify) { | 4703 void CXFA_Node::OnRemoved(bool bNotify) { |
| 4708 if (!bNotify) | 4704 if (!bNotify) |
| 4709 return; | 4705 return; |
| 4710 | 4706 |
| 4711 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 4707 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 4712 if (pNotify) | 4708 if (pNotify) |
| 4713 pNotify->OnChildRemoved(); | 4709 pNotify->OnChildRemoved(); |
| 4714 } | 4710 } |
| 4715 | 4711 |
| 4716 void CXFA_Node::OnChanging(XFA_ATTRIBUTE eAttr, bool bNotify) { | 4712 void CXFA_Node::OnChanging(XFA_ATTRIBUTE eAttr, bool bNotify) { |
| 4717 if (bNotify && IsInitialized()) { | 4713 if (bNotify && IsInitialized()) { |
| 4718 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 4714 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 4719 if (pNotify) { | 4715 if (pNotify) { |
| 4720 pNotify->OnValueChanging(this, eAttr); | 4716 pNotify->OnValueChanging(this, eAttr); |
| 4721 } | 4717 } |
| 4722 } | 4718 } |
| 4723 } | 4719 } |
| 4724 | 4720 |
| 4725 void CXFA_Node::OnChanged(XFA_ATTRIBUTE eAttr, | 4721 void CXFA_Node::OnChanged(XFA_ATTRIBUTE eAttr, |
| 4726 bool bNotify, | 4722 bool bNotify, |
| 4727 FX_BOOL bScriptModify) { | 4723 FX_BOOL bScriptModify) { |
| 4728 if (bNotify && IsInitialized()) { | 4724 if (bNotify && IsInitialized()) { |
| 4729 Script_Attribute_SendAttributeChangeMessage(eAttr, bScriptModify); | 4725 Script_Attribute_SendAttributeChangeMessage(eAttr, bScriptModify); |
| 4730 } | 4726 } |
| 4731 } | 4727 } |
| 4732 | 4728 |
| 4733 int32_t CXFA_Node::execSingleEventByName(const CFX_WideStringC& wsEventName, | 4729 int32_t CXFA_Node::execSingleEventByName(const CFX_WideStringC& wsEventName, |
| 4734 XFA_Element eType) { | 4730 XFA_Element eType) { |
| 4735 int32_t iRet = XFA_EVENTERROR_NotExist; | 4731 int32_t iRet = XFA_EVENTERROR_NotExist; |
| 4736 const XFA_ExecEventParaInfo* eventParaInfo = | 4732 const XFA_ExecEventParaInfo* eventParaInfo = |
| 4737 GetEventParaInfoByName(wsEventName); | 4733 GetEventParaInfoByName(wsEventName); |
| 4738 if (eventParaInfo) { | 4734 if (eventParaInfo) { |
| 4739 uint32_t validFlags = eventParaInfo->m_validFlags; | 4735 uint32_t validFlags = eventParaInfo->m_validFlags; |
| 4740 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 4736 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 4741 if (!pNotify) { | 4737 if (!pNotify) { |
| 4742 return iRet; | 4738 return iRet; |
| 4743 } | 4739 } |
| 4744 if (validFlags == 1) { | 4740 if (validFlags == 1) { |
| 4745 iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType); | 4741 iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType); |
| 4746 } else if (validFlags == 2) { | 4742 } else if (validFlags == 2) { |
| 4747 iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType, | 4743 iRet = pNotify->ExecEventByDeepFirst(this, eventParaInfo->m_eventType, |
| 4748 FALSE, FALSE); | 4744 FALSE, FALSE); |
| 4749 } else if (validFlags == 3) { | 4745 } else if (validFlags == 3) { |
| 4750 if (eType == XFA_Element::Subform) { | 4746 if (eType == XFA_Element::Subform) { |
| (...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5259 return m_pAttachNode->InsertChild(pNewNode, pBeforeNode); | 5255 return m_pAttachNode->InsertChild(pNewNode, pBeforeNode); |
| 5260 } | 5256 } |
| 5261 FX_BOOL CXFA_AttachNodeList::Remove(CXFA_Node* pNode) { | 5257 FX_BOOL CXFA_AttachNodeList::Remove(CXFA_Node* pNode) { |
| 5262 return m_pAttachNode->RemoveChild(pNode); | 5258 return m_pAttachNode->RemoveChild(pNode); |
| 5263 } | 5259 } |
| 5264 CXFA_Node* CXFA_AttachNodeList::Item(int32_t iIndex) { | 5260 CXFA_Node* CXFA_AttachNodeList::Item(int32_t iIndex) { |
| 5265 return m_pAttachNode->GetChild( | 5261 return m_pAttachNode->GetChild( |
| 5266 iIndex, XFA_Element::Unknown, | 5262 iIndex, XFA_Element::Unknown, |
| 5267 m_pAttachNode->GetElementType() == XFA_Element::Subform); | 5263 m_pAttachNode->GetElementType() == XFA_Element::Subform); |
| 5268 } | 5264 } |
| OLD | NEW |