14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_validate.h" 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/xfa_object.h" 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Validate::CXFA_Validate(CXFA_Node* pNode) : CXFA_Data(pNode) {} 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Validate::GetFormatTest() { 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pNode->GetEnum(XFA_ATTRIBUTE_FormatTest); 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Validate::SetTestValue(int32_t iType, 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsValue, 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM eName) { 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const XFA_ATTRIBUTEENUMINFO* pInfo = 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_GetAttributeEnumByName(wsValue.AsStringC()); 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pInfo) 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eName = pInfo->eName; 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pNode->SetEnum((XFA_ATTRIBUTE)iType, eName, false); 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_Validate::SetNullTest(CFX_WideString wsValue) { 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return SetTestValue(XFA_ATTRIBUTE_NullTest, wsValue, 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTEENUM_Disabled); 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Validate::GetNullTest() { 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pNode->GetEnum(XFA_ATTRIBUTE_NullTest); 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_Validate::GetScriptTest() { 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pNode->GetEnum(XFA_ATTRIBUTE_ScriptTest); 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Validate::GetMessageText(CFX_WideString& wsMessage, 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsMessageType) { 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_Element::Message, false); 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode) 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pItemNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; pItemNode; 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pItemNode->GetElementType() != XFA_Element::Text) 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsName; 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItemNode->TryCData(XFA_ATTRIBUTE_Name, wsName); 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsName.IsEmpty() || wsName == wsMessageType) { 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItemNode->TryContent(wsMessage); 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Validate::SetFormatMessageText(CFX_WideString wsMessage) { 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetMessageText(wsMessage, L"formatTest"); 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Validate::GetFormatMessageText(CFX_WideString& wsMessage) { 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetMessageText(wsMessage, L"formatTest"); 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Validate::SetNullMessageText(CFX_WideString wsMessage) { 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetMessageText(wsMessage, L"nullTest"); 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Validate::GetNullMessageText(CFX_WideString& wsMessage) { 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetMessageText(wsMessage, L"nullTest"); 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Validate::SetMessageText(CFX_WideString& wsMessage, 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& wsMessageType) { 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_Element::Message, true); 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode) 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pItemNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild); 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (; pItemNode; 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pItemNode->GetElementType() != XFA_Element::Text) 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC wsName; 924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItemNode->TryCData(XFA_ATTRIBUTE_Name, wsName); 934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsName.IsEmpty() || wsName == wsMessageType) { 944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pItemNode->SetContent(wsMessage, wsMessage, false); 954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pTextNode = pNode->CreateSamePacketNode(XFA_Element::Text); 994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->InsertChild(pTextNode); 1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pTextNode->SetCData(XFA_ATTRIBUTE_Name, wsMessageType, false); 1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pTextNode->SetContent(wsMessage, wsMessage, false); 1024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Validate::GetScriptMessageText(CFX_WideString& wsMessage) { 1054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann GetMessageText(wsMessage, L"scriptTest"); 1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Validate::SetScriptMessageText(CFX_WideString wsMessage) { 1094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann SetMessageText(wsMessage, L"scriptTest"); 1104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_Validate::GetPicture(CFX_WideString& wsPicture) { 1134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_Element::Picture)) 1144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode->TryContent(wsPicture); 1154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Script CXFA_Validate::GetScript() { 1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CXFA_Script(m_pNode->GetChild(0, XFA_Element::Script)); 1194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 120