Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Side by Side Diff: xfa/fxfa/parser/xfa_document_serialize.cpp

Issue 2083453003: Split the XFA_OBJECTTYPE enum into two parts. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Force to bool Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_document_serialize.h" 7 #include "xfa/fxfa/parser/xfa_document_serialize.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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 } 154 }
155 CXFA_Node* pFieldNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent); 155 CXFA_Node* pFieldNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent);
156 if (pFieldNode && pFieldNode->GetBindData() && 156 if (pFieldNode && pFieldNode->GetBindData() &&
157 eAttribute == XFA_ATTRIBUTE_Href) { 157 eAttribute == XFA_ATTRIBUTE_Href) {
158 bSaveInDataModel = TRUE; 158 bSaveInDataModel = TRUE;
159 } 159 }
160 return bSaveInDataModel; 160 return bSaveInDataModel;
161 } 161 }
162 FX_BOOL XFA_DataExporter_ContentNodeNeedtoExport(CXFA_Node* pContentNode) { 162 FX_BOOL XFA_DataExporter_ContentNodeNeedtoExport(CXFA_Node* pContentNode) {
163 CFX_WideString wsContent; 163 CFX_WideString wsContent;
164 if (!pContentNode->TryContent(wsContent, FALSE, FALSE)) { 164 if (!pContentNode->TryContent(wsContent, FALSE, FALSE))
165 return FALSE; 165 return FALSE;
166 } 166
167 ASSERT(pContentNode->GetObjectType() == XFA_OBJECTTYPE_ContentNode); 167 ASSERT(pContentNode->IsContentNode());
168 CXFA_Node* pParentNode = pContentNode->GetNodeItem(XFA_NODEITEM_Parent); 168 CXFA_Node* pParentNode = pContentNode->GetNodeItem(XFA_NODEITEM_Parent);
169 if (!pParentNode || pParentNode->GetClassID() != XFA_ELEMENT_Value) { 169 if (!pParentNode || pParentNode->GetClassID() != XFA_ELEMENT_Value)
170 return TRUE; 170 return TRUE;
171 } 171
172 CXFA_Node* pGrandParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent); 172 CXFA_Node* pGrandParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent);
173 if (!pGrandParentNode || 173 if (!pGrandParentNode || !pGrandParentNode->IsContainerNode())
174 pGrandParentNode->GetObjectType() != XFA_OBJECTTYPE_ContainerNode) {
175 return TRUE; 174 return TRUE;
176 } 175 if (pGrandParentNode->GetBindData())
177 if (pGrandParentNode->GetBindData()) {
178 return FALSE; 176 return FALSE;
179 } 177
180 CXFA_WidgetData* pWidgetData = pGrandParentNode->GetWidgetData(); 178 CXFA_WidgetData* pWidgetData = pGrandParentNode->GetWidgetData();
181 XFA_ELEMENT eUIType = pWidgetData->GetUIType(); 179 XFA_ELEMENT eUIType = pWidgetData->GetUIType();
182 if (eUIType == XFA_ELEMENT_PasswordEdit) { 180 if (eUIType == XFA_ELEMENT_PasswordEdit) {
183 return FALSE; 181 return FALSE;
184 } 182 }
185 return TRUE; 183 return TRUE;
186 } 184 }
187 static void XFA_DataExporter_RecognizeXFAVersionNumber( 185 static void XFA_DataExporter_RecognizeXFAVersionNumber(
188 CXFA_Node* pTemplateRoot, 186 CXFA_Node* pTemplateRoot,
189 CFX_WideString& wsVersionNumber) { 187 CFX_WideString& wsVersionNumber) {
(...skipping 26 matching lines...) Expand all
216 (XFA_DataExporter_AttributeSaveInDataModel(pNode, pAttr->eName) && 214 (XFA_DataExporter_AttributeSaveInDataModel(pNode, pAttr->eName) &&
217 !bSaveXML)) { 215 !bSaveXML)) {
218 continue; 216 continue;
219 } 217 }
220 CFX_WideString wsAttr; 218 CFX_WideString wsAttr;
221 XFA_SaveAttribute(pNode, pAttr->eName, pAttr->pName, bSaveXML, wsAttr); 219 XFA_SaveAttribute(pNode, pAttr->eName, pAttr->pName, bSaveXML, wsAttr);
222 wsAttrs += wsAttr; 220 wsAttrs += wsAttr;
223 } 221 }
224 CFX_WideString wsChildren; 222 CFX_WideString wsChildren;
225 switch (pNode->GetObjectType()) { 223 switch (pNode->GetObjectType()) {
226 case XFA_OBJECTTYPE_ContentNode: { 224 case XFA_ObjectType::ContentNode: {
227 if (!bSaveXML && !XFA_DataExporter_ContentNodeNeedtoExport(pNode)) { 225 if (!bSaveXML && !XFA_DataExporter_ContentNodeNeedtoExport(pNode)) {
228 break; 226 break;
229 } 227 }
230 CXFA_Node* pRawValueNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); 228 CXFA_Node* pRawValueNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
231 while (pRawValueNode && 229 while (pRawValueNode &&
232 pRawValueNode->GetClassID() != XFA_ELEMENT_SharpxHTML && 230 pRawValueNode->GetClassID() != XFA_ELEMENT_SharpxHTML &&
233 pRawValueNode->GetClassID() != XFA_ELEMENT_Sharptext && 231 pRawValueNode->GetClassID() != XFA_ELEMENT_Sharptext &&
234 pRawValueNode->GetClassID() != XFA_ELEMENT_Sharpxml) { 232 pRawValueNode->GetClassID() != XFA_ELEMENT_Sharpxml) {
235 pRawValueNode = pRawValueNode->GetNodeItem(XFA_NODEITEM_NextSibling); 233 pRawValueNode = pRawValueNode->GetNodeItem(XFA_NODEITEM_NextSibling);
236 } 234 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 buf << FX_WSTRC(L"</"); 299 buf << FX_WSTRC(L"</");
302 buf << bodyTagName; 300 buf << bodyTagName;
303 buf << FX_WSTRC(L"\n>"); 301 buf << FX_WSTRC(L"\n>");
304 wsChildren += buf.AsStringC(); 302 wsChildren += buf.AsStringC();
305 buf.Clear(); 303 buf.Clear();
306 } else { 304 } else {
307 CFX_WideStringC wsValue = pRawValueNode->GetCData(XFA_ATTRIBUTE_Value); 305 CFX_WideStringC wsValue = pRawValueNode->GetCData(XFA_ATTRIBUTE_Value);
308 wsChildren += XFA_ExportEncodeContent(wsValue); 306 wsChildren += XFA_ExportEncodeContent(wsValue);
309 } 307 }
310 } break; 308 } break;
311 case XFA_OBJECTTYPE_TextNode: 309 case XFA_ObjectType::TextNode:
312 case XFA_OBJECTTYPE_NodeC: 310 case XFA_ObjectType::NodeC:
313 case XFA_OBJECTTYPE_NodeV: { 311 case XFA_ObjectType::NodeV: {
314 CFX_WideStringC wsValue = pNode->GetCData(XFA_ATTRIBUTE_Value); 312 CFX_WideStringC wsValue = pNode->GetCData(XFA_ATTRIBUTE_Value);
315 wsChildren += XFA_ExportEncodeContent(wsValue); 313 wsChildren += XFA_ExportEncodeContent(wsValue);
316 } break; 314 } break;
317 default: 315 default:
318 if (pNode->GetClassID() == XFA_ELEMENT_Items) { 316 if (pNode->GetClassID() == XFA_ELEMENT_Items) {
319 CXFA_Node* pTemplateNode = pNode->GetTemplateNode(); 317 CXFA_Node* pTemplateNode = pNode->GetTemplateNode();
320 if (!pTemplateNode || 318 if (!pTemplateNode ||
321 pTemplateNode->CountChildren(XFA_ELEMENT_UNKNOWN) != 319 pTemplateNode->CountChildren(XFA_ELEMENT_UNKNOWN) !=
322 pNode->CountChildren(XFA_ELEMENT_UNKNOWN)) { 320 pNode->CountChildren(XFA_ELEMENT_UNKNOWN)) {
323 bSaveXML = TRUE; 321 bSaveXML = TRUE;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 pStream->WriteString(wsElement.c_str(), wsElement.GetLength()); 416 pStream->WriteString(wsElement.c_str(), wsElement.GetLength());
419 pStream->WriteString(L"\n>", 2); 417 pStream->WriteString(L"\n>", 2);
420 } else { 418 } else {
421 pStream->WriteString(L"\n/>", 3); 419 pStream->WriteString(L"\n/>", 3);
422 } 420 }
423 } 421 }
424 void XFA_DataExporter_RegenerateFormFile(CXFA_Node* pNode, 422 void XFA_DataExporter_RegenerateFormFile(CXFA_Node* pNode,
425 IFX_Stream* pStream, 423 IFX_Stream* pStream,
426 const FX_CHAR* pChecksum, 424 const FX_CHAR* pChecksum,
427 FX_BOOL bSaveXML) { 425 FX_BOOL bSaveXML) {
428 if (pNode->GetObjectType() == XFA_OBJECTTYPE_ModelNode) { 426 if (pNode->IsModelNode()) {
429 static const FX_WCHAR s_pwsTagName[] = L"<form"; 427 static const FX_WCHAR s_pwsTagName[] = L"<form";
430 static const FX_WCHAR s_pwsClose[] = L"</form\n>"; 428 static const FX_WCHAR s_pwsClose[] = L"</form\n>";
431 pStream->WriteString(s_pwsTagName, FXSYS_wcslen(s_pwsTagName)); 429 pStream->WriteString(s_pwsTagName, FXSYS_wcslen(s_pwsTagName));
432 if (pChecksum) { 430 if (pChecksum) {
433 static const FX_WCHAR s_pwChecksum[] = L" checksum=\""; 431 static const FX_WCHAR s_pwChecksum[] = L" checksum=\"";
434 CFX_WideString wsChecksum = CFX_WideString::FromUTF8(pChecksum); 432 CFX_WideString wsChecksum = CFX_WideString::FromUTF8(pChecksum);
435 pStream->WriteString(s_pwChecksum, FXSYS_wcslen(s_pwChecksum)); 433 pStream->WriteString(s_pwChecksum, FXSYS_wcslen(s_pwChecksum));
436 pStream->WriteString(wsChecksum.c_str(), wsChecksum.GetLength()); 434 pStream->WriteString(wsChecksum.c_str(), wsChecksum.GetLength());
437 pStream->WriteString(L"\"", 1); 435 pStream->WriteString(L"\"", 1);
438 } 436 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 pStream->SetCodePage(FX_CODEPAGE_UTF8); 481 pStream->SetCodePage(FX_CODEPAGE_UTF8);
484 FX_BOOL bRet = Export(pStream, pNode, dwFlag, pChecksum); 482 FX_BOOL bRet = Export(pStream, pNode, dwFlag, pChecksum);
485 pStream->Release(); 483 pStream->Release();
486 return bRet; 484 return bRet;
487 } 485 }
488 FX_BOOL CXFA_DataExporter::Export(IFX_Stream* pStream, 486 FX_BOOL CXFA_DataExporter::Export(IFX_Stream* pStream,
489 CXFA_Node* pNode, 487 CXFA_Node* pNode,
490 uint32_t dwFlag, 488 uint32_t dwFlag,
491 const FX_CHAR* pChecksum) { 489 const FX_CHAR* pChecksum) {
492 CFDE_XMLDoc* pXMLDoc = m_pDocument->GetParser()->GetXMLDoc(); 490 CFDE_XMLDoc* pXMLDoc = m_pDocument->GetParser()->GetXMLDoc();
493 if (pNode->GetObjectType() == XFA_OBJECTTYPE_ModelNode) { 491 if (pNode->IsModelNode()) {
494 switch (pNode->GetPacketID()) { 492 switch (pNode->GetPacketID()) {
495 case XFA_XDPPACKET_XDP: { 493 case XFA_XDPPACKET_XDP: {
496 static const FX_WCHAR s_pwsPreamble[] = 494 static const FX_WCHAR s_pwsPreamble[] =
497 L"<xdp:xdp xmlns:xdp=\"http://ns.adobe.com/xdp/\">"; 495 L"<xdp:xdp xmlns:xdp=\"http://ns.adobe.com/xdp/\">";
498 pStream->WriteString(s_pwsPreamble, FXSYS_wcslen(s_pwsPreamble)); 496 pStream->WriteString(s_pwsPreamble, FXSYS_wcslen(s_pwsPreamble));
499 for (CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); 497 for (CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
500 pChild; pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { 498 pChild; pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) {
501 Export(pStream, pChild, dwFlag, pChecksum); 499 Export(pStream, pChild, dwFlag, pChecksum);
502 } 500 }
503 static const FX_WCHAR s_pwsPostamble[] = L"</xdp:xdp\n>"; 501 static const FX_WCHAR s_pwsPostamble[] = L"</xdp:xdp\n>";
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 pXMLElement->RemoveAttribute(L"xfa:dataNode"); 570 pXMLElement->RemoveAttribute(L"xfa:dataNode");
573 } 571 }
574 } else { 572 } else {
575 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode(); 573 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode();
576 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element); 574 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element);
577 static_cast<CFDE_XMLElement*>(pXMLNode)->SetString(L"xfa:dataNode", 575 static_cast<CFDE_XMLElement*>(pXMLNode)->SetString(L"xfa:dataNode",
578 L"dataGroup"); 576 L"dataGroup");
579 } 577 }
580 } 578 }
581 } 579 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698