| 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_parser_imp.h" | 7 #include "xfa/fxfa/parser/xfa_parser_imp.h" | 
| 8 | 8 | 
| 9 #include "xfa/fde/xml/fde_xml_imp.h" | 9 #include "xfa/fde/xml/fde_xml_imp.h" | 
| 10 #include "xfa/fgas/crt/fgas_codepage.h" | 10 #include "xfa/fgas/crt/fgas_codepage.h" | 
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 168           CFDE_XMLElement* child = static_cast<CFDE_XMLElement*>(pXMLChild); | 168           CFDE_XMLElement* child = static_cast<CFDE_XMLElement*>(pXMLChild); | 
| 169           child->GetLocalTagName(wsNodeStr); | 169           child->GetLocalTagName(wsNodeStr); | 
| 170           pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr); | 170           pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr); | 
| 171           CFX_WideString wsChildValue; | 171           CFX_WideString wsChildValue; | 
| 172           XFA_GetPlainTextFromRichText(child, wsChildValue); | 172           XFA_GetPlainTextFromRichText(child, wsChildValue); | 
| 173           if (!wsChildValue.IsEmpty()) | 173           if (!wsChildValue.IsEmpty()) | 
| 174             pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsChildValue); | 174             pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsChildValue); | 
| 175 | 175 | 
| 176           pXFANode->InsertChild(pXFAChild); | 176           pXFANode->InsertChild(pXFAChild); | 
| 177           pXFAChild->SetXMLMappingNode(pXMLChild); | 177           pXFAChild->SetXMLMappingNode(pXMLChild); | 
| 178           pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); | 178           pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false); | 
| 179           break; | 179           break; | 
| 180         } | 180         } | 
| 181       } | 181       } | 
| 182       m_pRootNode = pXFANode; | 182       m_pRootNode = pXFANode; | 
| 183     } else { | 183     } else { | 
| 184       m_pRootNode = DataLoader(pXFANode, pXMLNode, TRUE); | 184       m_pRootNode = DataLoader(pXFANode, pXMLNode, TRUE); | 
| 185     } | 185     } | 
| 186   } else if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) { | 186   } else if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) { | 
| 187     ParseContentNode(pXFANode, pXMLNode, ePacketID); | 187     ParseContentNode(pXFANode, pXMLNode, ePacketID); | 
| 188     m_pRootNode = pXFANode; | 188     m_pRootNode = pXFANode; | 
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 687       return NULL; | 687       return NULL; | 
| 688     } | 688     } | 
| 689     CFX_WideString wsLocalName; | 689     CFX_WideString wsLocalName; | 
| 690     static_cast<CFDE_XMLElement*>(pDataXMLNode)->GetLocalTagName(wsLocalName); | 690     static_cast<CFDE_XMLElement*>(pDataXMLNode)->GetLocalTagName(wsLocalName); | 
| 691     pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName); | 691     pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName); | 
| 692     if (!DataLoader(pNode, pDataXMLNode, TRUE)) { | 692     if (!DataLoader(pNode, pDataXMLNode, TRUE)) { | 
| 693       return NULL; | 693       return NULL; | 
| 694     } | 694     } | 
| 695     pNode->SetXMLMappingNode(pDataXMLNode); | 695     pNode->SetXMLMappingNode(pDataXMLNode); | 
| 696     if (pDataXMLNode != pXMLDocumentNode) { | 696     if (pDataXMLNode != pXMLDocumentNode) { | 
| 697       pNode->SetFlag(XFA_NODEFLAG_OwnXMLNode, TRUE, FALSE); | 697       pNode->SetFlag(XFA_NODEFLAG_OwnXMLNode, false); | 
| 698     } | 698     } | 
| 699     return pNode; | 699     return pNode; | 
| 700   } | 700   } | 
| 701   return NULL; | 701   return NULL; | 
| 702 } | 702 } | 
| 703 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet( | 703 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet( | 
| 704     CFDE_XMLNode* pXMLDocumentNode, | 704     CFDE_XMLNode* pXMLDocumentNode, | 
| 705     XFA_XDPPACKET ePacketID) { | 705     XFA_XDPPACKET ePacketID) { | 
| 706   CXFA_Node* pNode = NULL; | 706   CXFA_Node* pNode = NULL; | 
| 707   if (ePacketID == XFA_XDPPACKET_LocaleSet) { | 707   if (ePacketID == XFA_XDPPACKET_LocaleSet) { | 
| (...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1138               return; | 1138               return; | 
| 1139             } | 1139             } | 
| 1140             pXFAMetaData->SetCData(XFA_ATTRIBUTE_Name, wsAttrName); | 1140             pXFAMetaData->SetCData(XFA_ATTRIBUTE_Name, wsAttrName); | 
| 1141             pXFAMetaData->SetCData(XFA_ATTRIBUTE_QualifiedName, | 1141             pXFAMetaData->SetCData(XFA_ATTRIBUTE_QualifiedName, | 
| 1142                                    wsAttrQualifiedName); | 1142                                    wsAttrQualifiedName); | 
| 1143             pXFAMetaData->SetCData(XFA_ATTRIBUTE_Value, wsAttrValue); | 1143             pXFAMetaData->SetCData(XFA_ATTRIBUTE_Value, wsAttrValue); | 
| 1144             pXFAMetaData->SetEnum(XFA_ATTRIBUTE_Contains, | 1144             pXFAMetaData->SetEnum(XFA_ATTRIBUTE_Contains, | 
| 1145                                   XFA_ATTRIBUTEENUM_MetaData); | 1145                                   XFA_ATTRIBUTEENUM_MetaData); | 
| 1146             pXFAChild->InsertChild(pXFAMetaData); | 1146             pXFAChild->InsertChild(pXFAMetaData); | 
| 1147             pXFAMetaData->SetXMLMappingNode(pXMLElement); | 1147             pXFAMetaData->SetXMLMappingNode(pXMLElement); | 
| 1148             pXFAMetaData->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); | 1148             pXFAMetaData->SetFlag(XFA_NODEFLAG_Initialized, false); | 
| 1149           } | 1149           } | 
| 1150           if (!bNeedValue) { | 1150           if (!bNeedValue) { | 
| 1151             CFX_WideString wsNilName = FX_WSTRC(L"xsi:nil"); | 1151             CFX_WideString wsNilName = FX_WSTRC(L"xsi:nil"); | 
| 1152             pXMLElement->RemoveAttribute(wsNilName.c_str()); | 1152             pXMLElement->RemoveAttribute(wsNilName.c_str()); | 
| 1153           } | 1153           } | 
| 1154         } | 1154         } | 
| 1155         pXFANode->InsertChild(pXFAChild); | 1155         pXFANode->InsertChild(pXFAChild); | 
| 1156         if (eNodeType == XFA_ELEMENT_DataGroup) { | 1156         if (eNodeType == XFA_ELEMENT_DataGroup) { | 
| 1157           ParseDataGroup(pXFAChild, pXMLElement, ePacketID); | 1157           ParseDataGroup(pXFAChild, pXMLElement, ePacketID); | 
| 1158         } else { | 1158         } else { | 
| 1159           if (bNeedValue) { | 1159           if (bNeedValue) { | 
| 1160             ParseDataValue(pXFAChild, pXMLChild, XFA_XDPPACKET_Datasets); | 1160             ParseDataValue(pXFAChild, pXMLChild, XFA_XDPPACKET_Datasets); | 
| 1161           } | 1161           } | 
| 1162         } | 1162         } | 
| 1163         pXFAChild->SetXMLMappingNode(pXMLElement); | 1163         pXFAChild->SetXMLMappingNode(pXMLElement); | 
| 1164         pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); | 1164         pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false); | 
| 1165       } | 1165       } | 
| 1166         continue; | 1166         continue; | 
| 1167       case FDE_XMLNODE_CharData: { | 1167       case FDE_XMLNODE_CharData: { | 
| 1168         CFDE_XMLCharData* pXMLCharData = | 1168         CFDE_XMLCharData* pXMLCharData = | 
| 1169             static_cast<CFDE_XMLCharData*>(pXMLChild); | 1169             static_cast<CFDE_XMLCharData*>(pXMLChild); | 
| 1170         CFX_WideString wsCharData; | 1170         CFX_WideString wsCharData; | 
| 1171         pXMLCharData->GetCharData(wsCharData); | 1171         pXMLCharData->GetCharData(wsCharData); | 
| 1172         if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) { | 1172         if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) { | 
| 1173           continue; | 1173           continue; | 
| 1174         } | 1174         } | 
| 1175         CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, | 1175         CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, | 
| 1176                                                       XFA_ELEMENT_DataValue); | 1176                                                       XFA_ELEMENT_DataValue); | 
| 1177         if (pXFAChild == NULL) { | 1177         if (pXFAChild == NULL) { | 
| 1178           return; | 1178           return; | 
| 1179         } | 1179         } | 
| 1180         pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData); | 1180         pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData); | 
| 1181         pXFANode->InsertChild(pXFAChild); | 1181         pXFANode->InsertChild(pXFAChild); | 
| 1182         pXFAChild->SetXMLMappingNode(pXMLCharData); | 1182         pXFAChild->SetXMLMappingNode(pXMLCharData); | 
| 1183         pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); | 1183         pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false); | 
| 1184       } | 1184       } | 
| 1185         continue; | 1185         continue; | 
| 1186       case FDE_XMLNODE_Text: { | 1186       case FDE_XMLNODE_Text: { | 
| 1187         CFDE_XMLText* pXMLText = static_cast<CFDE_XMLText*>(pXMLChild); | 1187         CFDE_XMLText* pXMLText = static_cast<CFDE_XMLText*>(pXMLChild); | 
| 1188         CFX_WideString wsText; | 1188         CFX_WideString wsText; | 
| 1189         pXMLText->GetText(wsText); | 1189         pXMLText->GetText(wsText); | 
| 1190         if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) { | 1190         if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) { | 
| 1191           continue; | 1191           continue; | 
| 1192         } | 1192         } | 
| 1193         CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, | 1193         CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, | 
| 1194                                                       XFA_ELEMENT_DataValue); | 1194                                                       XFA_ELEMENT_DataValue); | 
| 1195         if (pXFAChild == NULL) { | 1195         if (pXFAChild == NULL) { | 
| 1196           return; | 1196           return; | 
| 1197         } | 1197         } | 
| 1198         pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText); | 1198         pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText); | 
| 1199         pXFANode->InsertChild(pXFAChild); | 1199         pXFANode->InsertChild(pXFAChild); | 
| 1200         pXFAChild->SetXMLMappingNode(pXMLText); | 1200         pXFAChild->SetXMLMappingNode(pXMLText); | 
| 1201         pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); | 1201         pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false); | 
| 1202       } | 1202       } | 
| 1203         continue; | 1203         continue; | 
| 1204       case FDE_XMLNODE_Instruction: | 1204       case FDE_XMLNODE_Instruction: | 
| 1205         continue; | 1205         continue; | 
| 1206       default: | 1206       default: | 
| 1207         continue; | 1207         continue; | 
| 1208     } | 1208     } | 
| 1209   } | 1209   } | 
| 1210 } | 1210 } | 
| 1211 | 1211 | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1252         if (!wsCurValue.IsEmpty()) { | 1252         if (!wsCurValue.IsEmpty()) { | 
| 1253           CXFA_Node* pXFAChild = | 1253           CXFA_Node* pXFAChild = | 
| 1254               m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue); | 1254               m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue); | 
| 1255           if (!pXFAChild) | 1255           if (!pXFAChild) | 
| 1256             return; | 1256             return; | 
| 1257 | 1257 | 
| 1258           pXFAChild->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"")); | 1258           pXFAChild->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"")); | 
| 1259           pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCurValue); | 1259           pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCurValue); | 
| 1260           pXFANode->InsertChild(pXFAChild); | 1260           pXFANode->InsertChild(pXFAChild); | 
| 1261           pXFAChild->SetXMLMappingNode(pXMLCurValueNode); | 1261           pXFAChild->SetXMLMappingNode(pXMLCurValueNode); | 
| 1262           pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); | 1262           pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false); | 
| 1263           wsValueTextBuf << wsCurValue; | 1263           wsValueTextBuf << wsCurValue; | 
| 1264           wsCurValueTextBuf.Clear(); | 1264           wsCurValueTextBuf.Clear(); | 
| 1265         } | 1265         } | 
| 1266         pXMLCurValueNode = nullptr; | 1266         pXMLCurValueNode = nullptr; | 
| 1267       } | 1267       } | 
| 1268       CXFA_Node* pXFAChild = | 1268       CXFA_Node* pXFAChild = | 
| 1269           m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue); | 1269           m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue); | 
| 1270       if (!pXFAChild) | 1270       if (!pXFAChild) | 
| 1271         return; | 1271         return; | 
| 1272 | 1272 | 
| 1273       CFX_WideString wsNodeStr; | 1273       CFX_WideString wsNodeStr; | 
| 1274       static_cast<CFDE_XMLElement*>(pXMLChild)->GetLocalTagName(wsNodeStr); | 1274       static_cast<CFDE_XMLElement*>(pXMLChild)->GetLocalTagName(wsNodeStr); | 
| 1275       pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr); | 1275       pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr); | 
| 1276       ParseDataValue(pXFAChild, pXMLChild, ePacketID); | 1276       ParseDataValue(pXFAChild, pXMLChild, ePacketID); | 
| 1277       pXFANode->InsertChild(pXFAChild); | 1277       pXFANode->InsertChild(pXFAChild); | 
| 1278       pXFAChild->SetXMLMappingNode(pXMLChild); | 1278       pXFAChild->SetXMLMappingNode(pXMLChild); | 
| 1279       pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); | 1279       pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false); | 
| 1280       CFX_WideStringC wsCurValue = pXFAChild->GetCData(XFA_ATTRIBUTE_Value); | 1280       CFX_WideStringC wsCurValue = pXFAChild->GetCData(XFA_ATTRIBUTE_Value); | 
| 1281       wsValueTextBuf << wsCurValue; | 1281       wsValueTextBuf << wsCurValue; | 
| 1282     } | 1282     } | 
| 1283   } | 1283   } | 
| 1284   if (pXMLCurValueNode) { | 1284   if (pXMLCurValueNode) { | 
| 1285     CFX_WideStringC wsCurValue = wsCurValueTextBuf.GetWideString(); | 1285     CFX_WideStringC wsCurValue = wsCurValueTextBuf.GetWideString(); | 
| 1286     if (!wsCurValue.IsEmpty()) { | 1286     if (!wsCurValue.IsEmpty()) { | 
| 1287       if (bMarkAsCompound) { | 1287       if (bMarkAsCompound) { | 
| 1288         CXFA_Node* pXFAChild = | 1288         CXFA_Node* pXFAChild = | 
| 1289             m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue); | 1289             m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue); | 
| 1290         if (!pXFAChild) | 1290         if (!pXFAChild) | 
| 1291           return; | 1291           return; | 
| 1292 | 1292 | 
| 1293         pXFAChild->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"")); | 1293         pXFAChild->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"")); | 
| 1294         pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCurValue); | 1294         pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCurValue); | 
| 1295         pXFANode->InsertChild(pXFAChild); | 1295         pXFANode->InsertChild(pXFAChild); | 
| 1296         pXFAChild->SetXMLMappingNode(pXMLCurValueNode); | 1296         pXFAChild->SetXMLMappingNode(pXMLCurValueNode); | 
| 1297         pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); | 1297         pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false); | 
| 1298       } | 1298       } | 
| 1299       wsValueTextBuf << wsCurValue; | 1299       wsValueTextBuf << wsCurValue; | 
| 1300       wsCurValueTextBuf.Clear(); | 1300       wsCurValueTextBuf.Clear(); | 
| 1301     } | 1301     } | 
| 1302     pXMLCurValueNode = nullptr; | 1302     pXMLCurValueNode = nullptr; | 
| 1303   } | 1303   } | 
| 1304   CFX_WideStringC wsNodeValue = wsValueTextBuf.GetWideString(); | 1304   CFX_WideStringC wsNodeValue = wsValueTextBuf.GetWideString(); | 
| 1305   pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsNodeValue); | 1305   pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsNodeValue); | 
| 1306 } | 1306 } | 
| 1307 | 1307 | 
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1557     } | 1557     } | 
| 1558     if (pPause && iCount > 500 && pPause->NeedToPauseNow()) { | 1558     if (pPause && iCount > 500 && pPause->NeedToPauseNow()) { | 
| 1559       break; | 1559       break; | 
| 1560     } | 1560     } | 
| 1561   } | 1561   } | 
| 1562   return (m_syntaxParserResult == FDE_XmlSyntaxResult::Error || | 1562   return (m_syntaxParserResult == FDE_XmlSyntaxResult::Error || | 
| 1563           m_NodeStack.GetSize() != 1) | 1563           m_NodeStack.GetSize() != 1) | 
| 1564              ? -1 | 1564              ? -1 | 
| 1565              : m_pParser->GetStatus(); | 1565              : m_pParser->GetStatus(); | 
| 1566 } | 1566 } | 
| OLD | NEW | 
|---|