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