Chromium Code Reviews| 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 |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 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" | 24 #include "xfa/fxfa/parser/xfa_parser.h" |
| 25 #include "xfa/fxfa/parser/xfa_parser_imp.h" | 25 #include "xfa/fxfa/parser/xfa_parser_imp.h" |
| 26 #include "xfa/fxfa/parser/xfa_script.h" | 26 #include "xfa/fxfa/parser/xfa_script.h" |
| 27 #include "xfa/fxfa/parser/xfa_script_imp.h" | 27 #include "xfa/fxfa/parser/xfa_script_imp.h" |
| 28 #include "xfa/fxfa/parser/xfa_utils.h" | 28 #include "xfa/fxfa/parser/xfa_utils.h" |
| 29 #include "xfa/fxjse/cfxjse_arguments.h" | 29 #include "xfa/fxjse/cfxjse_arguments.h" |
| 30 | 30 |
| 31 namespace { | |
| 32 | |
| 33 void XFA_DeleteWideString(void* pData) { | |
| 34 delete static_cast<CFX_WideString*>(pData); | |
| 35 } | |
| 36 | |
| 37 void XFA_CopyWideString(void*& pData) { | |
| 38 if (pData) { | |
| 39 CFX_WideString* pNewData = new CFX_WideString(*(CFX_WideString*)pData); | |
| 40 pData = pNewData; | |
| 41 } | |
| 42 } | |
| 43 | |
| 44 XFA_MAPDATABLOCKCALLBACKINFO deleteWideStringCallBack = {XFA_DeleteWideString, | |
|
Tom Sepez
2016/05/26 23:55:04
nit: const FA_MAPDATABLOCKCALLBACKINFO
Wei Li
2016/05/27 00:51:45
Let's defer this change since it requires changing
| |
| 45 XFA_CopyWideString}; | |
| 46 | |
| 47 XFA_OBJECTTYPE XFA_GetElementObjectType(XFA_ELEMENT eElement) { | |
| 48 return (XFA_OBJECTTYPE)XFA_GetElementByID(eElement)->eObjectType; | |
|
Tom Sepez
2016/05/26 23:55:04
nit: static cast.
Wei Li
2016/05/27 00:51:46
Done.
| |
| 49 } | |
| 50 | |
| 51 void XFA_DataNodeDeleteBindItem(void* pData) { | |
| 52 delete static_cast<CXFA_NodeArray*>(pData); | |
| 53 } | |
| 54 | |
| 55 XFA_MAPDATABLOCKCALLBACKINFO deleteBindItemCallBack = { | |
|
Tom Sepez
2016/05/26 23:55:03
const XFA_MAPDATABLOCKCALLBACKINFO
Wei Li
2016/05/27 00:51:45
Let's defer this since it requires changing SetObj
| |
| 56 XFA_DataNodeDeleteBindItem, nullptr}; | |
| 57 | |
| 58 } // namespace | |
| 59 | |
| 31 CXFA_Object::CXFA_Object(CXFA_Document* pDocument, uint32_t uFlags) | 60 CXFA_Object::CXFA_Object(CXFA_Document* pDocument, uint32_t uFlags) |
| 32 : m_pDocument(pDocument), m_uFlags(uFlags) {} | 61 : m_pDocument(pDocument), m_uFlags(uFlags) {} |
| 62 | |
| 33 void CXFA_Object::GetClassName(CFX_WideStringC& wsName) const { | 63 void CXFA_Object::GetClassName(CFX_WideStringC& wsName) const { |
| 34 wsName = XFA_GetElementByID(GetClassID())->pName; | 64 wsName = XFA_GetElementByID(GetClassID())->pName; |
| 35 } | 65 } |
| 66 | |
| 36 uint32_t CXFA_Object::GetClassHashCode() const { | 67 uint32_t CXFA_Object::GetClassHashCode() const { |
| 37 return XFA_GetElementByID(GetClassID())->uHash; | 68 return XFA_GetElementByID(GetClassID())->uHash; |
| 38 } | 69 } |
| 70 | |
| 39 XFA_ELEMENT CXFA_Object::GetClassID() const { | 71 XFA_ELEMENT CXFA_Object::GetClassID() const { |
| 40 if (IsNode()) { | 72 if (IsNode()) |
| 41 return AsNode()->GetClassID(); | 73 return AsNode()->GetClassID(); |
| 42 } | 74 if (IsOrdinaryObject()) |
| 43 if (IsOrdinaryObject()) { | |
| 44 return AsOrdinaryObject()->GetClassID(); | 75 return AsOrdinaryObject()->GetClassID(); |
| 45 } | 76 if (IsNodeList()) |
| 46 if (IsNodeList()) { | |
| 47 return AsNodeList()->GetClassID(); | 77 return AsNodeList()->GetClassID(); |
| 48 } | 78 if (IsOrdinaryList()) |
| 49 if (IsOrdinaryList()) { | |
| 50 return XFA_ELEMENT_List; | 79 return XFA_ELEMENT_List; |
| 51 } | |
| 52 ASSERT(FALSE); | 80 ASSERT(FALSE); |
| 53 return (XFA_ELEMENT)0; | 81 return (XFA_ELEMENT)0; |
| 54 } | 82 } |
| 83 | |
| 55 void CXFA_Object::Script_ObjectClass_ClassName(CFXJSE_Value* pValue, | 84 void CXFA_Object::Script_ObjectClass_ClassName(CFXJSE_Value* pValue, |
| 56 FX_BOOL bSetting, | 85 FX_BOOL bSetting, |
| 57 XFA_ATTRIBUTE eAttribute) { | 86 XFA_ATTRIBUTE eAttribute) { |
| 58 if (!bSetting) { | 87 if (!bSetting) { |
| 59 CFX_WideStringC className; | 88 CFX_WideStringC className; |
| 60 GetClassName(className); | 89 GetClassName(className); |
| 61 FXJSE_Value_SetUTF8String( | 90 FXJSE_Value_SetUTF8String( |
| 62 pValue, | 91 pValue, |
| 63 FX_UTF8Encode(className.c_str(), className.GetLength()).AsStringC()); | 92 FX_UTF8Encode(className.c_str(), className.GetLength()).AsStringC()); |
| 64 } else { | 93 } else { |
| 65 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 94 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 66 } | 95 } |
| 67 } | 96 } |
| 97 | |
| 68 void CXFA_Object::ThrowScriptErrorMessage(int32_t iStringID, ...) { | 98 void CXFA_Object::ThrowScriptErrorMessage(int32_t iStringID, ...) { |
| 69 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); | 99 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); |
| 70 ASSERT(pAppProvider); | 100 ASSERT(pAppProvider); |
| 71 CFX_WideString wsFormat; | 101 CFX_WideString wsFormat; |
| 72 pAppProvider->LoadString(iStringID, wsFormat); | 102 pAppProvider->LoadString(iStringID, wsFormat); |
| 73 CFX_WideString wsMessage; | 103 CFX_WideString wsMessage; |
| 74 va_list arg_ptr; | 104 va_list arg_ptr; |
| 75 va_start(arg_ptr, iStringID); | 105 va_start(arg_ptr, iStringID); |
| 76 wsMessage.FormatV(wsFormat.c_str(), arg_ptr); | 106 wsMessage.FormatV(wsFormat.c_str(), arg_ptr); |
| 77 va_end(arg_ptr); | 107 va_end(arg_ptr); |
| 78 FXJSE_ThrowMessage( | 108 FXJSE_ThrowMessage( |
| 79 "", FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); | 109 "", FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); |
| 80 } | 110 } |
| 81 | 111 |
| 82 static void XFA_DeleteWideString(void* pData) { | |
| 83 delete static_cast<CFX_WideString*>(pData); | |
| 84 } | |
| 85 | |
| 86 static void XFA_CopyWideString(void*& pData) { | |
| 87 if (pData) { | |
| 88 CFX_WideString* pNewData = new CFX_WideString(*(CFX_WideString*)pData); | |
| 89 pData = pNewData; | |
| 90 } | |
| 91 } | |
| 92 static XFA_MAPDATABLOCKCALLBACKINFO deleteWideStringCallBack = { | |
| 93 XFA_DeleteWideString, XFA_CopyWideString}; | |
| 94 static XFA_OBJECTTYPE XFA_GetElementObjectType(XFA_ELEMENT eElement) { | |
| 95 return (XFA_OBJECTTYPE)XFA_GetElementByID(eElement)->eObjectType; | |
| 96 } | |
| 97 CXFA_Node::CXFA_Node(CXFA_Document* pDoc, | 112 CXFA_Node::CXFA_Node(CXFA_Document* pDoc, |
| 98 uint16_t ePacket, | 113 uint16_t ePacket, |
| 99 XFA_ELEMENT eElement) | 114 XFA_ELEMENT eElement) |
| 100 : CXFA_Object(pDoc, XFA_GetElementObjectType(eElement)), | 115 : CXFA_Object(pDoc, XFA_GetElementObjectType(eElement)), |
| 101 m_pNext(nullptr), | 116 m_pNext(nullptr), |
| 102 m_pChild(nullptr), | 117 m_pChild(nullptr), |
| 103 m_pLastChild(nullptr), | 118 m_pLastChild(nullptr), |
| 104 m_pParent(nullptr), | 119 m_pParent(nullptr), |
| 105 m_pXMLNode(nullptr), | 120 m_pXMLNode(nullptr), |
| 106 m_eNodeClass(eElement), | 121 m_eNodeClass(eElement), |
| 107 m_ePacket(ePacket), | 122 m_ePacket(ePacket), |
| 108 m_dwNameHash(0), | 123 m_dwNameHash(0), |
| 109 m_pAuxNode(nullptr), | 124 m_pAuxNode(nullptr), |
| 110 m_pMapModuleData(nullptr) { | 125 m_pMapModuleData(nullptr) { |
| 111 ASSERT(m_pDocument); | 126 ASSERT(m_pDocument); |
| 112 } | 127 } |
| 128 | |
| 113 CXFA_Node::~CXFA_Node() { | 129 CXFA_Node::~CXFA_Node() { |
| 114 ASSERT(m_pParent == NULL); | 130 ASSERT(!m_pParent); |
| 115 RemoveMapModuleKey(); | 131 RemoveMapModuleKey(); |
| 116 CXFA_Node *pNext, *pNode = m_pChild; | 132 CXFA_Node* pNext; |
|
Tom Sepez
2016/05/26 23:55:03
make pNode local to body of loop
Wei Li
2016/05/27 00:51:46
pNext? Done.
| |
| 133 CXFA_Node* pNode = m_pChild; | |
| 117 while (pNode) { | 134 while (pNode) { |
| 118 pNext = pNode->m_pNext; | 135 pNext = pNode->m_pNext; |
| 119 pNode->m_pParent = NULL; | 136 pNode->m_pParent = nullptr; |
| 120 delete pNode; | 137 delete pNode; |
| 121 pNode = pNext; | 138 pNode = pNext; |
| 122 } | 139 } |
| 123 if (m_pXMLNode && HasFlag(XFA_NODEFLAG_OwnXMLNode)) { | 140 if (m_pXMLNode && HasFlag(XFA_NODEFLAG_OwnXMLNode)) |
| 124 m_pXMLNode->Release(); | 141 m_pXMLNode->Release(); |
| 125 } | |
| 126 } | 142 } |
| 143 | |
| 127 CXFA_Node* CXFA_Node::Clone(FX_BOOL bRecursive) { | 144 CXFA_Node* CXFA_Node::Clone(FX_BOOL bRecursive) { |
| 128 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | 145 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); |
| 129 CXFA_Node* pClone = pFactory->CreateNode(m_ePacket, m_eNodeClass); | 146 CXFA_Node* pClone = pFactory->CreateNode(m_ePacket, m_eNodeClass); |
| 130 if (!pClone) { | 147 if (!pClone) |
| 131 return NULL; | 148 return nullptr; |
| 132 } | 149 |
| 133 MergeAllData(pClone); | 150 MergeAllData(pClone); |
| 134 pClone->UpdateNameHash(); | 151 pClone->UpdateNameHash(); |
| 135 if (IsNeedSavingXMLNode()) { | 152 if (IsNeedSavingXMLNode()) { |
| 136 CFDE_XMLNode* pCloneXML = NULL; | 153 CFDE_XMLNode* pCloneXML = nullptr; |
| 137 if (IsAttributeInXML()) { | 154 if (IsAttributeInXML()) { |
| 138 CFX_WideString wsName; | 155 CFX_WideString wsName; |
| 139 GetAttribute(XFA_ATTRIBUTE_Name, wsName, FALSE); | 156 GetAttribute(XFA_ATTRIBUTE_Name, wsName, FALSE); |
| 140 CFDE_XMLElement* pCloneXMLElement = new CFDE_XMLElement(wsName); | 157 CFDE_XMLElement* pCloneXMLElement = new CFDE_XMLElement(wsName); |
| 141 CFX_WideStringC wsValue = GetCData(XFA_ATTRIBUTE_Value); | 158 CFX_WideStringC wsValue = GetCData(XFA_ATTRIBUTE_Value); |
| 142 if (!wsValue.IsEmpty()) { | 159 if (!wsValue.IsEmpty()) { |
| 143 pCloneXMLElement->SetTextData(CFX_WideString(wsValue)); | 160 pCloneXMLElement->SetTextData(CFX_WideString(wsValue)); |
| 144 } | 161 } |
| 145 pCloneXML = pCloneXMLElement; | 162 pCloneXML = pCloneXMLElement; |
| 146 pCloneXMLElement = NULL; | 163 pCloneXMLElement = nullptr; |
| 147 pClone->SetEnum(XFA_ATTRIBUTE_Contains, XFA_ATTRIBUTEENUM_Unknown); | 164 pClone->SetEnum(XFA_ATTRIBUTE_Contains, XFA_ATTRIBUTEENUM_Unknown); |
| 148 } else { | 165 } else { |
| 149 pCloneXML = m_pXMLNode->Clone(FALSE); | 166 pCloneXML = m_pXMLNode->Clone(FALSE); |
| 150 } | 167 } |
| 151 pClone->SetXMLMappingNode(pCloneXML); | 168 pClone->SetXMLMappingNode(pCloneXML); |
| 152 pClone->SetFlag(XFA_NODEFLAG_OwnXMLNode, false); | 169 pClone->SetFlag(XFA_NODEFLAG_OwnXMLNode, false); |
| 153 } | 170 } |
| 154 if (bRecursive) { | 171 if (bRecursive) { |
| 155 for (CXFA_Node* pChild = GetNodeItem(XFA_NODEITEM_FirstChild); pChild; | 172 for (CXFA_Node* pChild = GetNodeItem(XFA_NODEITEM_FirstChild); pChild; |
| 156 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 173 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 157 pClone->InsertChild(pChild->Clone(bRecursive)); | 174 pClone->InsertChild(pChild->Clone(bRecursive)); |
| 158 } | 175 } |
| 159 } | 176 } |
| 160 pClone->SetFlag(XFA_NODEFLAG_Initialized, true); | 177 pClone->SetFlag(XFA_NODEFLAG_Initialized, true); |
| 161 pClone->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); | 178 pClone->SetObject(XFA_ATTRIBUTE_BindingNode, nullptr); |
| 162 return pClone; | 179 return pClone; |
| 163 } | 180 } |
| 181 | |
| 164 CXFA_Node* CXFA_Node::GetNodeItem(XFA_NODEITEM eItem) const { | 182 CXFA_Node* CXFA_Node::GetNodeItem(XFA_NODEITEM eItem) const { |
| 165 switch (eItem) { | 183 switch (eItem) { |
| 166 case XFA_NODEITEM_NextSibling: | 184 case XFA_NODEITEM_NextSibling: |
| 167 return m_pNext; | 185 return m_pNext; |
| 168 case XFA_NODEITEM_FirstChild: | 186 case XFA_NODEITEM_FirstChild: |
| 169 return m_pChild; | 187 return m_pChild; |
| 170 case XFA_NODEITEM_Parent: | 188 case XFA_NODEITEM_Parent: |
| 171 return m_pParent; | 189 return m_pParent; |
| 172 case XFA_NODEITEM_PrevSibling: | 190 case XFA_NODEITEM_PrevSibling: |
| 173 if (m_pParent) { | 191 if (m_pParent) { |
| 174 CXFA_Node* pSibling = m_pParent->m_pChild; | 192 CXFA_Node* pSibling = m_pParent->m_pChild; |
| 175 CXFA_Node* pPrev = NULL; | 193 CXFA_Node* pPrev = nullptr; |
| 176 while (pSibling && pSibling != this) { | 194 while (pSibling && pSibling != this) { |
| 177 pPrev = pSibling; | 195 pPrev = pSibling; |
| 178 pSibling = pSibling->m_pNext; | 196 pSibling = pSibling->m_pNext; |
| 179 } | 197 } |
| 180 return pPrev; | 198 return pPrev; |
| 181 } | 199 } |
| 182 return NULL; | 200 return nullptr; |
| 183 default: | 201 default: |
| 184 break; | 202 break; |
| 185 } | 203 } |
| 186 return NULL; | 204 return nullptr; |
| 187 } | 205 } |
| 206 | |
| 188 CXFA_Node* CXFA_Node::GetNodeItem(XFA_NODEITEM eItem, | 207 CXFA_Node* CXFA_Node::GetNodeItem(XFA_NODEITEM eItem, |
| 189 XFA_OBJECTTYPE eType) const { | 208 XFA_OBJECTTYPE eType) const { |
| 190 CXFA_Node* pNode = NULL; | 209 CXFA_Node* pNode = nullptr; |
| 191 switch (eItem) { | 210 switch (eItem) { |
| 192 case XFA_NODEITEM_NextSibling: | 211 case XFA_NODEITEM_NextSibling: |
| 193 pNode = m_pNext; | 212 pNode = m_pNext; |
| 194 if (eType != XFA_OBJECTTYPEMASK) { | 213 if (eType != XFA_OBJECTTYPEMASK) { |
| 195 while (pNode && pNode->GetObjectType() != eType) { | 214 while (pNode && pNode->GetObjectType() != eType) |
| 196 pNode = pNode->m_pNext; | 215 pNode = pNode->m_pNext; |
| 197 } | |
| 198 } | 216 } |
| 199 break; | 217 break; |
| 200 case XFA_NODEITEM_FirstChild: | 218 case XFA_NODEITEM_FirstChild: |
| 201 pNode = m_pChild; | 219 pNode = m_pChild; |
| 202 if (eType != XFA_OBJECTTYPEMASK) { | 220 if (eType != XFA_OBJECTTYPEMASK) { |
| 203 while (pNode && pNode->GetObjectType() != eType) { | 221 while (pNode && pNode->GetObjectType() != eType) |
| 204 pNode = pNode->m_pNext; | 222 pNode = pNode->m_pNext; |
| 205 } | |
| 206 } | 223 } |
| 207 break; | 224 break; |
| 208 case XFA_NODEITEM_Parent: | 225 case XFA_NODEITEM_Parent: |
| 209 pNode = m_pParent; | 226 pNode = m_pParent; |
| 210 if (eType != XFA_OBJECTTYPEMASK) { | 227 if (eType != XFA_OBJECTTYPEMASK) { |
| 211 while (pNode && pNode->GetObjectType() != eType) { | 228 while (pNode && pNode->GetObjectType() != eType) |
| 212 pNode = pNode->m_pParent; | 229 pNode = pNode->m_pParent; |
| 213 } | |
| 214 } | 230 } |
| 215 break; | 231 break; |
| 216 case XFA_NODEITEM_PrevSibling: | 232 case XFA_NODEITEM_PrevSibling: |
| 217 if (m_pParent) { | 233 if (m_pParent) { |
| 218 CXFA_Node* pSibling = m_pParent->m_pChild; | 234 CXFA_Node* pSibling = m_pParent->m_pChild; |
| 219 while (pSibling && pSibling != this) { | 235 while (pSibling && pSibling != this) { |
| 220 if (eType == XFA_OBJECTTYPEMASK || | 236 if (eType == XFA_OBJECTTYPEMASK || |
| 221 eType == pSibling->GetObjectType()) { | 237 eType == pSibling->GetObjectType()) { |
| 222 pNode = pSibling; | 238 pNode = pSibling; |
| 223 } | 239 } |
| 224 pSibling = pSibling->m_pNext; | 240 pSibling = pSibling->m_pNext; |
| 225 } | 241 } |
| 226 } | 242 } |
| 227 break; | 243 break; |
| 228 default: | 244 default: |
| 229 break; | 245 break; |
| 230 } | 246 } |
| 231 return pNode; | 247 return pNode; |
| 232 } | 248 } |
| 249 | |
| 233 int32_t CXFA_Node::GetNodeList(CXFA_NodeArray& nodes, | 250 int32_t CXFA_Node::GetNodeList(CXFA_NodeArray& nodes, |
| 234 uint32_t dwTypeFilter, | 251 uint32_t dwTypeFilter, |
| 235 XFA_ELEMENT eElementFilter, | 252 XFA_ELEMENT eElementFilter, |
| 236 int32_t iLevel) { | 253 int32_t iLevel) { |
| 237 if (--iLevel < 0) { | 254 if (--iLevel < 0) { |
| 238 return nodes.GetSize(); | 255 return nodes.GetSize(); |
| 239 } | 256 } |
| 240 if (eElementFilter != XFA_ELEMENT_UNKNOWN) { | 257 if (eElementFilter != XFA_ELEMENT_UNKNOWN) { |
| 241 CXFA_Node* pChild = m_pChild; | 258 CXFA_Node* pChild = m_pChild; |
| 242 while (pChild) { | 259 while (pChild) { |
| 243 if (pChild->GetClassID() == eElementFilter) { | 260 if (pChild->GetClassID() == eElementFilter) { |
| 244 nodes.Add(pChild); | 261 nodes.Add(pChild); |
| 245 if (iLevel > 0) { | 262 if (iLevel > 0) { |
| 246 GetNodeList(nodes, dwTypeFilter, eElementFilter, iLevel); | 263 GetNodeList(nodes, dwTypeFilter, eElementFilter, iLevel); |
| 247 } | 264 } |
| 248 } | 265 } |
| 249 pChild = pChild->m_pNext; | 266 pChild = pChild->m_pNext; |
| 250 } | 267 } |
| 251 } else if (dwTypeFilter == | 268 } else if (dwTypeFilter == |
| 252 (XFA_NODEFILTER_Children | XFA_NODEFILTER_Properties)) { | 269 (XFA_NODEFILTER_Children | XFA_NODEFILTER_Properties)) { |
| 253 CXFA_Node* pChild = m_pChild; | 270 CXFA_Node* pChild = m_pChild; |
| 254 while (pChild) { | 271 while (pChild) { |
| 255 nodes.Add(pChild); | 272 nodes.Add(pChild); |
| 256 if (iLevel > 0) { | 273 if (iLevel > 0) { |
| 257 GetNodeList(nodes, dwTypeFilter, eElementFilter, iLevel); | 274 GetNodeList(nodes, dwTypeFilter, eElementFilter, iLevel); |
| 258 } | 275 } |
| 259 pChild = pChild->m_pNext; | 276 pChild = pChild->m_pNext; |
| 260 } | 277 } |
| 261 } else if (dwTypeFilter != 0) { | 278 } else if (dwTypeFilter != 0) { |
| 262 FX_BOOL bFilterChildren = (dwTypeFilter & XFA_NODEFILTER_Children) != 0; | 279 bool bFilterChildren = !!(dwTypeFilter & XFA_NODEFILTER_Children); |
|
Tom Sepez
2016/05/26 23:55:04
nice.
| |
| 263 FX_BOOL bFilterProperties = (dwTypeFilter & XFA_NODEFILTER_Properties) != 0; | 280 bool bFilterProperties = !!(dwTypeFilter & XFA_NODEFILTER_Properties); |
| 264 FX_BOOL bFilterOneOfProperties = | 281 bool bFilterOneOfProperties = |
| 265 (dwTypeFilter & XFA_NODEFILTER_OneOfProperty) != 0; | 282 !!(dwTypeFilter & XFA_NODEFILTER_OneOfProperty); |
| 266 CXFA_Node* pChild = m_pChild; | 283 CXFA_Node* pChild = m_pChild; |
| 267 while (pChild) { | 284 while (pChild) { |
| 268 const XFA_PROPERTY* pProperty = XFA_GetPropertyOfElement( | 285 const XFA_PROPERTY* pProperty = XFA_GetPropertyOfElement( |
| 269 GetClassID(), pChild->GetClassID(), XFA_XDPPACKET_UNKNOWN); | 286 GetClassID(), pChild->GetClassID(), XFA_XDPPACKET_UNKNOWN); |
| 270 if (pProperty) { | 287 if (pProperty) { |
| 271 if (bFilterProperties) { | 288 if (bFilterProperties) { |
| 272 nodes.Add(pChild); | 289 nodes.Add(pChild); |
| 273 } else if (bFilterOneOfProperties && | 290 } else if (bFilterOneOfProperties && |
| 274 (pProperty->uFlags & XFA_PROPERTYFLAG_OneOf)) { | 291 (pProperty->uFlags & XFA_PROPERTYFLAG_OneOf)) { |
| 275 nodes.Add(pChild); | 292 nodes.Add(pChild); |
| 276 } else if (bFilterChildren && | 293 } else if (bFilterChildren && |
| 277 (pChild->GetClassID() == XFA_ELEMENT_Variables || | 294 (pChild->GetClassID() == XFA_ELEMENT_Variables || |
| 278 pChild->GetClassID() == XFA_ELEMENT_PageSet)) { | 295 pChild->GetClassID() == XFA_ELEMENT_PageSet)) { |
| 279 nodes.Add(pChild); | 296 nodes.Add(pChild); |
| 280 } | 297 } |
| 281 } else { | 298 } else if (bFilterChildren) { |
| 282 if (bFilterChildren) { | 299 nodes.Add(pChild); |
| 283 nodes.Add(pChild); | |
| 284 } | |
| 285 } | 300 } |
| 286 pChild = pChild->m_pNext; | 301 pChild = pChild->m_pNext; |
| 287 } | 302 } |
| 288 if (bFilterOneOfProperties && nodes.GetSize() < 1) { | 303 if (bFilterOneOfProperties && nodes.GetSize() < 1) { |
| 289 int32_t iProperties = 0; | 304 int32_t iProperties = 0; |
| 290 const XFA_PROPERTY* pProperty = | 305 const XFA_PROPERTY* pProperty = |
| 291 XFA_GetElementProperties(GetClassID(), iProperties); | 306 XFA_GetElementProperties(GetClassID(), iProperties); |
| 292 if (pProperty == NULL || iProperties < 1) { | 307 if (!pProperty || iProperties < 1) |
| 293 return 0; | 308 return 0; |
| 294 } | |
| 295 for (int32_t i = 0; i < iProperties; i++) { | 309 for (int32_t i = 0; i < iProperties; i++) { |
| 296 if (pProperty[i].uFlags & XFA_PROPERTYFLAG_DefaultOneOf) { | 310 if (pProperty[i].uFlags & XFA_PROPERTYFLAG_DefaultOneOf) { |
| 297 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | 311 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); |
| 298 const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(GetPacketID()); | 312 const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(GetPacketID()); |
| 299 CXFA_Node* pNewNode = | 313 CXFA_Node* pNewNode = |
| 300 pFactory->CreateNode(pPacket, (XFA_ELEMENT)pProperty[i].eName); | 314 pFactory->CreateNode(pPacket, (XFA_ELEMENT)pProperty[i].eName); |
| 301 if (!pNewNode) { | 315 if (!pNewNode) |
| 302 break; | 316 break; |
| 303 } | 317 InsertChild(pNewNode, nullptr); |
| 304 InsertChild(pNewNode, NULL); | |
| 305 pNewNode->SetFlag(XFA_NODEFLAG_Initialized, true); | 318 pNewNode->SetFlag(XFA_NODEFLAG_Initialized, true); |
| 306 nodes.Add(pNewNode); | 319 nodes.Add(pNewNode); |
| 307 break; | 320 break; |
| 308 } | 321 } |
| 309 } | 322 } |
| 310 } | 323 } |
| 311 } | 324 } |
| 312 return nodes.GetSize(); | 325 return nodes.GetSize(); |
| 313 } | 326 } |
| 327 | |
| 314 CXFA_Node* CXFA_Node::CreateSamePacketNode(XFA_ELEMENT eElement, | 328 CXFA_Node* CXFA_Node::CreateSamePacketNode(XFA_ELEMENT eElement, |
| 315 uint32_t dwFlags) { | 329 uint32_t dwFlags) { |
| 316 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | 330 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); |
| 317 CXFA_Node* pNode = pFactory->CreateNode(m_ePacket, eElement); | 331 CXFA_Node* pNode = pFactory->CreateNode(m_ePacket, eElement); |
| 318 pNode->SetFlag(dwFlags, true); | 332 pNode->SetFlag(dwFlags, true); |
| 319 return pNode; | 333 return pNode; |
| 320 } | 334 } |
| 335 | |
| 321 CXFA_Node* CXFA_Node::CloneTemplateToForm(FX_BOOL bRecursive) { | 336 CXFA_Node* CXFA_Node::CloneTemplateToForm(FX_BOOL bRecursive) { |
| 322 ASSERT(m_ePacket == XFA_XDPPACKET_Template); | 337 ASSERT(m_ePacket == XFA_XDPPACKET_Template); |
| 323 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | 338 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); |
| 324 CXFA_Node* pClone = pFactory->CreateNode(XFA_XDPPACKET_Form, m_eNodeClass); | 339 CXFA_Node* pClone = pFactory->CreateNode(XFA_XDPPACKET_Form, m_eNodeClass); |
| 325 if (!pClone) { | 340 if (!pClone) |
| 326 return NULL; | 341 return nullptr; |
| 327 } | 342 |
| 328 pClone->SetTemplateNode(this); | 343 pClone->SetTemplateNode(this); |
| 329 pClone->UpdateNameHash(); | 344 pClone->UpdateNameHash(); |
| 330 pClone->SetXMLMappingNode(GetXMLMappingNode()); | 345 pClone->SetXMLMappingNode(GetXMLMappingNode()); |
| 331 if (bRecursive) { | 346 if (bRecursive) { |
| 332 for (CXFA_Node* pChild = GetNodeItem(XFA_NODEITEM_FirstChild); pChild; | 347 for (CXFA_Node* pChild = GetNodeItem(XFA_NODEITEM_FirstChild); pChild; |
| 333 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 348 pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 334 pClone->InsertChild(pChild->CloneTemplateToForm(bRecursive)); | 349 pClone->InsertChild(pChild->CloneTemplateToForm(bRecursive)); |
| 335 } | 350 } |
| 336 } | 351 } |
| 337 pClone->SetFlag(XFA_NODEFLAG_Initialized, true); | 352 pClone->SetFlag(XFA_NODEFLAG_Initialized, true); |
| 338 return pClone; | 353 return pClone; |
| 339 } | 354 } |
| 340 | 355 |
| 341 CXFA_Node* CXFA_Node::GetTemplateNode() const { | 356 CXFA_Node* CXFA_Node::GetTemplateNode() const { |
| 342 return m_pAuxNode; | 357 return m_pAuxNode; |
| 343 } | 358 } |
| 344 | 359 |
| 345 void CXFA_Node::SetTemplateNode(CXFA_Node* pTemplateNode) { | 360 void CXFA_Node::SetTemplateNode(CXFA_Node* pTemplateNode) { |
| 346 m_pAuxNode = pTemplateNode; | 361 m_pAuxNode = pTemplateNode; |
| 347 } | 362 } |
| 363 | |
| 348 CXFA_Node* CXFA_Node::GetBindData() { | 364 CXFA_Node* CXFA_Node::GetBindData() { |
| 349 ASSERT(GetPacketID() == XFA_XDPPACKET_Form); | 365 ASSERT(GetPacketID() == XFA_XDPPACKET_Form); |
| 350 return static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); | 366 return static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); |
| 351 } | 367 } |
| 368 | |
| 352 int32_t CXFA_Node::GetBindItems(CXFA_NodeArray& formItems) { | 369 int32_t CXFA_Node::GetBindItems(CXFA_NodeArray& formItems) { |
| 353 if (m_uFlags & XFA_NODEFLAG_BindFormItems) { | 370 if (m_uFlags & XFA_NODEFLAG_BindFormItems) { |
| 354 CXFA_NodeArray* pItems = NULL; | 371 CXFA_NodeArray* pItems = nullptr; |
| 355 TryObject(XFA_ATTRIBUTE_BindingNode, (void*&)pItems); | 372 TryObject(XFA_ATTRIBUTE_BindingNode, (void*&)pItems); |
| 356 formItems.Copy(*pItems); | 373 formItems.Copy(*pItems); |
| 357 return formItems.GetSize(); | 374 return formItems.GetSize(); |
| 358 } | 375 } |
| 359 CXFA_Node* pFormNode = | 376 CXFA_Node* pFormNode = |
| 360 static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); | 377 static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); |
| 361 if (pFormNode) { | 378 if (pFormNode) |
| 362 formItems.Add(pFormNode); | 379 formItems.Add(pFormNode); |
| 363 } | |
| 364 return formItems.GetSize(); | 380 return formItems.GetSize(); |
| 365 } | 381 } |
| 366 | 382 |
| 367 static void XFA_DataNodeDeleteBindItem(void* pData) { | |
| 368 delete static_cast<CXFA_NodeArray*>(pData); | |
| 369 } | |
| 370 | |
| 371 static XFA_MAPDATABLOCKCALLBACKINFO deleteBindItemCallBack = { | |
| 372 XFA_DataNodeDeleteBindItem, NULL}; | |
| 373 int32_t CXFA_Node::AddBindItem(CXFA_Node* pFormNode) { | 383 int32_t CXFA_Node::AddBindItem(CXFA_Node* pFormNode) { |
| 374 ASSERT(pFormNode); | 384 ASSERT(pFormNode); |
| 375 if (m_uFlags & XFA_NODEFLAG_BindFormItems) { | 385 if (m_uFlags & XFA_NODEFLAG_BindFormItems) { |
| 376 CXFA_NodeArray* pItems = NULL; | 386 CXFA_NodeArray* pItems = nullptr; |
| 377 TryObject(XFA_ATTRIBUTE_BindingNode, (void*&)pItems); | 387 TryObject(XFA_ATTRIBUTE_BindingNode, (void*&)pItems); |
| 378 ASSERT(pItems); | 388 ASSERT(pItems); |
| 379 if (pItems->Find(pFormNode) < 0) { | 389 if (pItems->Find(pFormNode) < 0) { |
| 380 pItems->Add(pFormNode); | 390 pItems->Add(pFormNode); |
| 381 } | 391 } |
| 382 return pItems->GetSize(); | 392 return pItems->GetSize(); |
| 383 } | 393 } |
| 384 CXFA_Node* pOldFormItem = | 394 CXFA_Node* pOldFormItem = |
| 385 static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); | 395 static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); |
| 386 if (!pOldFormItem) { | 396 if (!pOldFormItem) { |
| 387 SetObject(XFA_ATTRIBUTE_BindingNode, pFormNode); | 397 SetObject(XFA_ATTRIBUTE_BindingNode, pFormNode); |
| 388 return 1; | 398 return 1; |
| 389 } else if (pOldFormItem == pFormNode) { | 399 } else if (pOldFormItem == pFormNode) { |
| 390 return 1; | 400 return 1; |
| 391 } | 401 } |
| 392 CXFA_NodeArray* pItems = new CXFA_NodeArray; | 402 CXFA_NodeArray* pItems = new CXFA_NodeArray; |
| 393 SetObject(XFA_ATTRIBUTE_BindingNode, pItems, &deleteBindItemCallBack); | 403 SetObject(XFA_ATTRIBUTE_BindingNode, pItems, &deleteBindItemCallBack); |
| 394 pItems->Add(pOldFormItem); | 404 pItems->Add(pOldFormItem); |
| 395 pItems->Add(pFormNode); | 405 pItems->Add(pFormNode); |
| 396 m_uFlags |= XFA_NODEFLAG_BindFormItems; | 406 m_uFlags |= XFA_NODEFLAG_BindFormItems; |
| 397 return 2; | 407 return 2; |
| 398 } | 408 } |
| 409 | |
| 399 int32_t CXFA_Node::RemoveBindItem(CXFA_Node* pFormNode) { | 410 int32_t CXFA_Node::RemoveBindItem(CXFA_Node* pFormNode) { |
| 400 if (m_uFlags & XFA_NODEFLAG_BindFormItems) { | 411 if (m_uFlags & XFA_NODEFLAG_BindFormItems) { |
| 401 CXFA_NodeArray* pItems = NULL; | 412 CXFA_NodeArray* pItems = nullptr; |
| 402 TryObject(XFA_ATTRIBUTE_BindingNode, (void*&)pItems); | 413 TryObject(XFA_ATTRIBUTE_BindingNode, (void*&)pItems); |
| 403 ASSERT(pItems); | 414 ASSERT(pItems); |
| 404 int32_t iIndex = pItems->Find(pFormNode); | 415 int32_t iIndex = pItems->Find(pFormNode); |
| 405 int32_t iCount = pItems->GetSize(); | 416 int32_t iCount = pItems->GetSize(); |
| 406 if (iIndex >= 0) { | 417 if (iIndex >= 0) { |
| 407 if (iIndex != iCount - 1) { | 418 if (iIndex != iCount - 1) |
| 408 pItems->SetAt(iIndex, pItems->GetAt(iCount - 1)); | 419 pItems->SetAt(iIndex, pItems->GetAt(iCount - 1)); |
| 409 } | |
| 410 pItems->RemoveAt(iCount - 1); | 420 pItems->RemoveAt(iCount - 1); |
| 411 if (iCount == 2) { | 421 if (iCount == 2) { |
| 412 CXFA_Node* pLastFormNode = pItems->GetAt(0); | 422 CXFA_Node* pLastFormNode = pItems->GetAt(0); |
| 413 SetObject(XFA_ATTRIBUTE_BindingNode, pLastFormNode); | 423 SetObject(XFA_ATTRIBUTE_BindingNode, pLastFormNode); |
| 414 m_uFlags &= ~XFA_NODEFLAG_BindFormItems; | 424 m_uFlags &= ~XFA_NODEFLAG_BindFormItems; |
| 415 } | 425 } |
| 416 iCount--; | 426 iCount--; |
| 417 } | 427 } |
| 418 return iCount; | 428 return iCount; |
| 419 } | 429 } |
| 420 CXFA_Node* pOldFormItem = | 430 CXFA_Node* pOldFormItem = |
| 421 static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); | 431 static_cast<CXFA_Node*>(GetObject(XFA_ATTRIBUTE_BindingNode)); |
| 422 if (pOldFormItem == pFormNode) { | 432 if (pOldFormItem == pFormNode) { |
| 423 SetObject(XFA_ATTRIBUTE_BindingNode, NULL); | 433 SetObject(XFA_ATTRIBUTE_BindingNode, nullptr); |
| 424 pOldFormItem = NULL; | 434 pOldFormItem = nullptr; |
| 425 } | 435 } |
| 426 return pOldFormItem == NULL ? 0 : 1; | 436 return pOldFormItem ? 1 : 0; |
| 427 } | 437 } |
| 438 | |
| 428 FX_BOOL CXFA_Node::HasBindItem() { | 439 FX_BOOL CXFA_Node::HasBindItem() { |
| 429 return (GetPacketID() == XFA_XDPPACKET_Datasets) && | 440 return GetPacketID() == XFA_XDPPACKET_Datasets && |
| 430 GetObject(XFA_ATTRIBUTE_BindingNode) != NULL; | 441 GetObject(XFA_ATTRIBUTE_BindingNode); |
| 431 } | 442 } |
| 443 | |
| 432 CXFA_WidgetData* CXFA_Node::GetWidgetData() { | 444 CXFA_WidgetData* CXFA_Node::GetWidgetData() { |
| 433 return (CXFA_WidgetData*)GetObject(XFA_ATTRIBUTE_WidgetData); | 445 return (CXFA_WidgetData*)GetObject(XFA_ATTRIBUTE_WidgetData); |
| 434 } | 446 } |
| 447 | |
| 435 CXFA_WidgetData* CXFA_Node::GetContainerWidgetData() { | 448 CXFA_WidgetData* CXFA_Node::GetContainerWidgetData() { |
| 436 if (GetPacketID() != XFA_XDPPACKET_Form) { | 449 if (GetPacketID() != XFA_XDPPACKET_Form) |
| 437 return NULL; | 450 return nullptr; |
| 438 } | |
| 439 XFA_ELEMENT classID = GetClassID(); | 451 XFA_ELEMENT classID = GetClassID(); |
| 440 if (classID == XFA_ELEMENT_ExclGroup) { | 452 if (classID == XFA_ELEMENT_ExclGroup) |
| 441 return NULL; | 453 return nullptr; |
| 442 } | |
| 443 CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); | 454 CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); |
| 444 if (pParentNode && pParentNode->GetClassID() == XFA_ELEMENT_ExclGroup) { | 455 if (pParentNode && pParentNode->GetClassID() == XFA_ELEMENT_ExclGroup) |
| 445 return NULL; | 456 return nullptr; |
| 446 } | 457 |
| 447 if (classID == XFA_ELEMENT_Field) { | 458 if (classID == XFA_ELEMENT_Field) { |
| 448 CXFA_WidgetData* pFieldWidgetData = GetWidgetData(); | 459 CXFA_WidgetData* pFieldWidgetData = GetWidgetData(); |
| 449 if (pFieldWidgetData && | 460 if (pFieldWidgetData && |
| 450 pFieldWidgetData->GetChoiceListOpen() == | 461 pFieldWidgetData->GetChoiceListOpen() == |
| 451 XFA_ATTRIBUTEENUM_MultiSelect) { | 462 XFA_ATTRIBUTEENUM_MultiSelect) { |
| 452 return NULL; | 463 return nullptr; |
| 453 } else { | 464 } else { |
| 454 CFX_WideString wsPicture; | 465 CFX_WideString wsPicture; |
| 455 if (pFieldWidgetData) { | 466 if (pFieldWidgetData) { |
| 456 pFieldWidgetData->GetPictureContent(wsPicture, | 467 pFieldWidgetData->GetPictureContent(wsPicture, |
| 457 XFA_VALUEPICTURE_DataBind); | 468 XFA_VALUEPICTURE_DataBind); |
| 458 } | 469 } |
| 459 if (!wsPicture.IsEmpty()) { | 470 if (!wsPicture.IsEmpty()) |
| 460 return pFieldWidgetData; | 471 return pFieldWidgetData; |
| 461 } | |
| 462 CXFA_Node* pDataNode = GetBindData(); | 472 CXFA_Node* pDataNode = GetBindData(); |
| 463 if (!pDataNode) { | 473 if (!pDataNode) |
| 464 return NULL; | 474 return nullptr; |
| 465 } | 475 pFieldWidgetData = nullptr; |
| 466 pFieldWidgetData = NULL; | |
| 467 CXFA_NodeArray formNodes; | 476 CXFA_NodeArray formNodes; |
| 468 pDataNode->GetBindItems(formNodes); | 477 pDataNode->GetBindItems(formNodes); |
| 469 for (int32_t i = 0; i < formNodes.GetSize(); i++) { | 478 for (int32_t i = 0; i < formNodes.GetSize(); i++) { |
| 470 CXFA_Node* pFormNode = formNodes.GetAt(i); | 479 CXFA_Node* pFormNode = formNodes.GetAt(i); |
| 471 if (!pFormNode || pFormNode->HasFlag(XFA_NODEFLAG_HasRemoved)) { | 480 if (!pFormNode || pFormNode->HasFlag(XFA_NODEFLAG_HasRemoved)) |
| 472 continue; | 481 continue; |
| 473 } | |
| 474 pFieldWidgetData = pFormNode->GetWidgetData(); | 482 pFieldWidgetData = pFormNode->GetWidgetData(); |
| 475 if (pFieldWidgetData) { | 483 if (pFieldWidgetData) { |
| 476 pFieldWidgetData->GetPictureContent(wsPicture, | 484 pFieldWidgetData->GetPictureContent(wsPicture, |
| 477 XFA_VALUEPICTURE_DataBind); | 485 XFA_VALUEPICTURE_DataBind); |
| 478 } | 486 } |
| 479 if (!wsPicture.IsEmpty()) { | 487 if (!wsPicture.IsEmpty()) |
| 480 break; | 488 break; |
| 481 } | 489 pFieldWidgetData = nullptr; |
| 482 pFieldWidgetData = NULL; | |
| 483 } | 490 } |
| 484 return pFieldWidgetData; | 491 return pFieldWidgetData; |
| 485 } | 492 } |
| 486 } | 493 } |
| 487 CXFA_Node* pGrandNode = | 494 CXFA_Node* pGrandNode = |
| 488 pParentNode ? pParentNode->GetNodeItem(XFA_NODEITEM_Parent) : NULL; | 495 pParentNode ? pParentNode->GetNodeItem(XFA_NODEITEM_Parent) : nullptr; |
| 489 CXFA_Node* pValueNode = | 496 CXFA_Node* pValueNode = |
| 490 (pParentNode && pParentNode->GetClassID() == XFA_ELEMENT_Value) | 497 (pParentNode && pParentNode->GetClassID() == XFA_ELEMENT_Value) |
| 491 ? pParentNode | 498 ? pParentNode |
| 492 : NULL; | 499 : nullptr; |
| 493 if (!pValueNode) { | 500 if (!pValueNode) { |
| 494 pValueNode = (pGrandNode && pGrandNode->GetClassID() == XFA_ELEMENT_Value) | 501 pValueNode = (pGrandNode && pGrandNode->GetClassID() == XFA_ELEMENT_Value) |
| 495 ? pGrandNode | 502 ? pGrandNode |
| 496 : NULL; | 503 : nullptr; |
| 497 } | 504 } |
| 498 CXFA_Node* pParentOfValueNode = | 505 CXFA_Node* pParentOfValueNode = |
| 499 pValueNode ? pValueNode->GetNodeItem(XFA_NODEITEM_Parent) : NULL; | 506 pValueNode ? pValueNode->GetNodeItem(XFA_NODEITEM_Parent) : nullptr; |
| 500 return pParentOfValueNode ? pParentOfValueNode->GetContainerWidgetData() | 507 return pParentOfValueNode ? pParentOfValueNode->GetContainerWidgetData() |
| 501 : NULL; | 508 : nullptr; |
| 502 } | 509 } |
| 510 | |
| 503 FX_BOOL CXFA_Node::GetLocaleName(CFX_WideString& wsLocaleName) { | 511 FX_BOOL CXFA_Node::GetLocaleName(CFX_WideString& wsLocaleName) { |
| 504 CXFA_Node* pForm = GetDocument()->GetXFAObject(XFA_HASHCODE_Form)->AsNode(); | 512 CXFA_Node* pForm = GetDocument()->GetXFAObject(XFA_HASHCODE_Form)->AsNode(); |
| 505 CXFA_Node* pTopSubform = pForm->GetFirstChildByClass(XFA_ELEMENT_Subform); | 513 CXFA_Node* pTopSubform = pForm->GetFirstChildByClass(XFA_ELEMENT_Subform); |
| 506 ASSERT(pTopSubform); | 514 ASSERT(pTopSubform); |
| 507 CXFA_Node* pLocaleNode = this; | 515 CXFA_Node* pLocaleNode = this; |
| 508 FX_BOOL bLocale = FALSE; | 516 bool bLocale = false; |
| 509 do { | 517 do { |
| 510 bLocale = pLocaleNode->TryCData(XFA_ATTRIBUTE_Locale, wsLocaleName, FALSE); | 518 bLocale = pLocaleNode->TryCData(XFA_ATTRIBUTE_Locale, wsLocaleName, FALSE); |
| 511 if (!bLocale) { | 519 if (!bLocale) { |
| 512 pLocaleNode = pLocaleNode->GetNodeItem(XFA_NODEITEM_Parent); | 520 pLocaleNode = pLocaleNode->GetNodeItem(XFA_NODEITEM_Parent); |
| 513 } | 521 } |
| 514 } while (pLocaleNode && pLocaleNode != pTopSubform && !bLocale); | 522 } while (pLocaleNode && pLocaleNode != pTopSubform && !bLocale); |
| 515 if (bLocale) { | 523 if (bLocale) |
| 516 return bLocale; | 524 return TRUE; |
| 517 } | |
| 518 CXFA_Node* pConfig = ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Config)); | 525 CXFA_Node* pConfig = ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Config)); |
| 519 wsLocaleName = GetDocument()->GetLocalMgr()->GetConfigLocaleName(pConfig); | 526 wsLocaleName = GetDocument()->GetLocalMgr()->GetConfigLocaleName(pConfig); |
| 520 if (!wsLocaleName.IsEmpty()) { | 527 if (!wsLocaleName.IsEmpty()) |
| 521 bLocale = TRUE; | 528 return TRUE; |
| 522 } | 529 if (pTopSubform && |
| 523 if (bLocale) { | 530 pTopSubform->TryCData(XFA_ATTRIBUTE_Locale, wsLocaleName, FALSE)) { |
| 524 return bLocale; | 531 return TRUE; |
| 525 } | |
| 526 if (pTopSubform) { | |
| 527 bLocale = pTopSubform->TryCData(XFA_ATTRIBUTE_Locale, wsLocaleName, FALSE); | |
| 528 } | |
| 529 if (bLocale) { | |
| 530 return bLocale; | |
| 531 } | 532 } |
| 532 IFX_Locale* pLocale = GetDocument()->GetLocalMgr()->GetDefLocale(); | 533 IFX_Locale* pLocale = GetDocument()->GetLocalMgr()->GetDefLocale(); |
| 533 if (pLocale) { | 534 if (pLocale) { |
| 534 wsLocaleName = pLocale->GetName(); | 535 wsLocaleName = pLocale->GetName(); |
| 535 bLocale = TRUE; | 536 return TRUE; |
| 536 } | 537 } |
| 537 return bLocale; | 538 return FALSE; |
| 538 } | 539 } |
| 540 | |
| 539 XFA_ATTRIBUTEENUM CXFA_Node::GetIntact() { | 541 XFA_ATTRIBUTEENUM CXFA_Node::GetIntact() { |
| 540 XFA_ELEMENT eElement = GetClassID(); | 542 XFA_ELEMENT eElement = GetClassID(); |
| 541 CXFA_Node* pKeep = GetFirstChildByClass(XFA_ELEMENT_Keep); | 543 CXFA_Node* pKeep = GetFirstChildByClass(XFA_ELEMENT_Keep); |
| 542 XFA_ATTRIBUTEENUM eLayoutType = GetEnum(XFA_ATTRIBUTE_Layout); | 544 XFA_ATTRIBUTEENUM eLayoutType = GetEnum(XFA_ATTRIBUTE_Layout); |
| 543 if (pKeep) { | 545 if (pKeep) { |
| 544 XFA_ATTRIBUTEENUM eIntact; | 546 XFA_ATTRIBUTEENUM eIntact; |
| 545 if (pKeep->TryEnum(XFA_ATTRIBUTE_Intact, eIntact, FALSE)) { | 547 if (pKeep->TryEnum(XFA_ATTRIBUTE_Intact, eIntact, FALSE)) { |
| 546 if (eIntact == XFA_ATTRIBUTEENUM_None && | 548 if (eIntact == XFA_ATTRIBUTEENUM_None && |
| 547 eLayoutType == XFA_ATTRIBUTEENUM_Row && | 549 eLayoutType == XFA_ATTRIBUTEENUM_Row && |
| 548 m_pDocument->GetCurVersionMode() < XFA_VERSION_208) { | 550 m_pDocument->GetCurVersionMode() < XFA_VERSION_208) { |
| 549 CXFA_Node* pPreviewRow = | 551 CXFA_Node* pPreviewRow = |
| 550 GetNodeItem(XFA_NODEITEM_PrevSibling, XFA_OBJECTTYPE_ContainerNode); | 552 GetNodeItem(XFA_NODEITEM_PrevSibling, XFA_OBJECTTYPE_ContainerNode); |
| 551 if (pPreviewRow && | 553 if (pPreviewRow && |
| 552 pPreviewRow->GetEnum(XFA_ATTRIBUTE_Layout) == | 554 pPreviewRow->GetEnum(XFA_ATTRIBUTE_Layout) == |
| 553 XFA_ATTRIBUTEENUM_Row) { | 555 XFA_ATTRIBUTEENUM_Row) { |
| 554 XFA_ATTRIBUTEENUM eValue; | 556 XFA_ATTRIBUTEENUM eValue; |
| 555 if (pKeep->TryEnum(XFA_ATTRIBUTE_Previous, eValue, FALSE)) { | 557 if (pKeep->TryEnum(XFA_ATTRIBUTE_Previous, eValue, FALSE) && |
| 556 if (eValue == XFA_ATTRIBUTEENUM_ContentArea || | 558 (eValue == XFA_ATTRIBUTEENUM_ContentArea || |
| 557 eValue == XFA_ATTRIBUTEENUM_PageArea) { | 559 eValue == XFA_ATTRIBUTEENUM_PageArea)) { |
| 558 return XFA_ATTRIBUTEENUM_ContentArea; | 560 return XFA_ATTRIBUTEENUM_ContentArea; |
| 559 } | |
| 560 } | 561 } |
| 561 CXFA_Node* pKeep = | 562 CXFA_Node* pKeep = |
|
Tom Sepez
2016/05/26 23:55:03
this is a shadow of the variable on line 543. Let
Wei Li
2016/05/27 00:51:45
Done.
| |
| 562 pPreviewRow->GetFirstChildByClass(XFA_ELEMENT_Keep); | 563 pPreviewRow->GetFirstChildByClass(XFA_ELEMENT_Keep); |
| 563 if (pKeep) { | 564 if (pKeep && pKeep->TryEnum(XFA_ATTRIBUTE_Next, eValue, FALSE) && |
| 564 if (pKeep->TryEnum(XFA_ATTRIBUTE_Next, eValue, FALSE)) { | 565 (eValue == XFA_ATTRIBUTEENUM_ContentArea || |
| 565 if (eValue == XFA_ATTRIBUTEENUM_ContentArea || | 566 eValue == XFA_ATTRIBUTEENUM_PageArea)) { |
| 566 eValue == XFA_ATTRIBUTEENUM_PageArea) { | 567 return XFA_ATTRIBUTEENUM_ContentArea; |
| 567 return XFA_ATTRIBUTEENUM_ContentArea; | |
| 568 } | |
| 569 } | |
| 570 } | 568 } |
| 571 } | 569 } |
| 572 } | 570 } |
| 573 return eIntact; | 571 return eIntact; |
| 574 } | 572 } |
| 575 } | 573 } |
| 576 switch (eElement) { | 574 switch (eElement) { |
| 577 case XFA_ELEMENT_Subform: | 575 case XFA_ELEMENT_Subform: |
| 578 switch (eLayoutType) { | 576 switch (eLayoutType) { |
| 579 case XFA_ATTRIBUTEENUM_Position: | 577 case XFA_ATTRIBUTEENUM_Position: |
| 580 case XFA_ATTRIBUTEENUM_Row: | 578 case XFA_ATTRIBUTEENUM_Row: |
| 581 return XFA_ATTRIBUTEENUM_ContentArea; | 579 return XFA_ATTRIBUTEENUM_ContentArea; |
| 582 case XFA_ATTRIBUTEENUM_Tb: | 580 case XFA_ATTRIBUTEENUM_Tb: |
| 583 case XFA_ATTRIBUTEENUM_Table: | 581 case XFA_ATTRIBUTEENUM_Table: |
| 584 case XFA_ATTRIBUTEENUM_Lr_tb: | 582 case XFA_ATTRIBUTEENUM_Lr_tb: |
| 585 case XFA_ATTRIBUTEENUM_Rl_tb: | 583 case XFA_ATTRIBUTEENUM_Rl_tb: |
| 586 return XFA_ATTRIBUTEENUM_None; | 584 return XFA_ATTRIBUTEENUM_None; |
| 587 default: | 585 default: |
| 588 break; | 586 break; |
| 589 } | 587 } |
| 590 break; | 588 break; |
| 591 case XFA_ELEMENT_Field: { | 589 case XFA_ELEMENT_Field: { |
| 592 CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); | 590 CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); |
| 593 if (!pParentNode || pParentNode->GetClassID() == XFA_ELEMENT_PageArea) { | 591 if (!pParentNode || pParentNode->GetClassID() == XFA_ELEMENT_PageArea) |
| 594 return XFA_ATTRIBUTEENUM_ContentArea; | 592 return XFA_ATTRIBUTEENUM_ContentArea; |
| 595 } | |
| 596 if (pParentNode->GetIntact() == XFA_ATTRIBUTEENUM_None) { | 593 if (pParentNode->GetIntact() == XFA_ATTRIBUTEENUM_None) { |
| 597 XFA_ATTRIBUTEENUM eParLayout = | 594 XFA_ATTRIBUTEENUM eParLayout = |
| 598 pParentNode->GetEnum(XFA_ATTRIBUTE_Layout); | 595 pParentNode->GetEnum(XFA_ATTRIBUTE_Layout); |
| 599 if (eParLayout == XFA_ATTRIBUTEENUM_Position || | 596 if (eParLayout == XFA_ATTRIBUTEENUM_Position || |
| 600 eParLayout == XFA_ATTRIBUTEENUM_Row || | 597 eParLayout == XFA_ATTRIBUTEENUM_Row || |
| 601 eParLayout == XFA_ATTRIBUTEENUM_Table) { | 598 eParLayout == XFA_ATTRIBUTEENUM_Table) { |
| 602 return XFA_ATTRIBUTEENUM_None; | 599 return XFA_ATTRIBUTEENUM_None; |
| 603 } | 600 } |
| 604 XFA_VERSION version = m_pDocument->GetCurVersionMode(); | 601 XFA_VERSION version = m_pDocument->GetCurVersionMode(); |
| 605 if (eParLayout == XFA_ATTRIBUTEENUM_Tb && version < XFA_VERSION_208) { | 602 if (eParLayout == XFA_ATTRIBUTEENUM_Tb && version < XFA_VERSION_208) { |
| 606 CXFA_Measurement measureH; | 603 CXFA_Measurement measureH; |
| 607 if (TryMeasure(XFA_ATTRIBUTE_H, measureH, FALSE)) { | 604 if (TryMeasure(XFA_ATTRIBUTE_H, measureH, FALSE)) |
| 608 return XFA_ATTRIBUTEENUM_ContentArea; | 605 return XFA_ATTRIBUTEENUM_ContentArea; |
| 609 } | |
| 610 } | 606 } |
| 611 return XFA_ATTRIBUTEENUM_None; | 607 return XFA_ATTRIBUTEENUM_None; |
| 612 } | 608 } |
| 613 return XFA_ATTRIBUTEENUM_ContentArea; | 609 return XFA_ATTRIBUTEENUM_ContentArea; |
| 614 } | 610 } |
| 615 case XFA_ELEMENT_Draw: | 611 case XFA_ELEMENT_Draw: |
| 616 return XFA_ATTRIBUTEENUM_ContentArea; | 612 return XFA_ATTRIBUTEENUM_ContentArea; |
| 617 default: | 613 default: |
| 618 break; | 614 break; |
| 619 } | 615 } |
| 620 return XFA_ATTRIBUTEENUM_None; | 616 return XFA_ATTRIBUTEENUM_None; |
| 621 } | 617 } |
| 618 | |
| 622 CXFA_Node* CXFA_Node::GetDataDescriptionNode() { | 619 CXFA_Node* CXFA_Node::GetDataDescriptionNode() { |
| 623 if (m_ePacket == XFA_XDPPACKET_Datasets) { | 620 if (m_ePacket == XFA_XDPPACKET_Datasets) |
| 624 return m_pAuxNode; | 621 return m_pAuxNode; |
| 625 } | 622 return nullptr; |
| 626 return NULL; | |
| 627 } | 623 } |
| 624 | |
| 628 void CXFA_Node::SetDataDescriptionNode(CXFA_Node* pDataDescriptionNode) { | 625 void CXFA_Node::SetDataDescriptionNode(CXFA_Node* pDataDescriptionNode) { |
| 629 ASSERT(m_ePacket == XFA_XDPPACKET_Datasets); | 626 ASSERT(m_ePacket == XFA_XDPPACKET_Datasets); |
| 630 m_pAuxNode = pDataDescriptionNode; | 627 m_pAuxNode = pDataDescriptionNode; |
| 631 } | 628 } |
| 629 | |
| 632 void CXFA_Node::Script_TreeClass_ResolveNode(CFXJSE_Arguments* pArguments) { | 630 void CXFA_Node::Script_TreeClass_ResolveNode(CFXJSE_Arguments* pArguments) { |
| 633 int32_t iLength = pArguments->GetLength(); | 631 int32_t iLength = pArguments->GetLength(); |
| 634 if (iLength != 1) { | 632 if (iLength != 1) { |
| 635 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"resolveNode"); | 633 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"resolveNode"); |
| 636 return; | 634 return; |
| 637 } | 635 } |
| 638 CFX_WideString wsExpression = | 636 CFX_WideString wsExpression = |
| 639 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); | 637 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 640 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); | 638 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); |
| 641 if (!pScriptContext) { | 639 if (!pScriptContext) |
| 642 return; | 640 return; |
| 643 } | |
| 644 CXFA_Node* refNode = this; | 641 CXFA_Node* refNode = this; |
| 645 if (refNode->GetClassID() == XFA_ELEMENT_Xfa) { | 642 if (refNode->GetClassID() == XFA_ELEMENT_Xfa) |
| 646 refNode = ToNode(pScriptContext->GetThisObject()); | 643 refNode = ToNode(pScriptContext->GetThisObject()); |
| 647 } | |
| 648 uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Attributes | | 644 uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Attributes | |
| 649 XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | | 645 XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | |
| 650 XFA_RESOLVENODE_Siblings; | 646 XFA_RESOLVENODE_Siblings; |
| 651 XFA_RESOLVENODE_RS resoveNodeRS; | 647 XFA_RESOLVENODE_RS resoveNodeRS; |
| 652 int32_t iRet = pScriptContext->ResolveObjects( | 648 int32_t iRet = pScriptContext->ResolveObjects( |
| 653 refNode, wsExpression.AsStringC(), resoveNodeRS, dwFlag); | 649 refNode, wsExpression.AsStringC(), resoveNodeRS, dwFlag); |
| 654 if (iRet < 1) { | 650 if (iRet < 1) |
| 655 return FXJSE_Value_SetNull(pArguments->GetReturnValue()); | 651 return FXJSE_Value_SetNull(pArguments->GetReturnValue()); |
| 656 } | 652 |
| 657 CFXJSE_Value* pValue = nullptr; | 653 CFXJSE_Value* pValue = nullptr; |
| 658 if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { | 654 if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { |
| 659 CXFA_Object* pNode = resoveNodeRS.nodes[0]; | 655 CXFA_Object* pNode = resoveNodeRS.nodes[0]; |
| 660 pValue = pScriptContext->GetJSValueFromMap(pNode); | 656 pValue = pScriptContext->GetJSValueFromMap(pNode); |
| 661 FXJSE_Value_Set(pArguments->GetReturnValue(), pValue); | 657 FXJSE_Value_Set(pArguments->GetReturnValue(), pValue); |
| 662 } else { | 658 } else { |
| 663 const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = | 659 const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = |
| 664 resoveNodeRS.pScriptAttribute; | 660 resoveNodeRS.pScriptAttribute; |
| 665 if (lpAttributeInfo && lpAttributeInfo->eValueType == XFA_SCRIPT_Object) { | 661 if (lpAttributeInfo && lpAttributeInfo->eValueType == XFA_SCRIPT_Object) { |
| 666 pValue = FXJSE_Value_Create(pScriptContext->GetRuntime()); | 662 pValue = FXJSE_Value_Create(pScriptContext->GetRuntime()); |
| 667 (resoveNodeRS.nodes[0]->*(lpAttributeInfo->lpfnCallback))( | 663 (resoveNodeRS.nodes[0]->*(lpAttributeInfo->lpfnCallback))( |
| 668 pValue, FALSE, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute); | 664 pValue, FALSE, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute); |
| 669 FXJSE_Value_Set(pArguments->GetReturnValue(), pValue); | 665 FXJSE_Value_Set(pArguments->GetReturnValue(), pValue); |
| 670 FXJSE_Value_Release(pValue); | 666 FXJSE_Value_Release(pValue); |
| 671 } else { | 667 } else { |
| 672 FXJSE_Value_SetNull(pArguments->GetReturnValue()); | 668 FXJSE_Value_SetNull(pArguments->GetReturnValue()); |
| 673 } | 669 } |
| 674 } | 670 } |
| 675 } | 671 } |
| 672 | |
| 676 void CXFA_Node::Script_TreeClass_ResolveNodes(CFXJSE_Arguments* pArguments) { | 673 void CXFA_Node::Script_TreeClass_ResolveNodes(CFXJSE_Arguments* pArguments) { |
| 677 int32_t iLength = pArguments->GetLength(); | 674 int32_t iLength = pArguments->GetLength(); |
| 678 if (iLength != 1) { | 675 if (iLength != 1) { |
| 679 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, | 676 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, |
| 680 L"resolveNodes"); | 677 L"resolveNodes"); |
| 681 return; | 678 return; |
| 682 } | 679 } |
| 683 CFX_WideString wsExpression = | 680 CFX_WideString wsExpression = |
| 684 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); | 681 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 685 CFXJSE_Value* pValue = pArguments->GetReturnValue(); | 682 CFXJSE_Value* pValue = pArguments->GetReturnValue(); |
| 686 if (!pValue) { | 683 if (!pValue) |
| 687 return; | 684 return; |
| 688 } | |
| 689 uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Attributes | | 685 uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Attributes | |
| 690 XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | | 686 XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | |
| 691 XFA_RESOLVENODE_Siblings; | 687 XFA_RESOLVENODE_Siblings; |
| 692 CXFA_Node* refNode = this; | 688 CXFA_Node* refNode = this; |
| 693 if (refNode->GetClassID() == XFA_ELEMENT_Xfa) { | 689 if (refNode->GetClassID() == XFA_ELEMENT_Xfa) |
| 694 refNode = ToNode(m_pDocument->GetScriptContext()->GetThisObject()); | 690 refNode = ToNode(m_pDocument->GetScriptContext()->GetThisObject()); |
| 695 } | |
| 696 Script_Som_ResolveNodeList(pValue, wsExpression, dwFlag, refNode); | 691 Script_Som_ResolveNodeList(pValue, wsExpression, dwFlag, refNode); |
| 697 } | 692 } |
| 693 | |
| 698 void CXFA_Node::Script_Som_ResolveNodeList(CFXJSE_Value* pValue, | 694 void CXFA_Node::Script_Som_ResolveNodeList(CFXJSE_Value* pValue, |
| 699 CFX_WideString wsExpression, | 695 CFX_WideString wsExpression, |
| 700 uint32_t dwFlag, | 696 uint32_t dwFlag, |
| 701 CXFA_Node* refNode) { | 697 CXFA_Node* refNode) { |
| 702 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); | 698 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); |
| 703 if (!pScriptContext) { | 699 if (!pScriptContext) |
| 704 return; | 700 return; |
| 705 } | |
| 706 XFA_RESOLVENODE_RS resoveNodeRS; | 701 XFA_RESOLVENODE_RS resoveNodeRS; |
| 707 if (refNode == NULL) { | 702 if (!refNode) |
| 708 refNode = this; | 703 refNode = this; |
| 709 } | |
| 710 pScriptContext->ResolveObjects(refNode, wsExpression.AsStringC(), | 704 pScriptContext->ResolveObjects(refNode, wsExpression.AsStringC(), |
| 711 resoveNodeRS, dwFlag); | 705 resoveNodeRS, dwFlag); |
| 712 CXFA_ArrayNodeList* pNodeList = new CXFA_ArrayNodeList(m_pDocument); | 706 CXFA_ArrayNodeList* pNodeList = new CXFA_ArrayNodeList(m_pDocument); |
| 713 if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { | 707 if (resoveNodeRS.dwFlags == XFA_RESOVENODE_RSTYPE_Nodes) { |
| 714 for (int32_t i = 0; i < resoveNodeRS.nodes.GetSize(); i++) { | 708 for (int32_t i = 0; i < resoveNodeRS.nodes.GetSize(); i++) { |
| 715 if (resoveNodeRS.nodes[i]->IsNode()) | 709 if (resoveNodeRS.nodes[i]->IsNode()) |
| 716 pNodeList->Append(resoveNodeRS.nodes[i]->AsNode()); | 710 pNodeList->Append(resoveNodeRS.nodes[i]->AsNode()); |
| 717 } | 711 } |
| 718 } else { | 712 } else { |
| 719 CXFA_ValueArray valueArray(pScriptContext->GetRuntime()); | 713 CXFA_ValueArray valueArray(pScriptContext->GetRuntime()); |
| 720 if (resoveNodeRS.GetAttributeResult(valueArray) > 0) { | 714 if (resoveNodeRS.GetAttributeResult(valueArray) > 0) { |
| 721 CXFA_ObjArray objectArray; | 715 CXFA_ObjArray objectArray; |
| 722 valueArray.GetAttributeObject(objectArray); | 716 valueArray.GetAttributeObject(objectArray); |
| 723 for (int32_t i = 0; i < objectArray.GetSize(); i++) { | 717 for (int32_t i = 0; i < objectArray.GetSize(); i++) { |
| 724 if (objectArray[i]->IsNode()) | 718 if (objectArray[i]->IsNode()) |
| 725 pNodeList->Append(objectArray[i]->AsNode()); | 719 pNodeList->Append(objectArray[i]->AsNode()); |
| 726 } | 720 } |
| 727 } | 721 } |
| 728 } | 722 } |
| 729 FXJSE_Value_SetObject(pValue, (CXFA_Object*)pNodeList, | 723 FXJSE_Value_SetObject(pValue, (CXFA_Object*)pNodeList, |
| 730 pScriptContext->GetJseNormalClass()); | 724 pScriptContext->GetJseNormalClass()); |
| 731 } | 725 } |
| 726 | |
| 732 void CXFA_Node::Script_TreeClass_All(CFXJSE_Value* pValue, | 727 void CXFA_Node::Script_TreeClass_All(CFXJSE_Value* pValue, |
| 733 FX_BOOL bSetting, | 728 FX_BOOL bSetting, |
| 734 XFA_ATTRIBUTE eAttribute) { | 729 XFA_ATTRIBUTE eAttribute) { |
| 735 if (bSetting) { | 730 if (bSetting) { |
| 736 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 731 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 737 } else { | 732 } else { |
| 738 uint32_t dwFlag = XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_ALL; | 733 uint32_t dwFlag = XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_ALL; |
| 739 CFX_WideString wsName; | 734 CFX_WideString wsName; |
| 740 GetAttribute(XFA_ATTRIBUTE_Name, wsName); | 735 GetAttribute(XFA_ATTRIBUTE_Name, wsName); |
| 741 CFX_WideString wsExpression = wsName + FX_WSTRC(L"[*]"); | 736 CFX_WideString wsExpression = wsName + FX_WSTRC(L"[*]"); |
| 742 Script_Som_ResolveNodeList(pValue, wsExpression, dwFlag); | 737 Script_Som_ResolveNodeList(pValue, wsExpression, dwFlag); |
| 743 } | 738 } |
| 744 } | 739 } |
| 740 | |
| 745 void CXFA_Node::Script_TreeClass_Nodes(CFXJSE_Value* pValue, | 741 void CXFA_Node::Script_TreeClass_Nodes(CFXJSE_Value* pValue, |
| 746 FX_BOOL bSetting, | 742 FX_BOOL bSetting, |
| 747 XFA_ATTRIBUTE eAttribute) { | 743 XFA_ATTRIBUTE eAttribute) { |
| 748 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); | 744 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); |
| 749 if (!pScriptContext) { | 745 if (!pScriptContext) |
| 750 return; | 746 return; |
| 751 } | |
| 752 if (bSetting) { | 747 if (bSetting) { |
| 753 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); | 748 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); |
| 754 ASSERT(pAppProvider); | 749 ASSERT(pAppProvider); |
| 755 CFX_WideString wsMessage; | 750 CFX_WideString wsMessage; |
| 756 pAppProvider->LoadString(XFA_IDS_Unable_TO_SET, wsMessage); | 751 pAppProvider->LoadString(XFA_IDS_Unable_TO_SET, wsMessage); |
| 757 FXJSE_ThrowMessage( | 752 FXJSE_ThrowMessage( |
| 758 "", | 753 "", |
| 759 FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); | 754 FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); |
| 760 } else { | 755 } else { |
| 761 CXFA_AttachNodeList* pNodeList = new CXFA_AttachNodeList(m_pDocument, this); | 756 CXFA_AttachNodeList* pNodeList = new CXFA_AttachNodeList(m_pDocument, this); |
| 762 FXJSE_Value_SetObject(pValue, (CXFA_Object*)pNodeList, | 757 FXJSE_Value_SetObject(pValue, (CXFA_Object*)pNodeList, |
| 763 pScriptContext->GetJseNormalClass()); | 758 pScriptContext->GetJseNormalClass()); |
| 764 } | 759 } |
| 765 } | 760 } |
| 761 | |
| 766 void CXFA_Node::Script_TreeClass_ClassAll(CFXJSE_Value* pValue, | 762 void CXFA_Node::Script_TreeClass_ClassAll(CFXJSE_Value* pValue, |
| 767 FX_BOOL bSetting, | 763 FX_BOOL bSetting, |
| 768 XFA_ATTRIBUTE eAttribute) { | 764 XFA_ATTRIBUTE eAttribute) { |
| 769 if (bSetting) { | 765 if (bSetting) { |
| 770 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 766 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 771 } else { | 767 } else { |
| 772 uint32_t dwFlag = XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_ALL; | 768 uint32_t dwFlag = XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_ALL; |
| 773 CFX_WideStringC wsName; | 769 CFX_WideStringC wsName; |
| 774 GetClassName(wsName); | 770 GetClassName(wsName); |
| 775 CFX_WideString wsExpression = FX_WSTRC(L"#") + wsName + FX_WSTRC(L"[*]"); | 771 CFX_WideString wsExpression = FX_WSTRC(L"#") + wsName + FX_WSTRC(L"[*]"); |
| 776 Script_Som_ResolveNodeList(pValue, wsExpression, dwFlag); | 772 Script_Som_ResolveNodeList(pValue, wsExpression, dwFlag); |
| 777 } | 773 } |
| 778 } | 774 } |
| 775 | |
| 779 void CXFA_Node::Script_TreeClass_Parent(CFXJSE_Value* pValue, | 776 void CXFA_Node::Script_TreeClass_Parent(CFXJSE_Value* pValue, |
| 780 FX_BOOL bSetting, | 777 FX_BOOL bSetting, |
| 781 XFA_ATTRIBUTE eAttribute) { | 778 XFA_ATTRIBUTE eAttribute) { |
| 782 if (bSetting) { | 779 if (bSetting) { |
| 783 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 780 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 784 } else { | 781 } else { |
| 785 CXFA_Node* pParent = GetNodeItem(XFA_NODEITEM_Parent); | 782 CXFA_Node* pParent = GetNodeItem(XFA_NODEITEM_Parent); |
| 786 if (pParent) { | 783 if (pParent) { |
| 787 FXJSE_Value_Set( | 784 FXJSE_Value_Set( |
| 788 pValue, m_pDocument->GetScriptContext()->GetJSValueFromMap(pParent)); | 785 pValue, m_pDocument->GetScriptContext()->GetJSValueFromMap(pParent)); |
| 789 } else { | 786 } else { |
| 790 FXJSE_Value_SetNull(pValue); | 787 FXJSE_Value_SetNull(pValue); |
| 791 } | 788 } |
| 792 } | 789 } |
| 793 } | 790 } |
| 791 | |
| 794 void CXFA_Node::Script_TreeClass_Index(CFXJSE_Value* pValue, | 792 void CXFA_Node::Script_TreeClass_Index(CFXJSE_Value* pValue, |
| 795 FX_BOOL bSetting, | 793 FX_BOOL bSetting, |
| 796 XFA_ATTRIBUTE eAttribute) { | 794 XFA_ATTRIBUTE eAttribute) { |
| 797 if (bSetting) { | 795 if (bSetting) |
| 798 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 796 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 799 } else { | 797 else |
| 800 FXJSE_Value_SetInteger(pValue, GetNodeSameNameIndex()); | 798 FXJSE_Value_SetInteger(pValue, GetNodeSameNameIndex()); |
| 801 } | |
| 802 } | 799 } |
| 800 | |
| 803 void CXFA_Node::Script_TreeClass_ClassIndex(CFXJSE_Value* pValue, | 801 void CXFA_Node::Script_TreeClass_ClassIndex(CFXJSE_Value* pValue, |
| 804 FX_BOOL bSetting, | 802 FX_BOOL bSetting, |
| 805 XFA_ATTRIBUTE eAttribute) { | 803 XFA_ATTRIBUTE eAttribute) { |
| 806 if (bSetting) { | 804 if (bSetting) |
| 807 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 805 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 808 } else { | 806 else |
| 809 FXJSE_Value_SetInteger(pValue, GetNodeSameClassIndex()); | 807 FXJSE_Value_SetInteger(pValue, GetNodeSameClassIndex()); |
| 810 } | |
| 811 } | 808 } |
| 809 | |
| 812 void CXFA_Node::Script_TreeClass_SomExpression(CFXJSE_Value* pValue, | 810 void CXFA_Node::Script_TreeClass_SomExpression(CFXJSE_Value* pValue, |
| 813 FX_BOOL bSetting, | 811 FX_BOOL bSetting, |
| 814 XFA_ATTRIBUTE eAttribute) { | 812 XFA_ATTRIBUTE eAttribute) { |
| 815 if (bSetting) { | 813 if (bSetting) { |
| 816 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 814 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 817 } else { | 815 } else { |
| 818 CFX_WideString wsSOMExpression; | 816 CFX_WideString wsSOMExpression; |
| 819 GetSOMExpression(wsSOMExpression); | 817 GetSOMExpression(wsSOMExpression); |
| 820 FXJSE_Value_SetUTF8String(pValue, | 818 FXJSE_Value_SetUTF8String(pValue, |
| 821 FX_UTF8Encode(wsSOMExpression).AsStringC()); | 819 FX_UTF8Encode(wsSOMExpression).AsStringC()); |
| 822 } | 820 } |
| 823 } | 821 } |
| 822 | |
| 824 void CXFA_Node::Script_NodeClass_ApplyXSL(CFXJSE_Arguments* pArguments) { | 823 void CXFA_Node::Script_NodeClass_ApplyXSL(CFXJSE_Arguments* pArguments) { |
| 825 int32_t iLength = pArguments->GetLength(); | 824 int32_t iLength = pArguments->GetLength(); |
| 826 if (iLength != 1) { | 825 if (iLength != 1) { |
| 827 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"applyXSL"); | 826 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"applyXSL"); |
| 828 return; | 827 return; |
| 829 } | 828 } |
| 830 CFX_WideString wsExpression = | 829 CFX_WideString wsExpression = |
| 831 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); | 830 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 832 // TODO(weili): check whether we need to implement this, pdfium:501. | 831 // TODO(weili): check whether we need to implement this, pdfium:501. |
| 833 // For now, just put the variables here to avoid unused variable warning. | 832 // For now, just put the variables here to avoid unused variable warning. |
| 834 (void)wsExpression; | 833 (void)wsExpression; |
| 835 } | 834 } |
| 836 | 835 |
| 837 void CXFA_Node::Script_NodeClass_AssignNode(CFXJSE_Arguments* pArguments) { | 836 void CXFA_Node::Script_NodeClass_AssignNode(CFXJSE_Arguments* pArguments) { |
| 838 int32_t iLength = pArguments->GetLength(); | 837 int32_t iLength = pArguments->GetLength(); |
| 839 if (iLength < 1 || iLength > 3) { | 838 if (iLength < 1 || iLength > 3) { |
| 840 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"assignNode"); | 839 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"assignNode"); |
| 841 return; | 840 return; |
| 842 } | 841 } |
| 843 CFX_WideString wsExpression; | 842 CFX_WideString wsExpression; |
| 844 CFX_WideString wsValue; | 843 CFX_WideString wsValue; |
| 845 int32_t iAction = 0; | 844 int32_t iAction = 0; |
| 846 if (iLength >= 1) { | 845 wsExpression = |
| 847 wsExpression = | 846 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 848 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); | |
| 849 } | |
| 850 if (iLength >= 2) { | 847 if (iLength >= 2) { |
| 851 wsValue = | 848 wsValue = |
| 852 CFX_WideString::FromUTF8(pArguments->GetUTF8String(1).AsStringC()); | 849 CFX_WideString::FromUTF8(pArguments->GetUTF8String(1).AsStringC()); |
| 853 } | 850 } |
| 854 if (iLength >= 3) | 851 if (iLength >= 3) |
| 855 iAction = pArguments->GetInt32(2); | 852 iAction = pArguments->GetInt32(2); |
| 856 // TODO(weili): check whether we need to implement this, pdfium:501. | 853 // TODO(weili): check whether we need to implement this, pdfium:501. |
| 857 // For now, just put the variables here to avoid unused variable warning. | 854 // For now, just put the variables here to avoid unused variable warning. |
| 858 (void)wsExpression; | 855 (void)wsExpression; |
| 859 (void)wsValue; | 856 (void)wsValue; |
| 860 (void)iAction; | 857 (void)iAction; |
| 861 } | 858 } |
| 862 | 859 |
| 863 void CXFA_Node::Script_NodeClass_Clone(CFXJSE_Arguments* pArguments) { | 860 void CXFA_Node::Script_NodeClass_Clone(CFXJSE_Arguments* pArguments) { |
| 864 int32_t iLength = pArguments->GetLength(); | 861 int32_t iLength = pArguments->GetLength(); |
| 865 if (iLength != 1) { | 862 if (iLength != 1) { |
| 866 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"clone"); | 863 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"clone"); |
| 867 return; | 864 return; |
| 868 } | 865 } |
| 869 FX_BOOL bClone = TRUE; | 866 bool bClone = !!pArguments->GetInt32(0); |
| 870 bClone = pArguments->GetInt32(0) == 0 ? FALSE : TRUE; | |
| 871 CXFA_Node* pCloneNode = Clone(bClone); | 867 CXFA_Node* pCloneNode = Clone(bClone); |
| 872 FXJSE_Value_Set( | 868 FXJSE_Value_Set( |
| 873 pArguments->GetReturnValue(), | 869 pArguments->GetReturnValue(), |
| 874 m_pDocument->GetScriptContext()->GetJSValueFromMap(pCloneNode)); | 870 m_pDocument->GetScriptContext()->GetJSValueFromMap(pCloneNode)); |
| 875 } | 871 } |
| 872 | |
| 876 void CXFA_Node::Script_NodeClass_GetAttribute(CFXJSE_Arguments* pArguments) { | 873 void CXFA_Node::Script_NodeClass_GetAttribute(CFXJSE_Arguments* pArguments) { |
| 877 int32_t iLength = pArguments->GetLength(); | 874 int32_t iLength = pArguments->GetLength(); |
| 878 if (iLength != 1) { | 875 if (iLength != 1) { |
| 879 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, | 876 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, |
| 880 L"getAttribute"); | 877 L"getAttribute"); |
| 881 return; | 878 return; |
| 882 } | 879 } |
| 883 CFX_WideString wsExpression = | 880 CFX_WideString wsExpression = |
| 884 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); | 881 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 885 CFX_WideString wsValue; | 882 CFX_WideString wsValue; |
| 886 GetAttribute(wsExpression.AsStringC(), wsValue); | 883 GetAttribute(wsExpression.AsStringC(), wsValue); |
| 887 CFXJSE_Value* pValue = pArguments->GetReturnValue(); | 884 CFXJSE_Value* pValue = pArguments->GetReturnValue(); |
| 888 if (pValue) { | 885 if (pValue) |
| 889 FXJSE_Value_SetUTF8String(pValue, FX_UTF8Encode(wsValue).AsStringC()); | 886 FXJSE_Value_SetUTF8String(pValue, FX_UTF8Encode(wsValue).AsStringC()); |
| 890 } | |
| 891 } | 887 } |
| 888 | |
| 892 void CXFA_Node::Script_NodeClass_GetElement(CFXJSE_Arguments* pArguments) { | 889 void CXFA_Node::Script_NodeClass_GetElement(CFXJSE_Arguments* pArguments) { |
| 893 int32_t iLength = pArguments->GetLength(); | 890 int32_t iLength = pArguments->GetLength(); |
| 894 if (iLength < 1 || iLength > 2) { | 891 if (iLength < 1 || iLength > 2) { |
| 895 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"getElement"); | 892 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"getElement"); |
| 896 return; | 893 return; |
| 897 } | 894 } |
| 898 CFX_WideString wsExpression; | 895 CFX_WideString wsExpression; |
| 899 int32_t iValue = 0; | 896 int32_t iValue = 0; |
| 900 if (iLength >= 1) { | 897 wsExpression = |
| 901 CFX_ByteString bsExpression = pArguments->GetUTF8String(0); | 898 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 902 wsExpression = CFX_WideString::FromUTF8(bsExpression.AsStringC()); | 899 if (iLength >= 2) |
| 903 } | |
| 904 if (iLength >= 2) { | |
| 905 iValue = pArguments->GetInt32(1); | 900 iValue = pArguments->GetInt32(1); |
| 906 } | |
| 907 const XFA_ELEMENTINFO* pElementInfo = | 901 const XFA_ELEMENTINFO* pElementInfo = |
| 908 XFA_GetElementByName(wsExpression.AsStringC()); | 902 XFA_GetElementByName(wsExpression.AsStringC()); |
| 909 CXFA_Node* pNode = GetProperty(iValue, pElementInfo->eName); | 903 CXFA_Node* pNode = GetProperty(iValue, pElementInfo->eName); |
| 910 FXJSE_Value_Set(pArguments->GetReturnValue(), | 904 FXJSE_Value_Set(pArguments->GetReturnValue(), |
| 911 m_pDocument->GetScriptContext()->GetJSValueFromMap(pNode)); | 905 m_pDocument->GetScriptContext()->GetJSValueFromMap(pNode)); |
| 912 } | 906 } |
| 913 | 907 |
| 914 void CXFA_Node::Script_NodeClass_IsPropertySpecified( | 908 void CXFA_Node::Script_NodeClass_IsPropertySpecified( |
| 915 CFXJSE_Arguments* pArguments) { | 909 CFXJSE_Arguments* pArguments) { |
| 916 int32_t iLength = pArguments->GetLength(); | 910 int32_t iLength = pArguments->GetLength(); |
| 917 if (iLength < 1 || iLength > 3) { | 911 if (iLength < 1 || iLength > 3) { |
| 918 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, | 912 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, |
| 919 L"isPropertySpecified"); | 913 L"isPropertySpecified"); |
| 920 return; | 914 return; |
| 921 } | 915 } |
| 922 CFX_WideString wsExpression; | 916 CFX_WideString wsExpression; |
| 923 FX_BOOL bParent = TRUE; | 917 bool bParent = true; |
| 924 int32_t iIndex = 0; | 918 int32_t iIndex = 0; |
| 925 if (iLength >= 1) { | 919 wsExpression = |
| 926 wsExpression = | 920 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 927 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); | |
| 928 } | |
| 929 if (iLength >= 2) | 921 if (iLength >= 2) |
| 930 bParent = !!pArguments->GetInt32(1) ? TRUE : FALSE; | 922 bParent = !!pArguments->GetInt32(1); |
| 931 if (iLength >= 3) | 923 if (iLength >= 3) |
| 932 iIndex = pArguments->GetInt32(2); | 924 iIndex = pArguments->GetInt32(2); |
| 933 FX_BOOL bHas = FALSE; | 925 bool bHas = false; |
| 934 const XFA_ATTRIBUTEINFO* pAttributeInfo = | 926 const XFA_ATTRIBUTEINFO* pAttributeInfo = |
| 935 XFA_GetAttributeByName(wsExpression.AsStringC()); | 927 XFA_GetAttributeByName(wsExpression.AsStringC()); |
| 936 CFX_WideString wsValue; | 928 CFX_WideString wsValue; |
| 937 if (pAttributeInfo) | 929 if (pAttributeInfo) |
| 938 bHas = HasAttribute(pAttributeInfo->eName); | 930 bHas = HasAttribute(pAttributeInfo->eName); |
| 939 if (!bHas) { | 931 if (!bHas) { |
| 940 const XFA_ELEMENTINFO* pElementInfo = | 932 const XFA_ELEMENTINFO* pElementInfo = |
| 941 XFA_GetElementByName(wsExpression.AsStringC()); | 933 XFA_GetElementByName(wsExpression.AsStringC()); |
| 942 bHas = !!GetProperty(iIndex, pElementInfo->eName); | 934 bHas = !!GetProperty(iIndex, pElementInfo->eName); |
| 943 if (!bHas && bParent && m_pParent) { | 935 if (!bHas && bParent && m_pParent) { |
| 944 // Also check on the parent. | 936 // Also check on the parent. |
| 945 bHas = m_pParent->HasAttribute(pAttributeInfo->eName); | 937 bHas = m_pParent->HasAttribute(pAttributeInfo->eName); |
| 946 if (!bHas) | 938 if (!bHas) |
| 947 bHas = !!m_pParent->GetProperty(iIndex, pElementInfo->eName); | 939 bHas = !!m_pParent->GetProperty(iIndex, pElementInfo->eName); |
| 948 } | 940 } |
| 949 } | 941 } |
| 950 CFXJSE_Value* pValue = pArguments->GetReturnValue(); | 942 CFXJSE_Value* pValue = pArguments->GetReturnValue(); |
| 951 if (pValue) | 943 if (pValue) |
| 952 FXJSE_Value_SetBoolean(pValue, bHas); | 944 FXJSE_Value_SetBoolean(pValue, bHas); |
| 953 } | 945 } |
| 954 | 946 |
| 955 void CXFA_Node::Script_NodeClass_LoadXML(CFXJSE_Arguments* pArguments) { | 947 void CXFA_Node::Script_NodeClass_LoadXML(CFXJSE_Arguments* pArguments) { |
| 956 int32_t iLength = pArguments->GetLength(); | 948 int32_t iLength = pArguments->GetLength(); |
| 957 if (iLength < 1 || iLength > 3) { | 949 if (iLength < 1 || iLength > 3) { |
| 958 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"loadXML"); | 950 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"loadXML"); |
| 959 return; | 951 return; |
| 960 } | 952 } |
| 961 CFX_WideString wsExpression; | 953 CFX_WideString wsExpression; |
| 962 FX_BOOL bIgnoreRoot = TRUE; | 954 bool bIgnoreRoot = true; |
| 963 FX_BOOL bOverwrite = 0; | 955 bool bOverwrite = 0; |
| 964 if (iLength >= 1) { | 956 wsExpression = |
| 965 CFX_ByteString bsExpression = pArguments->GetUTF8String(0); | 957 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 966 wsExpression = CFX_WideString::FromUTF8(bsExpression.AsStringC()); | 958 if (wsExpression.IsEmpty()) |
| 967 if (wsExpression.IsEmpty()) { | |
| 968 return; | |
| 969 } | |
| 970 } | |
| 971 if (iLength >= 2) { | |
| 972 bIgnoreRoot = pArguments->GetInt32(1) == 0 ? FALSE : TRUE; | |
| 973 } | |
| 974 if (iLength >= 3) { | |
| 975 bOverwrite = pArguments->GetInt32(2) == 0 ? FALSE : TRUE; | |
| 976 } | |
| 977 IXFA_Parser* pParser = IXFA_Parser::Create(m_pDocument); | |
| 978 if (!pParser) { | |
| 979 return; | 959 return; |
| 980 } | 960 if (iLength >= 2) |
| 981 CFDE_XMLNode* pXMLNode = NULL; | 961 bIgnoreRoot = !!pArguments->GetInt32(1); |
| 982 int32_t iParserStatus = pParser->ParseXMLData(wsExpression, pXMLNode, NULL); | 962 if (iLength >= 3) |
| 983 if (iParserStatus != XFA_PARSESTATUS_Done || !pXMLNode) { | 963 bOverwrite = !!pArguments->GetInt32(2); |
| 984 pParser->Release(); | 964 std::unique_ptr<IXFA_Parser> pParser(IXFA_Parser::Create(m_pDocument)); |
|
Tom Sepez
2016/05/26 23:55:03
Did we get rid of the Release() in IXFA_Parser in
Wei Li
2016/05/27 00:51:45
thanks, added for the other two unique_ptrs as wel
| |
| 985 pParser = NULL; | 965 if (!pParser) |
| 986 return; | 966 return; |
| 987 } | 967 CFDE_XMLNode* pXMLNode = nullptr; |
| 968 int32_t iParserStatus = | |
| 969 pParser->ParseXMLData(wsExpression, pXMLNode, nullptr); | |
| 970 if (iParserStatus != XFA_PARSESTATUS_Done || !pXMLNode) | |
| 971 return; | |
| 988 if (bIgnoreRoot && | 972 if (bIgnoreRoot && |
| 989 (pXMLNode->GetType() != FDE_XMLNODE_Element || | 973 (pXMLNode->GetType() != FDE_XMLNODE_Element || |
| 990 XFA_RecognizeRichText(static_cast<CFDE_XMLElement*>(pXMLNode)))) { | 974 XFA_RecognizeRichText(static_cast<CFDE_XMLElement*>(pXMLNode)))) { |
| 991 bIgnoreRoot = FALSE; | 975 bIgnoreRoot = false; |
| 992 } | 976 } |
| 993 CXFA_Node* pFakeRoot = Clone(FALSE); | 977 CXFA_Node* pFakeRoot = Clone(FALSE); |
| 994 CFX_WideStringC wsContentType = GetCData(XFA_ATTRIBUTE_ContentType); | 978 CFX_WideStringC wsContentType = GetCData(XFA_ATTRIBUTE_ContentType); |
| 995 if (!wsContentType.IsEmpty()) { | 979 if (!wsContentType.IsEmpty()) { |
| 996 pFakeRoot->SetCData(XFA_ATTRIBUTE_ContentType, | 980 pFakeRoot->SetCData(XFA_ATTRIBUTE_ContentType, |
| 997 CFX_WideString(wsContentType)); | 981 CFX_WideString(wsContentType)); |
| 998 } | 982 } |
| 999 CFDE_XMLNode* pFakeXMLRoot = pFakeRoot->GetXMLMappingNode(); | 983 CFDE_XMLNode* pFakeXMLRoot = pFakeRoot->GetXMLMappingNode(); |
| 1000 if (!pFakeXMLRoot) { | 984 if (!pFakeXMLRoot) { |
| 1001 CFDE_XMLNode* pThisXMLRoot = GetXMLMappingNode(); | 985 CFDE_XMLNode* pThisXMLRoot = GetXMLMappingNode(); |
| 1002 pFakeXMLRoot = pThisXMLRoot ? pThisXMLRoot->Clone(FALSE) : NULL; | 986 pFakeXMLRoot = pThisXMLRoot ? pThisXMLRoot->Clone(FALSE) : nullptr; |
| 1003 } | 987 } |
| 1004 if (!pFakeXMLRoot) { | 988 if (!pFakeXMLRoot) { |
| 1005 CFX_WideStringC wsClassName; | 989 CFX_WideStringC wsClassName; |
| 1006 GetClassName(wsClassName); | 990 GetClassName(wsClassName); |
| 1007 pFakeXMLRoot = new CFDE_XMLElement(CFX_WideString(wsClassName)); | 991 pFakeXMLRoot = new CFDE_XMLElement(CFX_WideString(wsClassName)); |
| 1008 } | 992 } |
| 1009 if (bIgnoreRoot) { | 993 if (bIgnoreRoot) { |
| 1010 CFDE_XMLNode* pXMLChild = pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild); | 994 CFDE_XMLNode* pXMLChild = pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild); |
| 1011 while (pXMLChild) { | 995 while (pXMLChild) { |
| 1012 CFDE_XMLNode* pXMLSibling = | 996 CFDE_XMLNode* pXMLSibling = |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 1040 CXFA_Node* pItem = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); | 1024 CXFA_Node* pItem = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); |
| 1041 RemoveChild(pChild); | 1025 RemoveChild(pChild); |
| 1042 pFakeRoot->InsertChild(pChild); | 1026 pFakeRoot->InsertChild(pChild); |
| 1043 pChild = pItem; | 1027 pChild = pItem; |
| 1044 } | 1028 } |
| 1045 if (GetPacketID() == XFA_XDPPACKET_Form && | 1029 if (GetPacketID() == XFA_XDPPACKET_Form && |
| 1046 GetClassID() == XFA_ELEMENT_ExData) { | 1030 GetClassID() == XFA_ELEMENT_ExData) { |
| 1047 CFDE_XMLNode* pTempXMLNode = GetXMLMappingNode(); | 1031 CFDE_XMLNode* pTempXMLNode = GetXMLMappingNode(); |
| 1048 SetXMLMappingNode(pFakeXMLRoot); | 1032 SetXMLMappingNode(pFakeXMLRoot); |
| 1049 SetFlag(XFA_NODEFLAG_OwnXMLNode, false); | 1033 SetFlag(XFA_NODEFLAG_OwnXMLNode, false); |
| 1050 if (pTempXMLNode && | 1034 if (pTempXMLNode && !pTempXMLNode->GetNodeItem(CFDE_XMLNode::Parent)) { |
| 1051 pTempXMLNode->GetNodeItem(CFDE_XMLNode::Parent) == NULL) { | |
| 1052 pFakeXMLRoot = pTempXMLNode; | 1035 pFakeXMLRoot = pTempXMLNode; |
| 1053 } else { | 1036 } else { |
| 1054 pFakeXMLRoot = NULL; | 1037 pFakeXMLRoot = nullptr; |
| 1055 } | 1038 } |
| 1056 } | 1039 } |
| 1057 MoveBufferMapData(pFakeRoot, this, XFA_CalcData, TRUE); | 1040 MoveBufferMapData(pFakeRoot, this, XFA_CalcData, TRUE); |
| 1058 } else { | 1041 } else { |
| 1059 CXFA_Node* pChild = pFakeRoot->GetNodeItem(XFA_NODEITEM_FirstChild); | 1042 CXFA_Node* pChild = pFakeRoot->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 1060 while (pChild) { | 1043 while (pChild) { |
| 1061 CXFA_Node* pItem = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); | 1044 CXFA_Node* pItem = pChild->GetNodeItem(XFA_NODEITEM_NextSibling); |
| 1062 pFakeRoot->RemoveChild(pChild); | 1045 pFakeRoot->RemoveChild(pChild); |
| 1063 InsertChild(pChild); | 1046 InsertChild(pChild); |
| 1064 pChild->SetFlag(XFA_NODEFLAG_Initialized, true); | 1047 pChild->SetFlag(XFA_NODEFLAG_Initialized, true); |
| 1065 pChild = pItem; | 1048 pChild = pItem; |
| 1066 } | 1049 } |
| 1067 } | 1050 } |
| 1068 if (pFakeXMLRoot) { | 1051 if (pFakeXMLRoot) { |
| 1069 pFakeRoot->SetXMLMappingNode(pFakeXMLRoot); | 1052 pFakeRoot->SetXMLMappingNode(pFakeXMLRoot); |
| 1070 pFakeRoot->SetFlag(XFA_NODEFLAG_OwnXMLNode, false); | 1053 pFakeRoot->SetFlag(XFA_NODEFLAG_OwnXMLNode, false); |
| 1071 } | 1054 } |
| 1072 pFakeRoot->SetFlag(XFA_NODEFLAG_HasRemoved, false); | 1055 pFakeRoot->SetFlag(XFA_NODEFLAG_HasRemoved, false); |
| 1073 } else { | 1056 } else { |
| 1074 if (pFakeXMLRoot) { | 1057 if (pFakeXMLRoot) { |
| 1075 pFakeXMLRoot->Release(); | 1058 pFakeXMLRoot->Release(); |
| 1076 pFakeXMLRoot = NULL; | 1059 pFakeXMLRoot = nullptr; |
| 1077 } | 1060 } |
| 1078 } | 1061 } |
| 1079 pParser->Release(); | |
| 1080 pParser = NULL; | |
| 1081 } | 1062 } |
| 1063 | |
| 1082 void CXFA_Node::Script_NodeClass_SaveFilteredXML(CFXJSE_Arguments* pArguments) { | 1064 void CXFA_Node::Script_NodeClass_SaveFilteredXML(CFXJSE_Arguments* pArguments) { |
| 1065 // TODO(weili): Check whether we need to implement this, pdfium:501. | |
| 1083 } | 1066 } |
| 1084 | 1067 |
| 1085 void CXFA_Node::Script_NodeClass_SaveXML(CFXJSE_Arguments* pArguments) { | 1068 void CXFA_Node::Script_NodeClass_SaveXML(CFXJSE_Arguments* pArguments) { |
| 1086 int32_t iLength = pArguments->GetLength(); | 1069 int32_t iLength = pArguments->GetLength(); |
| 1087 if (iLength < 0 || iLength > 1) { | 1070 if (iLength < 0 || iLength > 1) { |
| 1088 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"saveXML"); | 1071 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"saveXML"); |
| 1089 return; | 1072 return; |
| 1090 } | 1073 } |
| 1091 FX_BOOL bPrettyMode = FALSE; | 1074 bool bPrettyMode = false; |
| 1092 if (iLength == 1) { | 1075 if (iLength == 1) { |
| 1093 if (pArguments->GetUTF8String(0) != "pretty") { | 1076 if (pArguments->GetUTF8String(0) != "pretty") { |
| 1094 ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); | 1077 ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); |
| 1095 return; | 1078 return; |
| 1096 } | 1079 } |
| 1097 bPrettyMode = TRUE; | 1080 bPrettyMode = true; |
| 1098 } | 1081 } |
| 1099 CFX_ByteStringC bsXMLHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; | 1082 CFX_ByteStringC bsXMLHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; |
| 1100 if (GetPacketID() == XFA_XDPPACKET_Form || | 1083 if (GetPacketID() == XFA_XDPPACKET_Form || |
| 1101 GetPacketID() == XFA_XDPPACKET_Datasets) { | 1084 GetPacketID() == XFA_XDPPACKET_Datasets) { |
| 1102 CFDE_XMLNode* pElement = nullptr; | 1085 CFDE_XMLNode* pElement = nullptr; |
| 1103 if (GetPacketID() == XFA_XDPPACKET_Datasets) { | 1086 if (GetPacketID() == XFA_XDPPACKET_Datasets) { |
| 1104 pElement = GetXMLMappingNode(); | 1087 pElement = GetXMLMappingNode(); |
| 1105 if (!pElement || pElement->GetType() != FDE_XMLNODE_Element) { | 1088 if (!pElement || pElement->GetType() != FDE_XMLNODE_Element) { |
| 1106 FXJSE_Value_SetUTF8String(pArguments->GetReturnValue(), bsXMLHeader); | 1089 FXJSE_Value_SetUTF8String(pArguments->GetReturnValue(), bsXMLHeader); |
| 1107 return; | 1090 return; |
| 1108 } | 1091 } |
| 1109 XFA_DataExporter_DealWithDataGroupNode(this); | 1092 XFA_DataExporter_DealWithDataGroupNode(this); |
| 1110 } | 1093 } |
| 1111 std::unique_ptr<IFX_MemoryStream> pMemoryStream( | 1094 std::unique_ptr<IFX_MemoryStream> pMemoryStream( |
| 1112 FX_CreateMemoryStream(TRUE)); | 1095 FX_CreateMemoryStream(TRUE)); |
| 1113 std::unique_ptr<IFX_Stream> pStream(IFX_Stream::CreateStream( | 1096 std::unique_ptr<IFX_Stream> pStream(IFX_Stream::CreateStream( |
| 1114 (IFX_FileWrite*)pMemoryStream.get(), | 1097 (IFX_FileWrite*)pMemoryStream.get(), |
| 1115 FX_STREAMACCESS_Text | FX_STREAMACCESS_Write | FX_STREAMACCESS_Append)); | 1098 FX_STREAMACCESS_Text | FX_STREAMACCESS_Write | FX_STREAMACCESS_Append)); |
| 1116 if (!pStream) { | 1099 if (!pStream) { |
| 1117 FXJSE_Value_SetUTF8String(pArguments->GetReturnValue(), bsXMLHeader); | 1100 FXJSE_Value_SetUTF8String(pArguments->GetReturnValue(), bsXMLHeader); |
| 1118 return; | 1101 return; |
| 1119 } | 1102 } |
| 1120 pStream->SetCodePage(FX_CODEPAGE_UTF8); | 1103 pStream->SetCodePage(FX_CODEPAGE_UTF8); |
| 1121 pStream->WriteData(bsXMLHeader.raw_str(), bsXMLHeader.GetLength()); | 1104 pStream->WriteData(bsXMLHeader.raw_str(), bsXMLHeader.GetLength()); |
| 1122 if (GetPacketID() == XFA_XDPPACKET_Form) | 1105 if (GetPacketID() == XFA_XDPPACKET_Form) |
| 1123 XFA_DataExporter_RegenerateFormFile(this, pStream.get(), NULL, TRUE); | 1106 XFA_DataExporter_RegenerateFormFile(this, pStream.get(), nullptr, TRUE); |
| 1124 else | 1107 else |
| 1125 pElement->SaveXMLNode(pStream.get()); | 1108 pElement->SaveXMLNode(pStream.get()); |
| 1126 // TODO(weili): Check whether we need to save pretty print XML, pdfium:501. | 1109 // TODO(weili): Check whether we need to save pretty print XML, pdfium:501. |
| 1127 // For now, just put it here to avoid unused variable warning. | 1110 // For now, just put it here to avoid unused variable warning. |
| 1128 (void)bPrettyMode; | 1111 (void)bPrettyMode; |
| 1129 FXJSE_Value_SetUTF8String( | 1112 FXJSE_Value_SetUTF8String( |
| 1130 pArguments->GetReturnValue(), | 1113 pArguments->GetReturnValue(), |
| 1131 CFX_ByteStringC(pMemoryStream->GetBuffer(), pMemoryStream->GetSize())); | 1114 CFX_ByteStringC(pMemoryStream->GetBuffer(), pMemoryStream->GetSize())); |
| 1132 return; | 1115 return; |
| 1133 } | 1116 } |
| 1134 FXJSE_Value_SetUTF8String(pArguments->GetReturnValue(), ""); | 1117 FXJSE_Value_SetUTF8String(pArguments->GetReturnValue(), ""); |
| 1135 } | 1118 } |
| 1136 | 1119 |
| 1137 void CXFA_Node::Script_NodeClass_SetAttribute(CFXJSE_Arguments* pArguments) { | 1120 void CXFA_Node::Script_NodeClass_SetAttribute(CFXJSE_Arguments* pArguments) { |
| 1138 int32_t iLength = pArguments->GetLength(); | 1121 int32_t iLength = pArguments->GetLength(); |
| 1139 if (iLength != 2) { | 1122 if (iLength != 2) { |
| 1140 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, | 1123 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, |
| 1141 L"setAttribute"); | 1124 L"setAttribute"); |
| 1142 return; | 1125 return; |
| 1143 } | 1126 } |
| 1144 CFX_WideString wsAttributeValue = | 1127 CFX_WideString wsAttributeValue = |
| 1145 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); | 1128 CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); |
| 1146 CFX_WideString wsAttribute = | 1129 CFX_WideString wsAttribute = |
| 1147 CFX_WideString::FromUTF8(pArguments->GetUTF8String(1).AsStringC()); | 1130 CFX_WideString::FromUTF8(pArguments->GetUTF8String(1).AsStringC()); |
| 1148 SetAttribute(wsAttribute.AsStringC(), wsAttributeValue.AsStringC(), TRUE); | 1131 SetAttribute(wsAttribute.AsStringC(), wsAttributeValue.AsStringC(), true); |
| 1149 } | 1132 } |
| 1150 | 1133 |
| 1151 void CXFA_Node::Script_NodeClass_SetElement(CFXJSE_Arguments* pArguments) { | 1134 void CXFA_Node::Script_NodeClass_SetElement(CFXJSE_Arguments* pArguments) { |
| 1152 int32_t iLength = pArguments->GetLength(); | 1135 int32_t iLength = pArguments->GetLength(); |
| 1153 if (iLength != 1 && iLength != 2) { | 1136 if (iLength != 1 && iLength != 2) { |
| 1154 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"setElement"); | 1137 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"setElement"); |
| 1155 return; | 1138 return; |
| 1156 } | 1139 } |
| 1157 CXFA_Node* pNode = nullptr; | 1140 CXFA_Node* pNode = nullptr; |
| 1158 CFX_WideString wsName; | 1141 CFX_WideString wsName; |
| 1159 if (iLength >= 1) | 1142 pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); |
| 1160 pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); | 1143 if (iLength == 2) |
| 1161 if (iLength >= 2) { | |
| 1162 wsName = CFX_WideString::FromUTF8(pArguments->GetUTF8String(1).AsStringC()); | 1144 wsName = CFX_WideString::FromUTF8(pArguments->GetUTF8String(1).AsStringC()); |
| 1163 } | |
| 1164 // TODO(weili): check whether we need to implement this, pdfium:501. | 1145 // TODO(weili): check whether we need to implement this, pdfium:501. |
| 1165 // For now, just put the variables here to avoid unused variable warning. | 1146 // For now, just put the variables here to avoid unused variable warning. |
| 1166 (void)pNode; | 1147 (void)pNode; |
| 1167 (void)wsName; | 1148 (void)wsName; |
| 1168 } | 1149 } |
| 1169 | 1150 |
| 1170 void CXFA_Node::Script_NodeClass_Ns(CFXJSE_Value* pValue, | 1151 void CXFA_Node::Script_NodeClass_Ns(CFXJSE_Value* pValue, |
| 1171 FX_BOOL bSetting, | 1152 FX_BOOL bSetting, |
| 1172 XFA_ATTRIBUTE eAttribute) { | 1153 XFA_ATTRIBUTE eAttribute) { |
| 1173 if (bSetting) { | 1154 if (bSetting) { |
| 1174 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 1155 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 1175 } else { | 1156 } else { |
| 1176 CFX_WideString wsNameSpace; | 1157 CFX_WideString wsNameSpace; |
| 1177 TryNamespace(wsNameSpace); | 1158 TryNamespace(wsNameSpace); |
| 1178 FXJSE_Value_SetUTF8String(pValue, FX_UTF8Encode(wsNameSpace).AsStringC()); | 1159 FXJSE_Value_SetUTF8String(pValue, FX_UTF8Encode(wsNameSpace).AsStringC()); |
| 1179 } | 1160 } |
| 1180 } | 1161 } |
| 1162 | |
| 1181 void CXFA_Node::Script_NodeClass_Model(CFXJSE_Value* pValue, | 1163 void CXFA_Node::Script_NodeClass_Model(CFXJSE_Value* pValue, |
| 1182 FX_BOOL bSetting, | 1164 FX_BOOL bSetting, |
| 1183 XFA_ATTRIBUTE eAttribute) { | 1165 XFA_ATTRIBUTE eAttribute) { |
| 1184 if (bSetting) { | 1166 if (bSetting) { |
| 1185 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 1167 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 1186 } else { | 1168 } else { |
| 1187 FXJSE_Value_Set(pValue, m_pDocument->GetScriptContext()->GetJSValueFromMap( | 1169 FXJSE_Value_Set(pValue, m_pDocument->GetScriptContext()->GetJSValueFromMap( |
| 1188 GetModelNode())); | 1170 GetModelNode())); |
| 1189 } | 1171 } |
| 1190 } | 1172 } |
| 1173 | |
| 1191 void CXFA_Node::Script_NodeClass_IsContainer(CFXJSE_Value* pValue, | 1174 void CXFA_Node::Script_NodeClass_IsContainer(CFXJSE_Value* pValue, |
| 1192 FX_BOOL bSetting, | 1175 FX_BOOL bSetting, |
| 1193 XFA_ATTRIBUTE eAttribute) { | 1176 XFA_ATTRIBUTE eAttribute) { |
| 1194 if (bSetting) { | 1177 if (bSetting) |
| 1195 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 1178 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 1196 } else { | 1179 else |
| 1197 FXJSE_Value_SetBoolean(pValue, IsContainerNode()); | 1180 FXJSE_Value_SetBoolean(pValue, IsContainerNode()); |
| 1198 } | |
| 1199 } | 1181 } |
| 1182 | |
| 1200 void CXFA_Node::Script_NodeClass_IsNull(CFXJSE_Value* pValue, | 1183 void CXFA_Node::Script_NodeClass_IsNull(CFXJSE_Value* pValue, |
| 1201 FX_BOOL bSetting, | 1184 FX_BOOL bSetting, |
| 1202 XFA_ATTRIBUTE eAttribute) { | 1185 XFA_ATTRIBUTE eAttribute) { |
| 1203 if (bSetting) { | 1186 if (bSetting) { |
| 1204 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 1187 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 1205 } else { | 1188 } else { |
| 1206 if (GetClassID() == XFA_ELEMENT_Subform) { | 1189 if (GetClassID() == XFA_ELEMENT_Subform) { |
| 1207 FXJSE_Value_SetBoolean(pValue, FALSE); | 1190 FXJSE_Value_SetBoolean(pValue, FALSE); |
| 1208 return; | 1191 return; |
| 1209 } | 1192 } |
| 1210 CFX_WideString strValue; | 1193 CFX_WideString strValue; |
| 1211 FXJSE_Value_SetBoolean(pValue, !TryContent(strValue) || strValue.IsEmpty()); | 1194 FXJSE_Value_SetBoolean(pValue, !TryContent(strValue) || strValue.IsEmpty()); |
| 1212 } | 1195 } |
| 1213 } | 1196 } |
| 1197 | |
| 1214 void CXFA_Node::Script_NodeClass_OneOfChild(CFXJSE_Value* pValue, | 1198 void CXFA_Node::Script_NodeClass_OneOfChild(CFXJSE_Value* pValue, |
| 1215 FX_BOOL bSetting, | 1199 FX_BOOL bSetting, |
| 1216 XFA_ATTRIBUTE eAttribute) { | 1200 XFA_ATTRIBUTE eAttribute) { |
| 1217 if (bSetting) { | 1201 if (bSetting) { |
| 1218 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); | 1202 ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
| 1219 } else { | 1203 } else { |
| 1220 CXFA_NodeArray properts; | 1204 CXFA_NodeArray properts; |
| 1221 int32_t iSize = GetNodeList(properts, XFA_NODEFILTER_OneOfProperty); | 1205 int32_t iSize = GetNodeList(properts, XFA_NODEFILTER_OneOfProperty); |
| 1222 if (iSize > 0) { | 1206 if (iSize > 0) { |
| 1223 FXJSE_Value_Set( | 1207 FXJSE_Value_Set( |
| 1224 pValue, | 1208 pValue, |
| 1225 m_pDocument->GetScriptContext()->GetJSValueFromMap(properts[0])); | 1209 m_pDocument->GetScriptContext()->GetJSValueFromMap(properts[0])); |
| 1226 } | 1210 } |
| 1227 } | 1211 } |
| 1228 } | 1212 } |
| 1213 | |
| 1229 void CXFA_Node::Script_ContainerClass_GetDelta(CFXJSE_Arguments* pArguments) {} | 1214 void CXFA_Node::Script_ContainerClass_GetDelta(CFXJSE_Arguments* pArguments) {} |
| 1230 void CXFA_Node::Script_ContainerClass_GetDeltas(CFXJSE_Arguments* pArguments) { | 1215 void CXFA_Node::Script_ContainerClass_GetDeltas(CFXJSE_Arguments* pArguments) { |
| 1231 CXFA_ArrayNodeList* pFormNodes = new CXFA_ArrayNodeList(m_pDocument); | 1216 CXFA_ArrayNodeList* pFormNodes = new CXFA_ArrayNodeList(m_pDocument); |
| 1232 FXJSE_Value_SetObject(pArguments->GetReturnValue(), (CXFA_Object*)pFormNodes, | 1217 FXJSE_Value_SetObject(pArguments->GetReturnValue(), (CXFA_Object*)pFormNodes, |
| 1233 m_pDocument->GetScriptContext()->GetJseNormalClass()); | 1218 m_pDocument->GetScriptContext()->GetJseNormalClass()); |
| 1234 } | 1219 } |
| 1235 void CXFA_Node::Script_ModelClass_ClearErrorList(CFXJSE_Arguments* pArguments) { | 1220 void CXFA_Node::Script_ModelClass_ClearErrorList(CFXJSE_Arguments* pArguments) { |
| 1236 } | 1221 } |
| 1237 void CXFA_Node::Script_ModelClass_CreateNode(CFXJSE_Arguments* pArguments) { | 1222 void CXFA_Node::Script_ModelClass_CreateNode(CFXJSE_Arguments* pArguments) { |
| 1238 Script_Template_CreateNode(pArguments); | 1223 Script_Template_CreateNode(pArguments); |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1468 CXFA_Node* pProtoRoot = | 1453 CXFA_Node* pProtoRoot = |
| 1469 pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Subform) | 1454 pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Subform) |
| 1470 ->GetFirstChildByClass(XFA_ELEMENT_Proto); | 1455 ->GetFirstChildByClass(XFA_ELEMENT_Proto); |
| 1471 if (!wsUseVal.IsEmpty()) { | 1456 if (!wsUseVal.IsEmpty()) { |
| 1472 if (wsUseVal[0] == '#') { | 1457 if (wsUseVal[0] == '#') { |
| 1473 wsID = CFX_WideString(wsUseVal.c_str() + 1, wsUseVal.GetLength() - 1); | 1458 wsID = CFX_WideString(wsUseVal.c_str() + 1, wsUseVal.GetLength() - 1); |
| 1474 } else { | 1459 } else { |
| 1475 wsSOM = wsUseVal; | 1460 wsSOM = wsUseVal; |
| 1476 } | 1461 } |
| 1477 } | 1462 } |
| 1478 CXFA_Node* pProtoNode = NULL; | 1463 CXFA_Node* pProtoNode = nullptr; |
| 1479 if (!wsSOM.IsEmpty()) { | 1464 if (!wsSOM.IsEmpty()) { |
| 1480 uint32_t dwFlag = XFA_RESOLVENODE_Children | | 1465 uint32_t dwFlag = XFA_RESOLVENODE_Children | |
| 1481 XFA_RESOLVENODE_Attributes | | 1466 XFA_RESOLVENODE_Attributes | |
| 1482 XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | | 1467 XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | |
| 1483 XFA_RESOLVENODE_Siblings; | 1468 XFA_RESOLVENODE_Siblings; |
| 1484 XFA_RESOLVENODE_RS resoveNodeRS; | 1469 XFA_RESOLVENODE_RS resoveNodeRS; |
| 1485 int32_t iRet = m_pDocument->GetScriptContext()->ResolveObjects( | 1470 int32_t iRet = m_pDocument->GetScriptContext()->ResolveObjects( |
| 1486 pProtoRoot, wsSOM.AsStringC(), resoveNodeRS, dwFlag); | 1471 pProtoRoot, wsSOM.AsStringC(), resoveNodeRS, dwFlag); |
| 1487 if (iRet > 0 && resoveNodeRS.nodes[0]->IsNode()) { | 1472 if (iRet > 0 && resoveNodeRS.nodes[0]->IsNode()) { |
| 1488 pProtoNode = resoveNodeRS.nodes[0]->AsNode(); | 1473 pProtoNode = resoveNodeRS.nodes[0]->AsNode(); |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1646 Script_Boolean_Value(pValue, bSetting, eAttribute); | 1631 Script_Boolean_Value(pValue, bSetting, eAttribute); |
| 1647 return; | 1632 return; |
| 1648 } | 1633 } |
| 1649 if (bSetting) { | 1634 if (bSetting) { |
| 1650 CFX_ByteString newValue; | 1635 CFX_ByteString newValue; |
| 1651 if (!(FXJSE_Value_IsNull(pValue) || FXJSE_Value_IsUndefined(pValue))) { | 1636 if (!(FXJSE_Value_IsNull(pValue) || FXJSE_Value_IsUndefined(pValue))) { |
| 1652 FXJSE_Value_ToUTF8String(pValue, newValue); | 1637 FXJSE_Value_ToUTF8String(pValue, newValue); |
| 1653 } | 1638 } |
| 1654 CFX_WideString wsNewValue = CFX_WideString::FromUTF8(newValue.AsStringC()); | 1639 CFX_WideString wsNewValue = CFX_WideString::FromUTF8(newValue.AsStringC()); |
| 1655 CFX_WideString wsFormatValue(wsNewValue); | 1640 CFX_WideString wsFormatValue(wsNewValue); |
| 1656 CXFA_WidgetData* pContainerWidgetData = NULL; | 1641 CXFA_WidgetData* pContainerWidgetData = nullptr; |
| 1657 if (GetPacketID() == XFA_XDPPACKET_Datasets) { | 1642 if (GetPacketID() == XFA_XDPPACKET_Datasets) { |
| 1658 CXFA_NodeArray formNodes; | 1643 CXFA_NodeArray formNodes; |
| 1659 GetBindItems(formNodes); | 1644 GetBindItems(formNodes); |
| 1660 CFX_WideString wsPicture; | 1645 CFX_WideString wsPicture; |
| 1661 for (int32_t i = 0; i < formNodes.GetSize(); i++) { | 1646 for (int32_t i = 0; i < formNodes.GetSize(); i++) { |
| 1662 CXFA_Node* pFormNode = formNodes.GetAt(i); | 1647 CXFA_Node* pFormNode = formNodes.GetAt(i); |
| 1663 if (!pFormNode || pFormNode->HasFlag(XFA_NODEFLAG_HasRemoved)) { | 1648 if (!pFormNode || pFormNode->HasFlag(XFA_NODEFLAG_HasRemoved)) { |
| 1664 continue; | 1649 continue; |
| 1665 } | 1650 } |
| 1666 pContainerWidgetData = pFormNode->GetContainerWidgetData(); | 1651 pContainerWidgetData = pFormNode->GetContainerWidgetData(); |
| 1667 if (pContainerWidgetData) { | 1652 if (pContainerWidgetData) { |
| 1668 pContainerWidgetData->GetPictureContent(wsPicture, | 1653 pContainerWidgetData->GetPictureContent(wsPicture, |
| 1669 XFA_VALUEPICTURE_DataBind); | 1654 XFA_VALUEPICTURE_DataBind); |
| 1670 } | 1655 } |
| 1671 if (!wsPicture.IsEmpty()) { | 1656 if (!wsPicture.IsEmpty()) { |
| 1672 break; | 1657 break; |
| 1673 } | 1658 } |
| 1674 pContainerWidgetData = NULL; | 1659 pContainerWidgetData = nullptr; |
| 1675 } | 1660 } |
| 1676 } else if (GetPacketID() == XFA_XDPPACKET_Form) { | 1661 } else if (GetPacketID() == XFA_XDPPACKET_Form) { |
| 1677 pContainerWidgetData = GetContainerWidgetData(); | 1662 pContainerWidgetData = GetContainerWidgetData(); |
| 1678 } | 1663 } |
| 1679 if (pContainerWidgetData) { | 1664 if (pContainerWidgetData) { |
| 1680 pContainerWidgetData->GetFormatDataValue(wsNewValue, wsFormatValue); | 1665 pContainerWidgetData->GetFormatDataValue(wsNewValue, wsFormatValue); |
| 1681 } | 1666 } |
| 1682 SetScriptContent(wsNewValue, wsFormatValue, true, TRUE); | 1667 SetScriptContent(wsNewValue, wsFormatValue, true, TRUE); |
| 1683 } else { | 1668 } else { |
| 1684 CFX_WideString content = GetScriptContent(TRUE); | 1669 CFX_WideString content = GetScriptContent(TRUE); |
| (...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2407 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execEvent"); | 2392 ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"execEvent"); |
| 2408 } | 2393 } |
| 2409 } | 2394 } |
| 2410 void CXFA_Node::Script_ExclGroup_SelectedMember(CFXJSE_Arguments* pArguments) { | 2395 void CXFA_Node::Script_ExclGroup_SelectedMember(CFXJSE_Arguments* pArguments) { |
| 2411 int32_t argc = pArguments->GetLength(); | 2396 int32_t argc = pArguments->GetLength(); |
| 2412 if ((argc == 0) || (argc == 1)) { | 2397 if ((argc == 0) || (argc == 1)) { |
| 2413 CXFA_WidgetData* pWidgetData = GetWidgetData(); | 2398 CXFA_WidgetData* pWidgetData = GetWidgetData(); |
| 2414 if (!pWidgetData) { | 2399 if (!pWidgetData) { |
| 2415 FXJSE_Value_SetNull(pArguments->GetReturnValue()); | 2400 FXJSE_Value_SetNull(pArguments->GetReturnValue()); |
| 2416 } else { | 2401 } else { |
| 2417 CXFA_Node* pReturnNode = NULL; | 2402 CXFA_Node* pReturnNode = nullptr; |
| 2418 if (argc == 0) { | 2403 if (argc == 0) { |
| 2419 pReturnNode = pWidgetData->GetSelectedMember(); | 2404 pReturnNode = pWidgetData->GetSelectedMember(); |
| 2420 } else { | 2405 } else { |
| 2421 CFX_ByteString szName; | 2406 CFX_ByteString szName; |
| 2422 szName = pArguments->GetUTF8String(0); | 2407 szName = pArguments->GetUTF8String(0); |
| 2423 pReturnNode = pWidgetData->SetSelectedMember( | 2408 pReturnNode = pWidgetData->SetSelectedMember( |
| 2424 CFX_WideString::FromUTF8(szName.AsStringC()).AsStringC()); | 2409 CFX_WideString::FromUTF8(szName.AsStringC()).AsStringC()); |
| 2425 } | 2410 } |
| 2426 if (pReturnNode) { | 2411 if (pReturnNode) { |
| 2427 FXJSE_Value_Set( | 2412 FXJSE_Value_Set( |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2491 } | 2476 } |
| 2492 if ((eCurType != XFA_ELEMENT_Subform) && | 2477 if ((eCurType != XFA_ELEMENT_Subform) && |
| 2493 (eCurType != XFA_ELEMENT_SubformSet)) { | 2478 (eCurType != XFA_ELEMENT_SubformSet)) { |
| 2494 continue; | 2479 continue; |
| 2495 } | 2480 } |
| 2496 if (iCount == 0) { | 2481 if (iCount == 0) { |
| 2497 CFX_WideStringC wsName = pNode->GetCData(XFA_ATTRIBUTE_Name); | 2482 CFX_WideStringC wsName = pNode->GetCData(XFA_ATTRIBUTE_Name); |
| 2498 CFX_WideStringC wsInstName = pInstMgrNode->GetCData(XFA_ATTRIBUTE_Name); | 2483 CFX_WideStringC wsInstName = pInstMgrNode->GetCData(XFA_ATTRIBUTE_Name); |
| 2499 if (wsInstName.GetLength() < 1 || wsInstName.GetAt(0) != '_' || | 2484 if (wsInstName.GetLength() < 1 || wsInstName.GetAt(0) != '_' || |
| 2500 wsInstName.Mid(1) != wsName) { | 2485 wsInstName.Mid(1) != wsName) { |
| 2501 return NULL; | 2486 return nullptr; |
| 2502 } | 2487 } |
| 2503 dwNameHash = pNode->GetNameHash(); | 2488 dwNameHash = pNode->GetNameHash(); |
| 2504 } | 2489 } |
| 2505 if (dwNameHash != pNode->GetNameHash()) { | 2490 if (dwNameHash != pNode->GetNameHash()) { |
| 2506 break; | 2491 break; |
| 2507 } | 2492 } |
| 2508 iCount++; | 2493 iCount++; |
| 2509 if (iCount > iIndex) { | 2494 if (iCount > iIndex) { |
| 2510 return pNode; | 2495 return pNode; |
| 2511 } | 2496 } |
| 2512 } | 2497 } |
| 2513 return NULL; | 2498 return nullptr; |
| 2514 } | 2499 } |
| 2515 void CXFA_Node::Script_Som_InstanceIndex(CFXJSE_Value* pValue, | 2500 void CXFA_Node::Script_Som_InstanceIndex(CFXJSE_Value* pValue, |
| 2516 FX_BOOL bSetting, | 2501 FX_BOOL bSetting, |
| 2517 XFA_ATTRIBUTE eAttribute) { | 2502 XFA_ATTRIBUTE eAttribute) { |
| 2518 if (bSetting) { | 2503 if (bSetting) { |
| 2519 int32_t iTo = FXJSE_Value_ToInteger(pValue); | 2504 int32_t iTo = FXJSE_Value_ToInteger(pValue); |
| 2520 int32_t iFrom = Subform_and_SubformSet_InstanceIndex(); | 2505 int32_t iFrom = Subform_and_SubformSet_InstanceIndex(); |
| 2521 CXFA_Node* pManagerNode = NULL; | 2506 CXFA_Node* pManagerNode = nullptr; |
| 2522 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; | 2507 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; |
| 2523 pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { | 2508 pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { |
| 2524 if (pNode->GetClassID() == XFA_ELEMENT_InstanceManager) { | 2509 if (pNode->GetClassID() == XFA_ELEMENT_InstanceManager) { |
| 2525 pManagerNode = pNode; | 2510 pManagerNode = pNode; |
| 2526 break; | 2511 break; |
| 2527 } | 2512 } |
| 2528 } | 2513 } |
| 2529 if (pManagerNode) { | 2514 if (pManagerNode) { |
| 2530 pManagerNode->InstanceManager_MoveInstance(iTo, iFrom); | 2515 pManagerNode->InstanceManager_MoveInstance(iTo, iFrom); |
| 2531 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 2516 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 2545 } | 2530 } |
| 2546 } else { | 2531 } else { |
| 2547 FXJSE_Value_SetInteger(pValue, Subform_and_SubformSet_InstanceIndex()); | 2532 FXJSE_Value_SetInteger(pValue, Subform_and_SubformSet_InstanceIndex()); |
| 2548 } | 2533 } |
| 2549 } | 2534 } |
| 2550 void CXFA_Node::Script_Subform_InstanceManager(CFXJSE_Value* pValue, | 2535 void CXFA_Node::Script_Subform_InstanceManager(CFXJSE_Value* pValue, |
| 2551 FX_BOOL bSetting, | 2536 FX_BOOL bSetting, |
| 2552 XFA_ATTRIBUTE eAttribute) { | 2537 XFA_ATTRIBUTE eAttribute) { |
| 2553 if (!bSetting) { | 2538 if (!bSetting) { |
| 2554 CFX_WideStringC wsName = GetCData(XFA_ATTRIBUTE_Name); | 2539 CFX_WideStringC wsName = GetCData(XFA_ATTRIBUTE_Name); |
| 2555 CXFA_Node* pInstanceMgr = NULL; | 2540 CXFA_Node* pInstanceMgr = nullptr; |
| 2556 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; | 2541 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; |
| 2557 pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { | 2542 pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { |
| 2558 if (pNode->GetClassID() == XFA_ELEMENT_InstanceManager) { | 2543 if (pNode->GetClassID() == XFA_ELEMENT_InstanceManager) { |
| 2559 CFX_WideStringC wsInstMgrName = pNode->GetCData(XFA_ATTRIBUTE_Name); | 2544 CFX_WideStringC wsInstMgrName = pNode->GetCData(XFA_ATTRIBUTE_Name); |
| 2560 if (wsInstMgrName.GetLength() >= 1 && wsInstMgrName.GetAt(0) == '_' && | 2545 if (wsInstMgrName.GetLength() >= 1 && wsInstMgrName.GetAt(0) == '_' && |
| 2561 wsInstMgrName.Mid(1) == wsName) { | 2546 wsInstMgrName.Mid(1) == wsName) { |
| 2562 pInstanceMgr = pNode; | 2547 pInstanceMgr = pNode; |
| 2563 } | 2548 } |
| 2564 break; | 2549 break; |
| 2565 } | 2550 } |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3044 CXFA_Node* pDataNode = pFormNode->GetBindData(); | 3029 CXFA_Node* pDataNode = pFormNode->GetBindData(); |
| 3045 if (!pDataNode) { | 3030 if (!pDataNode) { |
| 3046 continue; | 3031 continue; |
| 3047 } | 3032 } |
| 3048 if (pDataNode->RemoveBindItem(pFormNode) == 0) { | 3033 if (pDataNode->RemoveBindItem(pFormNode) == 0) { |
| 3049 if (CXFA_Node* pDataParent = | 3034 if (CXFA_Node* pDataParent = |
| 3050 pDataNode->GetNodeItem(XFA_NODEITEM_Parent)) { | 3035 pDataNode->GetNodeItem(XFA_NODEITEM_Parent)) { |
| 3051 pDataParent->RemoveChild(pDataNode); | 3036 pDataParent->RemoveChild(pDataNode); |
| 3052 } | 3037 } |
| 3053 } | 3038 } |
| 3054 pFormNode->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); | 3039 pFormNode->SetObject(XFA_ATTRIBUTE_BindingNode, nullptr); |
| 3055 } | 3040 } |
| 3056 } | 3041 } |
| 3057 static CXFA_Node* XFA_ScriptInstanceManager_CreateInstance( | 3042 static CXFA_Node* XFA_ScriptInstanceManager_CreateInstance( |
| 3058 CXFA_Node* pInstMgrNode, | 3043 CXFA_Node* pInstMgrNode, |
| 3059 FX_BOOL bDataMerge) { | 3044 FX_BOOL bDataMerge) { |
| 3060 CXFA_Document* pDocument = pInstMgrNode->GetDocument(); | 3045 CXFA_Document* pDocument = pInstMgrNode->GetDocument(); |
| 3061 CXFA_Node* pTemplateNode = pInstMgrNode->GetTemplateNode(); | 3046 CXFA_Node* pTemplateNode = pInstMgrNode->GetTemplateNode(); |
| 3062 CXFA_Node* pFormParent = pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent); | 3047 CXFA_Node* pFormParent = pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent); |
| 3063 CXFA_Node* pDataScope = NULL; | 3048 CXFA_Node* pDataScope = nullptr; |
| 3064 for (CXFA_Node* pRootBoundNode = pFormParent; | 3049 for (CXFA_Node* pRootBoundNode = pFormParent; |
| 3065 pRootBoundNode && | 3050 pRootBoundNode && |
| 3066 pRootBoundNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode; | 3051 pRootBoundNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode; |
| 3067 pRootBoundNode = pRootBoundNode->GetNodeItem(XFA_NODEITEM_Parent)) { | 3052 pRootBoundNode = pRootBoundNode->GetNodeItem(XFA_NODEITEM_Parent)) { |
| 3068 pDataScope = pRootBoundNode->GetBindData(); | 3053 pDataScope = pRootBoundNode->GetBindData(); |
| 3069 if (pDataScope) { | 3054 if (pDataScope) { |
| 3070 break; | 3055 break; |
| 3071 } | 3056 } |
| 3072 } | 3057 } |
| 3073 if (!pDataScope) { | 3058 if (!pDataScope) { |
| (...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3710 XFA_KEYTYPE_Element); | 3695 XFA_KEYTYPE_Element); |
| 3711 } | 3696 } |
| 3712 FX_BOOL CXFA_Node::HasAttribute(XFA_ATTRIBUTE eAttr, FX_BOOL bCanInherit) { | 3697 FX_BOOL CXFA_Node::HasAttribute(XFA_ATTRIBUTE eAttr, FX_BOOL bCanInherit) { |
| 3713 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); | 3698 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); |
| 3714 return HasMapModuleKey(pKey, bCanInherit); | 3699 return HasMapModuleKey(pKey, bCanInherit); |
| 3715 } | 3700 } |
| 3716 FX_BOOL CXFA_Node::SetAttribute(XFA_ATTRIBUTE eAttr, | 3701 FX_BOOL CXFA_Node::SetAttribute(XFA_ATTRIBUTE eAttr, |
| 3717 const CFX_WideStringC& wsValue, | 3702 const CFX_WideStringC& wsValue, |
| 3718 bool bNotify) { | 3703 bool bNotify) { |
| 3719 const XFA_ATTRIBUTEINFO* pAttr = XFA_GetAttributeByID(eAttr); | 3704 const XFA_ATTRIBUTEINFO* pAttr = XFA_GetAttributeByID(eAttr); |
| 3720 if (pAttr == NULL) { | 3705 if (!pAttr) |
| 3721 return FALSE; | 3706 return FALSE; |
| 3722 } | 3707 |
| 3723 XFA_ATTRIBUTETYPE eType = pAttr->eType; | 3708 XFA_ATTRIBUTETYPE eType = pAttr->eType; |
| 3724 if (eType == XFA_ATTRIBUTETYPE_NOTSURE) { | 3709 if (eType == XFA_ATTRIBUTETYPE_NOTSURE) { |
| 3725 const XFA_NOTSUREATTRIBUTE* pNotsure = | 3710 const XFA_NOTSUREATTRIBUTE* pNotsure = |
| 3726 XFA_GetNotsureAttribute(GetClassID(), pAttr->eName); | 3711 XFA_GetNotsureAttribute(GetClassID(), pAttr->eName); |
| 3727 eType = pNotsure ? pNotsure->eType : XFA_ATTRIBUTETYPE_Cdata; | 3712 eType = pNotsure ? pNotsure->eType : XFA_ATTRIBUTETYPE_Cdata; |
| 3728 } | 3713 } |
| 3729 switch (eType) { | 3714 switch (eType) { |
| 3730 case XFA_ATTRIBUTETYPE_Enum: { | 3715 case XFA_ATTRIBUTETYPE_Enum: { |
| 3731 const XFA_ATTRIBUTEENUMINFO* pEnum = XFA_GetAttributeEnumByName(wsValue); | 3716 const XFA_ATTRIBUTEENUMINFO* pEnum = XFA_GetAttributeEnumByName(wsValue); |
| 3732 return SetEnum(pAttr->eName, | 3717 return SetEnum(pAttr->eName, |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 3747 return SetMeasure(pAttr->eName, CXFA_Measurement(wsValue), bNotify); | 3732 return SetMeasure(pAttr->eName, CXFA_Measurement(wsValue), bNotify); |
| 3748 default: | 3733 default: |
| 3749 break; | 3734 break; |
| 3750 } | 3735 } |
| 3751 return FALSE; | 3736 return FALSE; |
| 3752 } | 3737 } |
| 3753 FX_BOOL CXFA_Node::GetAttribute(XFA_ATTRIBUTE eAttr, | 3738 FX_BOOL CXFA_Node::GetAttribute(XFA_ATTRIBUTE eAttr, |
| 3754 CFX_WideString& wsValue, | 3739 CFX_WideString& wsValue, |
| 3755 FX_BOOL bUseDefault) { | 3740 FX_BOOL bUseDefault) { |
| 3756 const XFA_ATTRIBUTEINFO* pAttr = XFA_GetAttributeByID(eAttr); | 3741 const XFA_ATTRIBUTEINFO* pAttr = XFA_GetAttributeByID(eAttr); |
| 3757 if (pAttr == NULL) { | 3742 if (!pAttr) { |
| 3758 return FALSE; | 3743 return FALSE; |
| 3759 } | 3744 } |
| 3760 XFA_ATTRIBUTETYPE eType = pAttr->eType; | 3745 XFA_ATTRIBUTETYPE eType = pAttr->eType; |
| 3761 if (eType == XFA_ATTRIBUTETYPE_NOTSURE) { | 3746 if (eType == XFA_ATTRIBUTETYPE_NOTSURE) { |
| 3762 const XFA_NOTSUREATTRIBUTE* pNotsure = | 3747 const XFA_NOTSUREATTRIBUTE* pNotsure = |
| 3763 XFA_GetNotsureAttribute(GetClassID(), pAttr->eName); | 3748 XFA_GetNotsureAttribute(GetClassID(), pAttr->eName); |
| 3764 eType = pNotsure ? pNotsure->eType : XFA_ATTRIBUTETYPE_Cdata; | 3749 eType = pNotsure ? pNotsure->eType : XFA_ATTRIBUTETYPE_Cdata; |
| 3765 } | 3750 } |
| 3766 switch (eType) { | 3751 switch (eType) { |
| 3767 case XFA_ATTRIBUTETYPE_Enum: { | 3752 case XFA_ATTRIBUTETYPE_Enum: { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3835 return TRUE; | 3820 return TRUE; |
| 3836 } | 3821 } |
| 3837 FX_BOOL CXFA_Node::RemoveAttribute(const CFX_WideStringC& wsAttr) { | 3822 FX_BOOL CXFA_Node::RemoveAttribute(const CFX_WideStringC& wsAttr) { |
| 3838 void* pKey = XFA_GetMapKey_Custom(wsAttr); | 3823 void* pKey = XFA_GetMapKey_Custom(wsAttr); |
| 3839 RemoveMapModuleKey(pKey); | 3824 RemoveMapModuleKey(pKey); |
| 3840 return TRUE; | 3825 return TRUE; |
| 3841 } | 3826 } |
| 3842 FX_BOOL CXFA_Node::TryBoolean(XFA_ATTRIBUTE eAttr, | 3827 FX_BOOL CXFA_Node::TryBoolean(XFA_ATTRIBUTE eAttr, |
| 3843 FX_BOOL& bValue, | 3828 FX_BOOL& bValue, |
| 3844 FX_BOOL bUseDefault) { | 3829 FX_BOOL bUseDefault) { |
| 3845 void* pValue = NULL; | 3830 void* pValue = nullptr; |
| 3846 if (!GetValue(eAttr, XFA_ATTRIBUTETYPE_Boolean, bUseDefault, pValue)) { | 3831 if (!GetValue(eAttr, XFA_ATTRIBUTETYPE_Boolean, bUseDefault, pValue)) { |
|
Tom Sepez
2016/05/26 23:55:03
nit: no {}
Wei Li
2016/05/27 00:51:46
Done.
| |
| 3847 return FALSE; | 3832 return FALSE; |
| 3848 } | 3833 } |
| 3849 bValue = (FX_BOOL)(uintptr_t)pValue; | 3834 bValue = (FX_BOOL)(uintptr_t)pValue; |
| 3850 return TRUE; | 3835 return TRUE; |
| 3851 } | 3836 } |
| 3852 FX_BOOL CXFA_Node::TryInteger(XFA_ATTRIBUTE eAttr, | 3837 FX_BOOL CXFA_Node::TryInteger(XFA_ATTRIBUTE eAttr, |
| 3853 int32_t& iValue, | 3838 int32_t& iValue, |
| 3854 FX_BOOL bUseDefault) { | 3839 FX_BOOL bUseDefault) { |
| 3855 void* pValue = NULL; | 3840 void* pValue = nullptr; |
| 3856 if (!GetValue(eAttr, XFA_ATTRIBUTETYPE_Integer, bUseDefault, pValue)) { | 3841 if (!GetValue(eAttr, XFA_ATTRIBUTETYPE_Integer, bUseDefault, pValue)) { |
|
Tom Sepez
2016/05/26 23:55:04
ditto
Wei Li
2016/05/27 00:51:45
Done.
| |
| 3857 return FALSE; | 3842 return FALSE; |
| 3858 } | 3843 } |
| 3859 iValue = (int32_t)(uintptr_t)pValue; | 3844 iValue = (int32_t)(uintptr_t)pValue; |
| 3860 return TRUE; | 3845 return TRUE; |
| 3861 } | 3846 } |
| 3862 FX_BOOL CXFA_Node::TryEnum(XFA_ATTRIBUTE eAttr, | 3847 FX_BOOL CXFA_Node::TryEnum(XFA_ATTRIBUTE eAttr, |
| 3863 XFA_ATTRIBUTEENUM& eValue, | 3848 XFA_ATTRIBUTEENUM& eValue, |
| 3864 FX_BOOL bUseDefault) { | 3849 FX_BOOL bUseDefault) { |
| 3865 void* pValue = NULL; | 3850 void* pValue = nullptr; |
| 3866 if (!GetValue(eAttr, XFA_ATTRIBUTETYPE_Enum, bUseDefault, pValue)) { | 3851 if (!GetValue(eAttr, XFA_ATTRIBUTETYPE_Enum, bUseDefault, pValue)) { |
|
Tom Sepez
2016/05/26 23:55:04
ditto
Wei Li
2016/05/27 00:51:45
Done.
| |
| 3867 return FALSE; | 3852 return FALSE; |
| 3868 } | 3853 } |
| 3869 eValue = (XFA_ATTRIBUTEENUM)(uintptr_t)pValue; | 3854 eValue = (XFA_ATTRIBUTEENUM)(uintptr_t)pValue; |
| 3870 return TRUE; | 3855 return TRUE; |
| 3871 } | 3856 } |
| 3872 | 3857 |
| 3873 FX_BOOL CXFA_Node::SetMeasure(XFA_ATTRIBUTE eAttr, | 3858 FX_BOOL CXFA_Node::SetMeasure(XFA_ATTRIBUTE eAttr, |
| 3874 CXFA_Measurement mValue, | 3859 CXFA_Measurement mValue, |
| 3875 bool bNotify) { | 3860 bool bNotify) { |
| 3876 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); | 3861 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4039 } else { | 4024 } else { |
| 4040 CFX_WideStringC wsValueC; | 4025 CFX_WideStringC wsValueC; |
| 4041 if (GetMapModuleString(pKey, wsValueC)) { | 4026 if (GetMapModuleString(pKey, wsValueC)) { |
| 4042 wsValue = wsValueC; | 4027 wsValue = wsValueC; |
| 4043 return TRUE; | 4028 return TRUE; |
| 4044 } | 4029 } |
| 4045 } | 4030 } |
| 4046 if (!bUseDefault) { | 4031 if (!bUseDefault) { |
| 4047 return FALSE; | 4032 return FALSE; |
| 4048 } | 4033 } |
| 4049 void* pValue = NULL; | 4034 void* pValue = nullptr; |
| 4050 if (XFA_GetAttributeDefaultValue(pValue, GetClassID(), eAttr, | 4035 if (XFA_GetAttributeDefaultValue(pValue, GetClassID(), eAttr, |
| 4051 XFA_ATTRIBUTETYPE_Cdata, m_ePacket)) { | 4036 XFA_ATTRIBUTETYPE_Cdata, m_ePacket)) { |
| 4052 wsValue = (const FX_WCHAR*)pValue; | 4037 wsValue = (const FX_WCHAR*)pValue; |
| 4053 return TRUE; | 4038 return TRUE; |
| 4054 } | 4039 } |
| 4055 return FALSE; | 4040 return FALSE; |
| 4056 } | 4041 } |
| 4057 FX_BOOL CXFA_Node::TryCData(XFA_ATTRIBUTE eAttr, | 4042 FX_BOOL CXFA_Node::TryCData(XFA_ATTRIBUTE eAttr, |
| 4058 CFX_WideStringC& wsValue, | 4043 CFX_WideStringC& wsValue, |
| 4059 FX_BOOL bUseDefault, | 4044 FX_BOOL bUseDefault, |
| 4060 FX_BOOL bProto) { | 4045 FX_BOOL bProto) { |
| 4061 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); | 4046 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); |
| 4062 if (eAttr == XFA_ATTRIBUTE_Value) { | 4047 if (eAttr == XFA_ATTRIBUTE_Value) { |
| 4063 CFX_WideString* pStr = (CFX_WideString*)GetUserData(pKey, bProto); | 4048 CFX_WideString* pStr = (CFX_WideString*)GetUserData(pKey, bProto); |
| 4064 if (pStr) { | 4049 if (pStr) { |
| 4065 wsValue = pStr->AsStringC(); | 4050 wsValue = pStr->AsStringC(); |
| 4066 return TRUE; | 4051 return TRUE; |
| 4067 } | 4052 } |
| 4068 } else { | 4053 } else { |
| 4069 if (GetMapModuleString(pKey, wsValue)) { | 4054 if (GetMapModuleString(pKey, wsValue)) { |
| 4070 return TRUE; | 4055 return TRUE; |
| 4071 } | 4056 } |
| 4072 } | 4057 } |
| 4073 if (!bUseDefault) { | 4058 if (!bUseDefault) { |
| 4074 return FALSE; | 4059 return FALSE; |
| 4075 } | 4060 } |
| 4076 void* pValue = NULL; | 4061 void* pValue = nullptr; |
| 4077 if (XFA_GetAttributeDefaultValue(pValue, GetClassID(), eAttr, | 4062 if (XFA_GetAttributeDefaultValue(pValue, GetClassID(), eAttr, |
| 4078 XFA_ATTRIBUTETYPE_Cdata, m_ePacket)) { | 4063 XFA_ATTRIBUTETYPE_Cdata, m_ePacket)) { |
| 4079 wsValue = (CFX_WideStringC)(const FX_WCHAR*)pValue; | 4064 wsValue = (CFX_WideStringC)(const FX_WCHAR*)pValue; |
| 4080 return TRUE; | 4065 return TRUE; |
| 4081 } | 4066 } |
| 4082 return FALSE; | 4067 return FALSE; |
| 4083 } | 4068 } |
| 4084 FX_BOOL CXFA_Node::SetObject(XFA_ATTRIBUTE eAttr, | 4069 FX_BOOL CXFA_Node::SetObject(XFA_ATTRIBUTE eAttr, |
| 4085 void* pData, | 4070 void* pData, |
| 4086 XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo) { | 4071 XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo) { |
| 4087 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); | 4072 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); |
| 4088 return SetUserData(pKey, pData, pCallbackInfo); | 4073 return SetUserData(pKey, pData, pCallbackInfo); |
| 4089 } | 4074 } |
| 4090 FX_BOOL CXFA_Node::TryObject(XFA_ATTRIBUTE eAttr, void*& pData) { | 4075 FX_BOOL CXFA_Node::TryObject(XFA_ATTRIBUTE eAttr, void*& pData) { |
| 4091 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); | 4076 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); |
| 4092 pData = GetUserData(pKey); | 4077 pData = GetUserData(pKey); |
| 4093 return pData != NULL; | 4078 return pData != nullptr; |
| 4094 } | 4079 } |
| 4095 FX_BOOL CXFA_Node::SetValue(XFA_ATTRIBUTE eAttr, | 4080 FX_BOOL CXFA_Node::SetValue(XFA_ATTRIBUTE eAttr, |
| 4096 XFA_ATTRIBUTETYPE eType, | 4081 XFA_ATTRIBUTETYPE eType, |
| 4097 void* pValue, | 4082 void* pValue, |
| 4098 bool bNotify) { | 4083 bool bNotify) { |
| 4099 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); | 4084 void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); |
| 4100 OnChanging(eAttr, bNotify); | 4085 OnChanging(eAttr, bNotify); |
| 4101 SetMapModuleValue(pKey, pValue); | 4086 SetMapModuleValue(pKey, pValue); |
| 4102 OnChanged(eAttr, bNotify, FALSE); | 4087 OnChanged(eAttr, bNotify, FALSE); |
| 4103 if (IsNeedSavingXMLNode()) { | 4088 if (IsNeedSavingXMLNode()) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4136 return TRUE; | 4121 return TRUE; |
| 4137 } | 4122 } |
| 4138 if (!bUseDefault) { | 4123 if (!bUseDefault) { |
| 4139 return FALSE; | 4124 return FALSE; |
| 4140 } | 4125 } |
| 4141 return XFA_GetAttributeDefaultValue(pValue, GetClassID(), eAttr, eType, | 4126 return XFA_GetAttributeDefaultValue(pValue, GetClassID(), eAttr, eType, |
| 4142 m_ePacket); | 4127 m_ePacket); |
| 4143 } | 4128 } |
| 4144 static void XFA_DefaultFreeData(void* pData) {} | 4129 static void XFA_DefaultFreeData(void* pData) {} |
| 4145 static XFA_MAPDATABLOCKCALLBACKINFO gs_XFADefaultFreeData = { | 4130 static XFA_MAPDATABLOCKCALLBACKINFO gs_XFADefaultFreeData = { |
| 4146 XFA_DefaultFreeData, NULL}; | 4131 XFA_DefaultFreeData, nullptr}; |
| 4147 FX_BOOL CXFA_Node::SetUserData(void* pKey, | 4132 FX_BOOL CXFA_Node::SetUserData(void* pKey, |
| 4148 void* pData, | 4133 void* pData, |
| 4149 XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo) { | 4134 XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo) { |
| 4150 SetMapModuleBuffer(pKey, &pData, sizeof(void*), | 4135 SetMapModuleBuffer(pKey, &pData, sizeof(void*), |
| 4151 pCallbackInfo ? pCallbackInfo : &gs_XFADefaultFreeData); | 4136 pCallbackInfo ? pCallbackInfo : &gs_XFADefaultFreeData); |
| 4152 return TRUE; | 4137 return TRUE; |
| 4153 } | 4138 } |
| 4154 FX_BOOL CXFA_Node::TryUserData(void* pKey, void*& pData, FX_BOOL bProtoAlso) { | 4139 FX_BOOL CXFA_Node::TryUserData(void* pKey, void*& pData, FX_BOOL bProtoAlso) { |
| 4155 int32_t iBytes = 0; | 4140 int32_t iBytes = 0; |
| 4156 if (!GetMapModuleBuffer(pKey, pData, iBytes, bProtoAlso)) { | 4141 if (!GetMapModuleBuffer(pKey, pData, iBytes, bProtoAlso)) { |
| 4157 return FALSE; | 4142 return FALSE; |
| 4158 } | 4143 } |
| 4159 return iBytes == sizeof(void*) && FXSYS_memcpy(&pData, pData, iBytes); | 4144 return iBytes == sizeof(void*) && FXSYS_memcpy(&pData, pData, iBytes); |
| 4160 } | 4145 } |
| 4161 FX_BOOL CXFA_Node::SetScriptContent(const CFX_WideString& wsContent, | 4146 FX_BOOL CXFA_Node::SetScriptContent(const CFX_WideString& wsContent, |
| 4162 const CFX_WideString& wsXMLValue, | 4147 const CFX_WideString& wsXMLValue, |
| 4163 bool bNotify, | 4148 bool bNotify, |
| 4164 FX_BOOL bScriptModify, | 4149 FX_BOOL bScriptModify, |
| 4165 FX_BOOL bSyncData) { | 4150 FX_BOOL bSyncData) { |
| 4166 CXFA_Node* pNode = NULL; | 4151 CXFA_Node* pNode = nullptr; |
| 4167 CXFA_Node* pBindNode = NULL; | 4152 CXFA_Node* pBindNode = nullptr; |
| 4168 switch (GetObjectType()) { | 4153 switch (GetObjectType()) { |
| 4169 case XFA_OBJECTTYPE_ContainerNode: { | 4154 case XFA_OBJECTTYPE_ContainerNode: { |
| 4170 if (XFA_FieldIsMultiListBox(this)) { | 4155 if (XFA_FieldIsMultiListBox(this)) { |
| 4171 CXFA_Node* pValue = GetProperty(0, XFA_ELEMENT_Value); | 4156 CXFA_Node* pValue = GetProperty(0, XFA_ELEMENT_Value); |
| 4172 CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild); | 4157 CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 4173 ASSERT(pChildValue); | 4158 ASSERT(pChildValue); |
| 4174 pChildValue->SetCData(XFA_ATTRIBUTE_ContentType, L"text/xml"); | 4159 pChildValue->SetCData(XFA_ATTRIBUTE_ContentType, L"text/xml"); |
| 4175 pChildValue->SetScriptContent(wsContent, wsContent, bNotify, | 4160 pChildValue->SetScriptContent(wsContent, wsContent, bNotify, |
| 4176 bScriptModify, FALSE); | 4161 bScriptModify, FALSE); |
| 4177 CXFA_Node* pBind = GetBindData(); | 4162 CXFA_Node* pBind = GetBindData(); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 4200 while (CXFA_Node* pChildNode = | 4185 while (CXFA_Node* pChildNode = |
| 4201 pBind->GetNodeItem(XFA_NODEITEM_FirstChild)) { | 4186 pBind->GetNodeItem(XFA_NODEITEM_FirstChild)) { |
| 4202 pBind->RemoveChild(pChildNode); | 4187 pBind->RemoveChild(pChildNode); |
| 4203 } | 4188 } |
| 4204 } else { | 4189 } else { |
| 4205 CXFA_NodeArray valueNodes; | 4190 CXFA_NodeArray valueNodes; |
| 4206 int32_t iDatas = pBind->GetNodeList( | 4191 int32_t iDatas = pBind->GetNodeList( |
| 4207 valueNodes, XFA_NODEFILTER_Children, XFA_ELEMENT_DataValue); | 4192 valueNodes, XFA_NODEFILTER_Children, XFA_ELEMENT_DataValue); |
| 4208 if (iDatas < iSize) { | 4193 if (iDatas < iSize) { |
| 4209 int32_t iAddNodes = iSize - iDatas; | 4194 int32_t iAddNodes = iSize - iDatas; |
| 4210 CXFA_Node* pValueNodes = NULL; | 4195 CXFA_Node* pValueNodes = nullptr; |
| 4211 while (iAddNodes-- > 0) { | 4196 while (iAddNodes-- > 0) { |
| 4212 pValueNodes = | 4197 pValueNodes = |
| 4213 pBind->CreateSamePacketNode(XFA_ELEMENT_DataValue); | 4198 pBind->CreateSamePacketNode(XFA_ELEMENT_DataValue); |
| 4214 pValueNodes->SetCData(XFA_ATTRIBUTE_Name, L"value"); | 4199 pValueNodes->SetCData(XFA_ATTRIBUTE_Name, L"value"); |
| 4215 pValueNodes->CreateXMLMappingNode(); | 4200 pValueNodes->CreateXMLMappingNode(); |
| 4216 pBind->InsertChild(pValueNodes); | 4201 pBind->InsertChild(pValueNodes); |
| 4217 } | 4202 } |
| 4218 pValueNodes = NULL; | 4203 pValueNodes = nullptr; |
| 4219 } else if (iDatas > iSize) { | 4204 } else if (iDatas > iSize) { |
| 4220 int32_t iDelNodes = iDatas - iSize; | 4205 int32_t iDelNodes = iDatas - iSize; |
| 4221 while (iDelNodes-- > 0) { | 4206 while (iDelNodes-- > 0) { |
| 4222 pBind->RemoveChild(pBind->GetNodeItem(XFA_NODEITEM_FirstChild)); | 4207 pBind->RemoveChild(pBind->GetNodeItem(XFA_NODEITEM_FirstChild)); |
| 4223 } | 4208 } |
| 4224 } | 4209 } |
| 4225 int32_t i = 0; | 4210 int32_t i = 0; |
| 4226 for (CXFA_Node* pValueNode = | 4211 for (CXFA_Node* pValueNode = |
| 4227 pBind->GetNodeItem(XFA_NODEITEM_FirstChild); | 4212 pBind->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 4228 pValueNode; pValueNode = pValueNode->GetNodeItem( | 4213 pValueNode; pValueNode = pValueNode->GetNodeItem( |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4260 CXFA_NodeArray nodeArray; | 4245 CXFA_NodeArray nodeArray; |
| 4261 pBindNode->GetBindItems(nodeArray); | 4246 pBindNode->GetBindItems(nodeArray); |
| 4262 for (int32_t i = 0; i < nodeArray.GetSize(); i++) { | 4247 for (int32_t i = 0; i < nodeArray.GetSize(); i++) { |
| 4263 CXFA_Node* pNode = nodeArray[i]; | 4248 CXFA_Node* pNode = nodeArray[i]; |
| 4264 if (pNode == this) { | 4249 if (pNode == this) { |
| 4265 continue; | 4250 continue; |
| 4266 } | 4251 } |
| 4267 pNode->SetScriptContent(wsContent, wsContent, bNotify, true, FALSE); | 4252 pNode->SetScriptContent(wsContent, wsContent, bNotify, true, FALSE); |
| 4268 } | 4253 } |
| 4269 } | 4254 } |
| 4270 pBindNode = NULL; | 4255 pBindNode = nullptr; |
| 4271 break; | 4256 break; |
| 4272 } | 4257 } |
| 4273 case XFA_OBJECTTYPE_ContentNode: { | 4258 case XFA_OBJECTTYPE_ContentNode: { |
| 4274 CFX_WideString wsContentType; | 4259 CFX_WideString wsContentType; |
| 4275 if (GetClassID() == XFA_ELEMENT_ExData) { | 4260 if (GetClassID() == XFA_ELEMENT_ExData) { |
| 4276 GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, FALSE); | 4261 GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, FALSE); |
| 4277 if (wsContentType == FX_WSTRC(L"text/html")) { | 4262 if (wsContentType == FX_WSTRC(L"text/html")) { |
| 4278 wsContentType = FX_WSTRC(L""); | 4263 wsContentType = FX_WSTRC(L""); |
| 4279 SetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType.AsStringC()); | 4264 SetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType.AsStringC()); |
| 4280 } | 4265 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4345 CFX_WideString CXFA_Node::GetScriptContent(FX_BOOL bScriptModify) { | 4330 CFX_WideString CXFA_Node::GetScriptContent(FX_BOOL bScriptModify) { |
| 4346 CFX_WideString wsContent; | 4331 CFX_WideString wsContent; |
| 4347 return TryContent(wsContent, bScriptModify) ? wsContent : CFX_WideString(); | 4332 return TryContent(wsContent, bScriptModify) ? wsContent : CFX_WideString(); |
| 4348 } | 4333 } |
| 4349 CFX_WideString CXFA_Node::GetContent() { | 4334 CFX_WideString CXFA_Node::GetContent() { |
| 4350 return GetScriptContent(); | 4335 return GetScriptContent(); |
| 4351 } | 4336 } |
| 4352 FX_BOOL CXFA_Node::TryContent(CFX_WideString& wsContent, | 4337 FX_BOOL CXFA_Node::TryContent(CFX_WideString& wsContent, |
| 4353 FX_BOOL bScriptModify, | 4338 FX_BOOL bScriptModify, |
| 4354 FX_BOOL bProto) { | 4339 FX_BOOL bProto) { |
| 4355 CXFA_Node* pNode = NULL; | 4340 CXFA_Node* pNode = nullptr; |
| 4356 switch (GetObjectType()) { | 4341 switch (GetObjectType()) { |
| 4357 case XFA_OBJECTTYPE_ContainerNode: | 4342 case XFA_OBJECTTYPE_ContainerNode: |
| 4358 if (GetClassID() == XFA_ELEMENT_ExclGroup) { | 4343 if (GetClassID() == XFA_ELEMENT_ExclGroup) { |
| 4359 pNode = this; | 4344 pNode = this; |
| 4360 } else { | 4345 } else { |
| 4361 CXFA_Node* pValue = GetChild(0, XFA_ELEMENT_Value); | 4346 CXFA_Node* pValue = GetChild(0, XFA_ELEMENT_Value); |
| 4362 if (!pValue) { | 4347 if (!pValue) { |
| 4363 return FALSE; | 4348 return FALSE; |
| 4364 } | 4349 } |
| 4365 CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild); | 4350 CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4466 return pModelNode->TryNamespace(wsNamespace); | 4451 return pModelNode->TryNamespace(wsNamespace); |
| 4467 } | 4452 } |
| 4468 } | 4453 } |
| 4469 CXFA_Node* CXFA_Node::GetProperty(int32_t index, | 4454 CXFA_Node* CXFA_Node::GetProperty(int32_t index, |
| 4470 XFA_ELEMENT eProperty, | 4455 XFA_ELEMENT eProperty, |
| 4471 FX_BOOL bCreateProperty) { | 4456 FX_BOOL bCreateProperty) { |
| 4472 XFA_ELEMENT eElement = GetClassID(); | 4457 XFA_ELEMENT eElement = GetClassID(); |
| 4473 uint32_t dwPacket = GetPacketID(); | 4458 uint32_t dwPacket = GetPacketID(); |
| 4474 const XFA_PROPERTY* pProperty = | 4459 const XFA_PROPERTY* pProperty = |
| 4475 XFA_GetPropertyOfElement(eElement, eProperty, dwPacket); | 4460 XFA_GetPropertyOfElement(eElement, eProperty, dwPacket); |
| 4476 if (pProperty == NULL || index >= pProperty->uOccur) { | 4461 if (!pProperty || index >= pProperty->uOccur) |
| 4477 return NULL; | 4462 return nullptr; |
| 4478 } | 4463 |
| 4479 CXFA_Node* pNode = m_pChild; | 4464 CXFA_Node* pNode = m_pChild; |
| 4480 int32_t iCount = 0; | 4465 int32_t iCount = 0; |
| 4481 for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 4466 for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 4482 if (pNode->GetClassID() == eProperty) { | 4467 if (pNode->GetClassID() == eProperty) { |
| 4483 iCount++; | 4468 iCount++; |
| 4484 if (iCount > index) { | 4469 if (iCount > index) { |
| 4485 return pNode; | 4470 return pNode; |
| 4486 } | 4471 } |
| 4487 } | 4472 } |
| 4488 } | 4473 } |
| 4489 if (!bCreateProperty) { | 4474 if (!bCreateProperty) |
| 4490 return NULL; | 4475 return nullptr; |
| 4491 } | 4476 |
| 4492 if (pProperty->uFlags & XFA_PROPERTYFLAG_OneOf) { | 4477 if (pProperty->uFlags & XFA_PROPERTYFLAG_OneOf) { |
| 4493 pNode = m_pChild; | 4478 pNode = m_pChild; |
| 4494 for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 4479 for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 4495 const XFA_PROPERTY* pExistProperty = | 4480 const XFA_PROPERTY* pExistProperty = |
| 4496 XFA_GetPropertyOfElement(eElement, pNode->GetClassID(), dwPacket); | 4481 XFA_GetPropertyOfElement(eElement, pNode->GetClassID(), dwPacket); |
| 4497 if (pExistProperty && (pExistProperty->uFlags & XFA_PROPERTYFLAG_OneOf)) { | 4482 if (pExistProperty && (pExistProperty->uFlags & XFA_PROPERTYFLAG_OneOf)) { |
|
Tom Sepez
2016/05/26 23:55:03
nit: no {}
Wei Li
2016/05/27 00:51:45
Done.
| |
| 4498 return NULL; | 4483 return nullptr; |
| 4499 } | 4484 } |
| 4500 } | 4485 } |
| 4501 } | 4486 } |
| 4502 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); | 4487 CXFA_Document* pFactory = m_pDocument->GetParser()->GetFactory(); |
| 4503 const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(dwPacket); | 4488 const XFA_PACKETINFO* pPacket = XFA_GetPacketByID(dwPacket); |
| 4504 CXFA_Node* pNewNode = nullptr; | 4489 CXFA_Node* pNewNode = nullptr; |
| 4505 for (; iCount <= index; iCount++) { | 4490 for (; iCount <= index; iCount++) { |
| 4506 pNewNode = pFactory->CreateNode(pPacket, eProperty); | 4491 pNewNode = pFactory->CreateNode(pPacket, eProperty); |
| 4507 if (!pNewNode) { | 4492 if (!pNewNode) { |
|
Tom Sepez
2016/05/26 23:55:03
nit: no {}
Wei Li
2016/05/27 00:51:45
Done.
| |
| 4508 return NULL; | 4493 return nullptr; |
| 4509 } | 4494 } |
| 4510 InsertChild(pNewNode, nullptr); | 4495 InsertChild(pNewNode, nullptr); |
| 4511 pNewNode->SetFlag(XFA_NODEFLAG_Initialized, true); | 4496 pNewNode->SetFlag(XFA_NODEFLAG_Initialized, true); |
| 4512 } | 4497 } |
| 4513 return pNewNode; | 4498 return pNewNode; |
| 4514 } | 4499 } |
| 4515 int32_t CXFA_Node::CountChildren(XFA_ELEMENT eElement, FX_BOOL bOnlyChild) { | 4500 int32_t CXFA_Node::CountChildren(XFA_ELEMENT eElement, FX_BOOL bOnlyChild) { |
| 4516 CXFA_Node* pNode = m_pChild; | 4501 CXFA_Node* pNode = m_pChild; |
| 4517 int32_t iCount = 0; | 4502 int32_t iCount = 0; |
| 4518 for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 4503 for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 4543 if (pProperty) { | 4528 if (pProperty) { |
| 4544 continue; | 4529 continue; |
| 4545 } | 4530 } |
| 4546 } | 4531 } |
| 4547 iCount++; | 4532 iCount++; |
| 4548 if (iCount > index) { | 4533 if (iCount > index) { |
| 4549 return pNode; | 4534 return pNode; |
| 4550 } | 4535 } |
| 4551 } | 4536 } |
| 4552 } | 4537 } |
| 4553 return NULL; | 4538 return nullptr; |
| 4554 } | 4539 } |
| 4555 int32_t CXFA_Node::InsertChild(int32_t index, CXFA_Node* pNode) { | 4540 int32_t CXFA_Node::InsertChild(int32_t index, CXFA_Node* pNode) { |
| 4556 ASSERT(!pNode->m_pNext); | 4541 ASSERT(!pNode->m_pNext); |
| 4557 pNode->m_pParent = this; | 4542 pNode->m_pParent = this; |
| 4558 FX_BOOL ret = m_pDocument->RemovePurgeNode(pNode); | 4543 FX_BOOL ret = m_pDocument->RemovePurgeNode(pNode); |
| 4559 ASSERT(ret); | 4544 ASSERT(ret); |
| 4560 (void)ret; // Avoid unused variable warning. | 4545 (void)ret; // Avoid unused variable warning. |
| 4561 | 4546 |
| 4562 if (m_pChild == NULL || index == 0) { | 4547 if (!m_pChild || index == 0) { |
| 4563 if (index > 0) { | 4548 if (index > 0) { |
| 4564 return -1; | 4549 return -1; |
| 4565 } | 4550 } |
| 4566 pNode->m_pNext = m_pChild; | 4551 pNode->m_pNext = m_pChild; |
| 4567 m_pChild = pNode; | 4552 m_pChild = pNode; |
| 4568 index = 0; | 4553 index = 0; |
| 4569 } else if (index < 0) { | 4554 } else if (index < 0) { |
| 4570 m_pLastChild->m_pNext = pNode; | 4555 m_pLastChild->m_pNext = pNode; |
| 4571 } else { | 4556 } else { |
| 4572 CXFA_Node* pPrev = m_pChild; | 4557 CXFA_Node* pPrev = m_pChild; |
| 4573 int32_t iCount = 0; | 4558 int32_t iCount = 0; |
| 4574 while (++iCount != index && pPrev->m_pNext) { | 4559 while (++iCount != index && pPrev->m_pNext) { |
| 4575 pPrev = pPrev->m_pNext; | 4560 pPrev = pPrev->m_pNext; |
| 4576 } | 4561 } |
| 4577 if (index > 0 && index != iCount) { | 4562 if (index > 0 && index != iCount) { |
| 4578 return -1; | 4563 return -1; |
| 4579 } | 4564 } |
| 4580 pNode->m_pNext = pPrev->m_pNext; | 4565 pNode->m_pNext = pPrev->m_pNext; |
| 4581 pPrev->m_pNext = pNode; | 4566 pPrev->m_pNext = pNode; |
| 4582 index = iCount; | 4567 index = iCount; |
| 4583 } | 4568 } |
| 4584 if (pNode->m_pNext == NULL) { | 4569 if (!pNode->m_pNext) { |
| 4585 m_pLastChild = pNode; | 4570 m_pLastChild = pNode; |
| 4586 } | 4571 } |
| 4587 ASSERT(m_pLastChild); | 4572 ASSERT(m_pLastChild); |
| 4588 ASSERT(m_pLastChild->m_pNext == NULL); | 4573 ASSERT(!m_pLastChild->m_pNext); |
| 4589 pNode->ClearFlag(XFA_NODEFLAG_HasRemoved); | 4574 pNode->ClearFlag(XFA_NODEFLAG_HasRemoved); |
| 4590 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 4575 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
| 4591 if (pNotify) | 4576 if (pNotify) |
| 4592 pNotify->OnChildAdded(this); | 4577 pNotify->OnChildAdded(this); |
| 4593 | 4578 |
| 4594 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { | 4579 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { |
| 4595 ASSERT(pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent) == NULL); | 4580 ASSERT(!pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent)); |
| 4596 m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, index); | 4581 m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, index); |
| 4597 pNode->ClearFlag(XFA_NODEFLAG_OwnXMLNode); | 4582 pNode->ClearFlag(XFA_NODEFLAG_OwnXMLNode); |
| 4598 } | 4583 } |
| 4599 return index; | 4584 return index; |
| 4600 } | 4585 } |
| 4601 | 4586 |
| 4602 FX_BOOL CXFA_Node::InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode) { | 4587 FX_BOOL CXFA_Node::InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode) { |
| 4603 if (!pNode || pNode->m_pParent || | 4588 if (!pNode || pNode->m_pParent || |
| 4604 (pBeforeNode && pBeforeNode->m_pParent != this)) { | 4589 (pBeforeNode && pBeforeNode->m_pParent != this)) { |
| 4605 ASSERT(false); | 4590 ASSERT(false); |
| 4606 return FALSE; | 4591 return FALSE; |
| 4607 } | 4592 } |
| 4608 FX_BOOL ret = m_pDocument->RemovePurgeNode(pNode); | 4593 FX_BOOL ret = m_pDocument->RemovePurgeNode(pNode); |
| 4609 ASSERT(ret); | 4594 ASSERT(ret); |
| 4610 (void)ret; // Avoid unused variable warning. | 4595 (void)ret; // Avoid unused variable warning. |
| 4611 | 4596 |
| 4612 int32_t nIndex = -1; | 4597 int32_t nIndex = -1; |
| 4613 pNode->m_pParent = this; | 4598 pNode->m_pParent = this; |
| 4614 if (m_pChild == NULL || pBeforeNode == m_pChild) { | 4599 if (!m_pChild || pBeforeNode == m_pChild) { |
| 4615 pNode->m_pNext = m_pChild; | 4600 pNode->m_pNext = m_pChild; |
| 4616 m_pChild = pNode; | 4601 m_pChild = pNode; |
| 4617 nIndex = 0; | 4602 nIndex = 0; |
| 4618 } else if (!pBeforeNode) { | 4603 } else if (!pBeforeNode) { |
| 4619 pNode->m_pNext = m_pLastChild->m_pNext; | 4604 pNode->m_pNext = m_pLastChild->m_pNext; |
| 4620 m_pLastChild->m_pNext = pNode; | 4605 m_pLastChild->m_pNext = pNode; |
| 4621 } else { | 4606 } else { |
| 4622 nIndex = 1; | 4607 nIndex = 1; |
| 4623 CXFA_Node* pPrev = m_pChild; | 4608 CXFA_Node* pPrev = m_pChild; |
| 4624 while (pPrev->m_pNext != pBeforeNode) { | 4609 while (pPrev->m_pNext != pBeforeNode) { |
| 4625 pPrev = pPrev->m_pNext; | 4610 pPrev = pPrev->m_pNext; |
| 4626 nIndex++; | 4611 nIndex++; |
| 4627 } | 4612 } |
| 4628 pNode->m_pNext = pPrev->m_pNext; | 4613 pNode->m_pNext = pPrev->m_pNext; |
| 4629 pPrev->m_pNext = pNode; | 4614 pPrev->m_pNext = pNode; |
| 4630 } | 4615 } |
| 4631 if (pNode->m_pNext == NULL) { | 4616 if (!pNode->m_pNext) { |
| 4632 m_pLastChild = pNode; | 4617 m_pLastChild = pNode; |
| 4633 } | 4618 } |
| 4634 ASSERT(m_pLastChild); | 4619 ASSERT(m_pLastChild); |
| 4635 ASSERT(m_pLastChild->m_pNext == NULL); | 4620 ASSERT(!m_pLastChild->m_pNext); |
| 4636 pNode->ClearFlag(XFA_NODEFLAG_HasRemoved); | 4621 pNode->ClearFlag(XFA_NODEFLAG_HasRemoved); |
| 4637 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 4622 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
| 4638 if (pNotify) | 4623 if (pNotify) |
| 4639 pNotify->OnChildAdded(this); | 4624 pNotify->OnChildAdded(this); |
| 4640 | 4625 |
| 4641 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { | 4626 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { |
| 4642 ASSERT(pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent) == NULL); | 4627 ASSERT(!pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent)); |
| 4643 m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, nIndex); | 4628 m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, nIndex); |
| 4644 pNode->ClearFlag(XFA_NODEFLAG_OwnXMLNode); | 4629 pNode->ClearFlag(XFA_NODEFLAG_OwnXMLNode); |
| 4645 } | 4630 } |
| 4646 return TRUE; | 4631 return TRUE; |
| 4647 } | 4632 } |
| 4648 CXFA_Node* CXFA_Node::Deprecated_GetPrevSibling() { | 4633 CXFA_Node* CXFA_Node::Deprecated_GetPrevSibling() { |
| 4649 if (!m_pParent) { | 4634 if (!m_pParent) { |
| 4650 return NULL; | 4635 return nullptr; |
| 4651 } | 4636 } |
| 4652 for (CXFA_Node* pSibling = m_pParent->m_pChild; pSibling; | 4637 for (CXFA_Node* pSibling = m_pParent->m_pChild; pSibling; |
| 4653 pSibling = pSibling->m_pNext) { | 4638 pSibling = pSibling->m_pNext) { |
| 4654 if (pSibling->m_pNext == this) { | 4639 if (pSibling->m_pNext == this) { |
| 4655 return pSibling; | 4640 return pSibling; |
| 4656 } | 4641 } |
| 4657 } | 4642 } |
| 4658 return NULL; | 4643 return nullptr; |
| 4659 } | 4644 } |
| 4660 FX_BOOL CXFA_Node::RemoveChild(CXFA_Node* pNode, bool bNotify) { | 4645 FX_BOOL CXFA_Node::RemoveChild(CXFA_Node* pNode, bool bNotify) { |
| 4661 if (pNode == NULL || pNode->m_pParent != this) { | 4646 if (!pNode || pNode->m_pParent != this) { |
| 4662 ASSERT(FALSE); | 4647 ASSERT(FALSE); |
| 4663 return FALSE; | 4648 return FALSE; |
| 4664 } | 4649 } |
| 4665 if (m_pChild == pNode) { | 4650 if (m_pChild == pNode) { |
| 4666 m_pChild = pNode->m_pNext; | 4651 m_pChild = pNode->m_pNext; |
| 4667 if (m_pLastChild == pNode) { | 4652 if (m_pLastChild == pNode) { |
| 4668 m_pLastChild = pNode->m_pNext; | 4653 m_pLastChild = pNode->m_pNext; |
| 4669 } | 4654 } |
| 4670 pNode->m_pNext = NULL; | 4655 pNode->m_pNext = nullptr; |
| 4671 pNode->m_pParent = NULL; | 4656 pNode->m_pParent = nullptr; |
| 4672 } else { | 4657 } else { |
| 4673 CXFA_Node* pPrev = pNode->Deprecated_GetPrevSibling(); | 4658 CXFA_Node* pPrev = pNode->Deprecated_GetPrevSibling(); |
| 4674 pPrev->m_pNext = pNode->m_pNext; | 4659 pPrev->m_pNext = pNode->m_pNext; |
| 4675 if (m_pLastChild == pNode) { | 4660 if (m_pLastChild == pNode) { |
| 4676 m_pLastChild = pNode->m_pNext ? pNode->m_pNext : pPrev; | 4661 m_pLastChild = pNode->m_pNext ? pNode->m_pNext : pPrev; |
| 4677 } | 4662 } |
| 4678 pNode->m_pNext = NULL; | 4663 pNode->m_pNext = nullptr; |
| 4679 pNode->m_pParent = NULL; | 4664 pNode->m_pParent = nullptr; |
| 4680 } | 4665 } |
| 4681 ASSERT(m_pLastChild == NULL || m_pLastChild->m_pNext == NULL); | 4666 ASSERT(!m_pLastChild || !m_pLastChild->m_pNext); |
| 4682 OnRemoved(bNotify); | 4667 OnRemoved(bNotify); |
| 4683 pNode->SetFlag(XFA_NODEFLAG_HasRemoved, true); | 4668 pNode->SetFlag(XFA_NODEFLAG_HasRemoved, true); |
| 4684 m_pDocument->AddPurgeNode(pNode); | 4669 m_pDocument->AddPurgeNode(pNode); |
| 4685 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { | 4670 if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { |
| 4686 if (pNode->IsAttributeInXML()) { | 4671 if (pNode->IsAttributeInXML()) { |
| 4687 ASSERT(pNode->m_pXMLNode == m_pXMLNode && | 4672 ASSERT(pNode->m_pXMLNode == m_pXMLNode && |
| 4688 m_pXMLNode->GetType() == FDE_XMLNODE_Element); | 4673 m_pXMLNode->GetType() == FDE_XMLNODE_Element); |
| 4689 if (pNode->m_pXMLNode->GetType() == FDE_XMLNODE_Element) { | 4674 if (pNode->m_pXMLNode->GetType() == FDE_XMLNODE_Element) { |
| 4690 CFDE_XMLElement* pXMLElement = | 4675 CFDE_XMLElement* pXMLElement = |
| 4691 static_cast<CFDE_XMLElement*>(pNode->m_pXMLNode); | 4676 static_cast<CFDE_XMLElement*>(pNode->m_pXMLNode); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 4712 CXFA_Node* CXFA_Node::GetFirstChildByName(const CFX_WideStringC& wsName) const { | 4697 CXFA_Node* CXFA_Node::GetFirstChildByName(const CFX_WideStringC& wsName) const { |
| 4713 return GetFirstChildByName(FX_HashCode_GetW(wsName, false)); | 4698 return GetFirstChildByName(FX_HashCode_GetW(wsName, false)); |
| 4714 } | 4699 } |
| 4715 CXFA_Node* CXFA_Node::GetFirstChildByName(uint32_t dwNameHash) const { | 4700 CXFA_Node* CXFA_Node::GetFirstChildByName(uint32_t dwNameHash) const { |
| 4716 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_FirstChild); pNode; | 4701 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_FirstChild); pNode; |
| 4717 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 4702 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 4718 if (pNode->GetNameHash() == dwNameHash) { | 4703 if (pNode->GetNameHash() == dwNameHash) { |
| 4719 return pNode; | 4704 return pNode; |
| 4720 } | 4705 } |
| 4721 } | 4706 } |
| 4722 return NULL; | 4707 return nullptr; |
| 4723 } | 4708 } |
| 4724 CXFA_Node* CXFA_Node::GetFirstChildByClass(XFA_ELEMENT eElement) const { | 4709 CXFA_Node* CXFA_Node::GetFirstChildByClass(XFA_ELEMENT eElement) const { |
| 4725 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_FirstChild); pNode; | 4710 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_FirstChild); pNode; |
| 4726 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 4711 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 4727 if (pNode->GetClassID() == eElement) { | 4712 if (pNode->GetClassID() == eElement) { |
| 4728 return pNode; | 4713 return pNode; |
| 4729 } | 4714 } |
| 4730 } | 4715 } |
| 4731 return NULL; | 4716 return nullptr; |
| 4732 } | 4717 } |
| 4733 CXFA_Node* CXFA_Node::GetNextSameNameSibling(uint32_t dwNameHash) const { | 4718 CXFA_Node* CXFA_Node::GetNextSameNameSibling(uint32_t dwNameHash) const { |
| 4734 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_NextSibling); pNode; | 4719 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_NextSibling); pNode; |
| 4735 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 4720 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 4736 if (pNode->GetNameHash() == dwNameHash) { | 4721 if (pNode->GetNameHash() == dwNameHash) { |
| 4737 return pNode; | 4722 return pNode; |
| 4738 } | 4723 } |
| 4739 } | 4724 } |
| 4740 return NULL; | 4725 return nullptr; |
| 4741 } | 4726 } |
| 4742 CXFA_Node* CXFA_Node::GetNextSameNameSibling( | 4727 CXFA_Node* CXFA_Node::GetNextSameNameSibling( |
| 4743 const CFX_WideStringC& wsNodeName) const { | 4728 const CFX_WideStringC& wsNodeName) const { |
| 4744 return GetNextSameNameSibling(FX_HashCode_GetW(wsNodeName, false)); | 4729 return GetNextSameNameSibling(FX_HashCode_GetW(wsNodeName, false)); |
| 4745 } | 4730 } |
| 4746 CXFA_Node* CXFA_Node::GetNextSameClassSibling(XFA_ELEMENT eElement) const { | 4731 CXFA_Node* CXFA_Node::GetNextSameClassSibling(XFA_ELEMENT eElement) const { |
| 4747 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_NextSibling); pNode; | 4732 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_NextSibling); pNode; |
| 4748 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 4733 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 4749 if (pNode->GetClassID() == eElement) { | 4734 if (pNode->GetClassID() == eElement) { |
| 4750 return pNode; | 4735 return pNode; |
| 4751 } | 4736 } |
| 4752 } | 4737 } |
| 4753 return NULL; | 4738 return nullptr; |
| 4754 } | 4739 } |
| 4755 int32_t CXFA_Node::GetNodeSameNameIndex() const { | 4740 int32_t CXFA_Node::GetNodeSameNameIndex() const { |
| 4756 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); | 4741 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); |
| 4757 if (!pScriptContext) { | 4742 if (!pScriptContext) { |
| 4758 return -1; | 4743 return -1; |
| 4759 } | 4744 } |
| 4760 return pScriptContext->GetIndexByName(const_cast<CXFA_Node*>(this)); | 4745 return pScriptContext->GetIndexByName(const_cast<CXFA_Node*>(this)); |
| 4761 } | 4746 } |
| 4762 int32_t CXFA_Node::GetNodeSameClassIndex() const { | 4747 int32_t CXFA_Node::GetNodeSameClassIndex() const { |
| 4763 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); | 4748 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); |
| 4764 if (!pScriptContext) { | 4749 if (!pScriptContext) { |
| 4765 return -1; | 4750 return -1; |
| 4766 } | 4751 } |
| 4767 return pScriptContext->GetIndexByClassName(const_cast<CXFA_Node*>(this)); | 4752 return pScriptContext->GetIndexByClassName(const_cast<CXFA_Node*>(this)); |
| 4768 } | 4753 } |
| 4769 void CXFA_Node::GetSOMExpression(CFX_WideString& wsSOMExpression) { | 4754 void CXFA_Node::GetSOMExpression(CFX_WideString& wsSOMExpression) { |
| 4770 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); | 4755 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); |
| 4771 if (!pScriptContext) { | 4756 if (!pScriptContext) { |
| 4772 return; | 4757 return; |
| 4773 } | 4758 } |
| 4774 pScriptContext->GetSomExpression(this, wsSOMExpression); | 4759 pScriptContext->GetSomExpression(this, wsSOMExpression); |
| 4775 } | 4760 } |
| 4776 CXFA_Node* CXFA_Node::GetInstanceMgrOfSubform() { | 4761 CXFA_Node* CXFA_Node::GetInstanceMgrOfSubform() { |
| 4777 CXFA_Node* pInstanceMgr = NULL; | 4762 CXFA_Node* pInstanceMgr = nullptr; |
| 4778 if (m_ePacket == XFA_XDPPACKET_Form) { | 4763 if (m_ePacket == XFA_XDPPACKET_Form) { |
| 4779 CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); | 4764 CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); |
| 4780 if (!pParentNode || pParentNode->GetClassID() == XFA_ELEMENT_Area) { | 4765 if (!pParentNode || pParentNode->GetClassID() == XFA_ELEMENT_Area) { |
| 4781 return pInstanceMgr; | 4766 return pInstanceMgr; |
| 4782 } | 4767 } |
| 4783 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; | 4768 for (CXFA_Node* pNode = GetNodeItem(XFA_NODEITEM_PrevSibling); pNode; |
| 4784 pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { | 4769 pNode = pNode->GetNodeItem(XFA_NODEITEM_PrevSibling)) { |
| 4785 XFA_ELEMENT eType = pNode->GetClassID(); | 4770 XFA_ELEMENT eType = pNode->GetClassID(); |
| 4786 if ((eType == XFA_ELEMENT_Subform || eType == XFA_ELEMENT_SubformSet) && | 4771 if ((eType == XFA_ELEMENT_Subform || eType == XFA_ELEMENT_SubformSet) && |
| 4787 pNode->m_dwNameHash != m_dwNameHash) { | 4772 pNode->m_dwNameHash != m_dwNameHash) { |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4963 | 4948 |
| 4964 FX_BOOL CXFA_Node::GetMapModuleValue(void* pKey, void*& pValue) { | 4949 FX_BOOL CXFA_Node::GetMapModuleValue(void* pKey, void*& pValue) { |
| 4965 CXFA_Node* pNode = this; | 4950 CXFA_Node* pNode = this; |
| 4966 while (pNode) { | 4951 while (pNode) { |
| 4967 XFA_MAPMODULEDATA* pModule = pNode->GetMapModuleData(); | 4952 XFA_MAPMODULEDATA* pModule = pNode->GetMapModuleData(); |
| 4968 if (pModule && pModule->m_ValueMap.Lookup(pKey, pValue)) { | 4953 if (pModule && pModule->m_ValueMap.Lookup(pKey, pValue)) { |
| 4969 return TRUE; | 4954 return TRUE; |
| 4970 } | 4955 } |
| 4971 pNode = pNode->GetPacketID() != XFA_XDPPACKET_Datasets | 4956 pNode = pNode->GetPacketID() != XFA_XDPPACKET_Datasets |
| 4972 ? pNode->GetTemplateNode() | 4957 ? pNode->GetTemplateNode() |
| 4973 : NULL; | 4958 : nullptr; |
| 4974 } | 4959 } |
| 4975 return FALSE; | 4960 return FALSE; |
| 4976 } | 4961 } |
| 4977 void CXFA_Node::SetMapModuleString(void* pKey, const CFX_WideStringC& wsValue) { | 4962 void CXFA_Node::SetMapModuleString(void* pKey, const CFX_WideStringC& wsValue) { |
| 4978 SetMapModuleBuffer(pKey, (void*)wsValue.c_str(), | 4963 SetMapModuleBuffer(pKey, (void*)wsValue.c_str(), |
| 4979 wsValue.GetLength() * sizeof(FX_WCHAR)); | 4964 wsValue.GetLength() * sizeof(FX_WCHAR)); |
| 4980 } | 4965 } |
| 4981 FX_BOOL CXFA_Node::GetMapModuleString(void* pKey, CFX_WideStringC& wsValue) { | 4966 FX_BOOL CXFA_Node::GetMapModuleString(void* pKey, CFX_WideStringC& wsValue) { |
| 4982 void* pValue; | 4967 void* pValue; |
| 4983 int32_t iBytes; | 4968 int32_t iBytes; |
| 4984 if (!GetMapModuleBuffer(pKey, pValue, iBytes)) { | 4969 if (!GetMapModuleBuffer(pKey, pValue, iBytes)) { |
| 4985 return FALSE; | 4970 return FALSE; |
| 4986 } | 4971 } |
| 4987 wsValue = CFX_WideStringC((const FX_WCHAR*)pValue, iBytes / sizeof(FX_WCHAR)); | 4972 wsValue = CFX_WideStringC((const FX_WCHAR*)pValue, iBytes / sizeof(FX_WCHAR)); |
| 4988 return TRUE; | 4973 return TRUE; |
| 4989 } | 4974 } |
| 4990 void CXFA_Node::SetMapModuleBuffer( | 4975 void CXFA_Node::SetMapModuleBuffer( |
| 4991 void* pKey, | 4976 void* pKey, |
| 4992 void* pValue, | 4977 void* pValue, |
| 4993 int32_t iBytes, | 4978 int32_t iBytes, |
| 4994 XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo) { | 4979 XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo) { |
| 4995 XFA_MAPMODULEDATA* pModule = CreateMapModuleData(); | 4980 XFA_MAPMODULEDATA* pModule = CreateMapModuleData(); |
| 4996 XFA_MAPDATABLOCK*& pBuffer = pModule->m_BufferMap[pKey]; | 4981 XFA_MAPDATABLOCK*& pBuffer = pModule->m_BufferMap[pKey]; |
| 4997 if (pBuffer == NULL) { | 4982 if (!pBuffer) { |
| 4998 pBuffer = | 4983 pBuffer = |
| 4999 (XFA_MAPDATABLOCK*)FX_Alloc(uint8_t, sizeof(XFA_MAPDATABLOCK) + iBytes); | 4984 (XFA_MAPDATABLOCK*)FX_Alloc(uint8_t, sizeof(XFA_MAPDATABLOCK) + iBytes); |
| 5000 } else if (pBuffer->iBytes != iBytes) { | 4985 } else if (pBuffer->iBytes != iBytes) { |
| 5001 if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { | 4986 if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { |
| 5002 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); | 4987 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); |
| 5003 } | 4988 } |
| 5004 pBuffer = (XFA_MAPDATABLOCK*)FX_Realloc(uint8_t, pBuffer, | 4989 pBuffer = (XFA_MAPDATABLOCK*)FX_Realloc(uint8_t, pBuffer, |
| 5005 sizeof(XFA_MAPDATABLOCK) + iBytes); | 4990 sizeof(XFA_MAPDATABLOCK) + iBytes); |
| 5006 } else if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { | 4991 } else if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { |
| 5007 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); | 4992 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); |
| 5008 } | 4993 } |
| 5009 if (pBuffer == NULL) { | 4994 if (!pBuffer) |
| 5010 return; | 4995 return; |
| 5011 } | 4996 |
| 5012 pBuffer->pCallbackInfo = pCallbackInfo; | 4997 pBuffer->pCallbackInfo = pCallbackInfo; |
| 5013 pBuffer->iBytes = iBytes; | 4998 pBuffer->iBytes = iBytes; |
| 5014 FXSYS_memcpy(pBuffer->GetData(), pValue, iBytes); | 4999 FXSYS_memcpy(pBuffer->GetData(), pValue, iBytes); |
| 5015 } | 5000 } |
| 5016 FX_BOOL CXFA_Node::GetMapModuleBuffer(void* pKey, | 5001 FX_BOOL CXFA_Node::GetMapModuleBuffer(void* pKey, |
| 5017 void*& pValue, | 5002 void*& pValue, |
| 5018 int32_t& iBytes, | 5003 int32_t& iBytes, |
| 5019 FX_BOOL bProtoAlso) const { | 5004 FX_BOOL bProtoAlso) const { |
| 5020 XFA_MAPDATABLOCK* pBuffer = NULL; | 5005 XFA_MAPDATABLOCK* pBuffer = nullptr; |
| 5021 const CXFA_Node* pNode = this; | 5006 const CXFA_Node* pNode = this; |
| 5022 while (pNode) { | 5007 while (pNode) { |
| 5023 XFA_MAPMODULEDATA* pModule = pNode->GetMapModuleData(); | 5008 XFA_MAPMODULEDATA* pModule = pNode->GetMapModuleData(); |
| 5024 if (pModule && pModule->m_BufferMap.Lookup(pKey, pBuffer)) { | 5009 if (pModule && pModule->m_BufferMap.Lookup(pKey, pBuffer)) { |
| 5025 break; | 5010 break; |
| 5026 } | 5011 } |
| 5027 pNode = (bProtoAlso && pNode->GetPacketID() != XFA_XDPPACKET_Datasets) | 5012 pNode = (bProtoAlso && pNode->GetPacketID() != XFA_XDPPACKET_Datasets) |
| 5028 ? pNode->GetTemplateNode() | 5013 ? pNode->GetTemplateNode() |
| 5029 : NULL; | 5014 : nullptr; |
| 5030 } | 5015 } |
| 5031 if (pBuffer == NULL) { | 5016 if (!pBuffer) { |
| 5032 return FALSE; | 5017 return FALSE; |
| 5033 } | 5018 } |
| 5034 pValue = pBuffer->GetData(); | 5019 pValue = pBuffer->GetData(); |
| 5035 iBytes = pBuffer->iBytes; | 5020 iBytes = pBuffer->iBytes; |
| 5036 return TRUE; | 5021 return TRUE; |
| 5037 } | 5022 } |
| 5038 FX_BOOL CXFA_Node::HasMapModuleKey(void* pKey, FX_BOOL bProtoAlso) { | 5023 FX_BOOL CXFA_Node::HasMapModuleKey(void* pKey, FX_BOOL bProtoAlso) { |
| 5039 CXFA_Node* pNode = this; | 5024 CXFA_Node* pNode = this; |
| 5040 while (pNode) { | 5025 while (pNode) { |
| 5041 void* pVal; | 5026 void* pVal; |
| 5042 XFA_MAPMODULEDATA* pModule = pNode->GetMapModuleData(); | 5027 XFA_MAPMODULEDATA* pModule = pNode->GetMapModuleData(); |
| 5043 if (pModule && | 5028 if (pModule && |
| 5044 (pModule->m_ValueMap.Lookup(pKey, pVal) || | 5029 (pModule->m_ValueMap.Lookup(pKey, pVal) || |
| 5045 pModule->m_BufferMap.Lookup(pKey, (XFA_MAPDATABLOCK*&)pVal))) { | 5030 pModule->m_BufferMap.Lookup(pKey, (XFA_MAPDATABLOCK*&)pVal))) { |
| 5046 return TRUE; | 5031 return TRUE; |
| 5047 } | 5032 } |
| 5048 pNode = (bProtoAlso && pNode->GetPacketID() != XFA_XDPPACKET_Datasets) | 5033 pNode = (bProtoAlso && pNode->GetPacketID() != XFA_XDPPACKET_Datasets) |
| 5049 ? pNode->GetTemplateNode() | 5034 ? pNode->GetTemplateNode() |
| 5050 : NULL; | 5035 : nullptr; |
| 5051 } | 5036 } |
| 5052 return FALSE; | 5037 return FALSE; |
| 5053 } | 5038 } |
| 5054 void CXFA_Node::RemoveMapModuleKey(void* pKey) { | 5039 void CXFA_Node::RemoveMapModuleKey(void* pKey) { |
| 5055 XFA_MAPMODULEDATA* pModule = GetMapModuleData(); | 5040 XFA_MAPMODULEDATA* pModule = GetMapModuleData(); |
| 5056 if (!pModule) | 5041 if (!pModule) |
| 5057 return; | 5042 return; |
| 5058 | 5043 |
| 5059 if (pKey) { | 5044 if (pKey) { |
| 5060 XFA_MAPDATABLOCK* pBuffer = NULL; | 5045 XFA_MAPDATABLOCK* pBuffer = nullptr; |
| 5061 pModule->m_BufferMap.Lookup(pKey, pBuffer); | 5046 pModule->m_BufferMap.Lookup(pKey, pBuffer); |
| 5062 if (pBuffer) { | 5047 if (pBuffer) { |
| 5063 if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { | 5048 if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { |
| 5064 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); | 5049 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); |
| 5065 } | 5050 } |
| 5066 FX_Free(pBuffer); | 5051 FX_Free(pBuffer); |
| 5067 } | 5052 } |
| 5068 pModule->m_BufferMap.RemoveKey(pKey); | 5053 pModule->m_BufferMap.RemoveKey(pKey); |
| 5069 pModule->m_ValueMap.RemoveKey(pKey); | 5054 pModule->m_ValueMap.RemoveKey(pKey); |
| 5070 } else { | 5055 } else { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5110 continue; | 5095 continue; |
| 5111 } | 5096 } |
| 5112 if (pSrcBuffer->pCallbackInfo && pSrcBuffer->pCallbackInfo->pFree && | 5097 if (pSrcBuffer->pCallbackInfo && pSrcBuffer->pCallbackInfo->pFree && |
| 5113 !pSrcBuffer->pCallbackInfo->pCopy) { | 5098 !pSrcBuffer->pCallbackInfo->pCopy) { |
| 5114 if (pBuffer) { | 5099 if (pBuffer) { |
| 5115 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); | 5100 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); |
| 5116 pDstModuleData->m_BufferMap.RemoveKey(pKey); | 5101 pDstModuleData->m_BufferMap.RemoveKey(pKey); |
| 5117 } | 5102 } |
| 5118 continue; | 5103 continue; |
| 5119 } | 5104 } |
| 5120 if (pBuffer == NULL) { | 5105 if (!pBuffer) { |
| 5121 pBuffer = (XFA_MAPDATABLOCK*)FX_Alloc( | 5106 pBuffer = (XFA_MAPDATABLOCK*)FX_Alloc( |
| 5122 uint8_t, sizeof(XFA_MAPDATABLOCK) + pSrcBuffer->iBytes); | 5107 uint8_t, sizeof(XFA_MAPDATABLOCK) + pSrcBuffer->iBytes); |
| 5123 } else if (pBuffer->iBytes != pSrcBuffer->iBytes) { | 5108 } else if (pBuffer->iBytes != pSrcBuffer->iBytes) { |
| 5124 if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { | 5109 if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { |
| 5125 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); | 5110 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); |
| 5126 } | 5111 } |
| 5127 pBuffer = (XFA_MAPDATABLOCK*)FX_Realloc( | 5112 pBuffer = (XFA_MAPDATABLOCK*)FX_Realloc( |
| 5128 uint8_t, pBuffer, sizeof(XFA_MAPDATABLOCK) + pSrcBuffer->iBytes); | 5113 uint8_t, pBuffer, sizeof(XFA_MAPDATABLOCK) + pSrcBuffer->iBytes); |
| 5129 } else if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { | 5114 } else if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pFree) { |
| 5130 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); | 5115 pBuffer->pCallbackInfo->pFree(*(void**)pBuffer->GetData()); |
| 5131 } | 5116 } |
| 5132 if (pBuffer == NULL) { | 5117 if (!pBuffer) { |
| 5133 continue; | 5118 continue; |
| 5134 } | 5119 } |
| 5135 pBuffer->pCallbackInfo = pSrcBuffer->pCallbackInfo; | 5120 pBuffer->pCallbackInfo = pSrcBuffer->pCallbackInfo; |
| 5136 pBuffer->iBytes = pSrcBuffer->iBytes; | 5121 pBuffer->iBytes = pSrcBuffer->iBytes; |
| 5137 FXSYS_memcpy(pBuffer->GetData(), pSrcBuffer->GetData(), pSrcBuffer->iBytes); | 5122 FXSYS_memcpy(pBuffer->GetData(), pSrcBuffer->GetData(), pSrcBuffer->iBytes); |
| 5138 if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pCopy) { | 5123 if (pBuffer->pCallbackInfo && pBuffer->pCallbackInfo->pCopy) { |
| 5139 pBuffer->pCallbackInfo->pCopy(*(void**)pBuffer->GetData()); | 5124 pBuffer->pCallbackInfo->pCopy(*(void**)pBuffer->GetData()); |
| 5140 } | 5125 } |
| 5141 } | 5126 } |
| 5142 } | 5127 } |
| 5143 void CXFA_Node::MoveBufferMapData(CXFA_Node* pDstModule, void* pKey) { | 5128 void CXFA_Node::MoveBufferMapData(CXFA_Node* pDstModule, void* pKey) { |
| 5144 if (!pDstModule) { | 5129 if (!pDstModule) { |
| 5145 return; | 5130 return; |
| 5146 } | 5131 } |
| 5147 FX_BOOL bNeedMove = TRUE; | 5132 FX_BOOL bNeedMove = TRUE; |
| 5148 if (!pKey) { | 5133 if (!pKey) { |
| 5149 bNeedMove = FALSE; | 5134 bNeedMove = FALSE; |
| 5150 } | 5135 } |
| 5151 if (pDstModule->GetClassID() != GetClassID()) { | 5136 if (pDstModule->GetClassID() != GetClassID()) { |
| 5152 bNeedMove = FALSE; | 5137 bNeedMove = FALSE; |
| 5153 } | 5138 } |
| 5154 XFA_MAPMODULEDATA* pSrcModuleData = NULL; | 5139 XFA_MAPMODULEDATA* pSrcModuleData = nullptr; |
| 5155 XFA_MAPMODULEDATA* pDstModuleData = NULL; | 5140 XFA_MAPMODULEDATA* pDstModuleData = nullptr; |
| 5156 if (bNeedMove) { | 5141 if (bNeedMove) { |
| 5157 pSrcModuleData = GetMapModuleData(); | 5142 pSrcModuleData = GetMapModuleData(); |
| 5158 if (!pSrcModuleData) { | 5143 if (!pSrcModuleData) { |
| 5159 bNeedMove = FALSE; | 5144 bNeedMove = FALSE; |
| 5160 } | 5145 } |
| 5161 pDstModuleData = pDstModule->CreateMapModuleData(); | 5146 pDstModuleData = pDstModule->CreateMapModuleData(); |
| 5162 } | 5147 } |
| 5163 if (bNeedMove) { | 5148 if (bNeedMove) { |
| 5164 void* pBufferBlockData = pSrcModuleData->m_BufferMap.GetValueAt(pKey); | 5149 void* pBufferBlockData = pSrcModuleData->m_BufferMap.GetValueAt(pKey); |
| 5165 if (pBufferBlockData) { | 5150 if (pBufferBlockData) { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5202 m_pDocument->GetScriptContext()->CacheList(this); | 5187 m_pDocument->GetScriptContext()->CacheList(this); |
| 5203 } | 5188 } |
| 5204 CXFA_Node* CXFA_NodeList::NamedItem(const CFX_WideStringC& wsName) { | 5189 CXFA_Node* CXFA_NodeList::NamedItem(const CFX_WideStringC& wsName) { |
| 5205 uint32_t dwHashCode = FX_HashCode_GetW(wsName, false); | 5190 uint32_t dwHashCode = FX_HashCode_GetW(wsName, false); |
| 5206 int32_t iCount = GetLength(); | 5191 int32_t iCount = GetLength(); |
| 5207 for (int32_t i = 0; i < iCount; i++) { | 5192 for (int32_t i = 0; i < iCount; i++) { |
| 5208 CXFA_Node* ret = Item(i); | 5193 CXFA_Node* ret = Item(i); |
| 5209 if (dwHashCode == ret->GetNameHash()) | 5194 if (dwHashCode == ret->GetNameHash()) |
| 5210 return ret; | 5195 return ret; |
| 5211 } | 5196 } |
| 5212 return NULL; | 5197 return nullptr; |
| 5213 } | 5198 } |
| 5214 void CXFA_NodeList::Script_ListClass_Append(CFXJSE_Arguments* pArguments) { | 5199 void CXFA_NodeList::Script_ListClass_Append(CFXJSE_Arguments* pArguments) { |
| 5215 int32_t argc = pArguments->GetLength(); | 5200 int32_t argc = pArguments->GetLength(); |
| 5216 if (argc == 1) { | 5201 if (argc == 1) { |
| 5217 CXFA_Node* pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); | 5202 CXFA_Node* pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); |
| 5218 if (pNode) { | 5203 if (pNode) { |
| 5219 Append(pNode); | 5204 Append(pNode); |
| 5220 } else { | 5205 } else { |
| 5221 ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); | 5206 ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH); |
| 5222 } | 5207 } |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5300 } | 5285 } |
| 5301 int32_t CXFA_ArrayNodeList::GetLength() { | 5286 int32_t CXFA_ArrayNodeList::GetLength() { |
| 5302 return m_array.GetSize(); | 5287 return m_array.GetSize(); |
| 5303 } | 5288 } |
| 5304 FX_BOOL CXFA_ArrayNodeList::Append(CXFA_Node* pNode) { | 5289 FX_BOOL CXFA_ArrayNodeList::Append(CXFA_Node* pNode) { |
| 5305 m_array.Add(pNode); | 5290 m_array.Add(pNode); |
| 5306 return TRUE; | 5291 return TRUE; |
| 5307 } | 5292 } |
| 5308 FX_BOOL CXFA_ArrayNodeList::Insert(CXFA_Node* pNewNode, | 5293 FX_BOOL CXFA_ArrayNodeList::Insert(CXFA_Node* pNewNode, |
| 5309 CXFA_Node* pBeforeNode) { | 5294 CXFA_Node* pBeforeNode) { |
| 5310 if (pBeforeNode == NULL) { | 5295 if (!pBeforeNode) { |
| 5311 m_array.Add(pNewNode); | 5296 m_array.Add(pNewNode); |
| 5312 } else { | 5297 } else { |
| 5313 int32_t iSize = m_array.GetSize(); | 5298 int32_t iSize = m_array.GetSize(); |
| 5314 for (int32_t i = 0; i < iSize; ++i) { | 5299 for (int32_t i = 0; i < iSize; ++i) { |
| 5315 if (m_array[i] == pBeforeNode) { | 5300 if (m_array[i] == pBeforeNode) { |
| 5316 m_array.InsertAt(i, pNewNode); | 5301 m_array.InsertAt(i, pNewNode); |
| 5317 break; | 5302 break; |
| 5318 } | 5303 } |
| 5319 } | 5304 } |
| 5320 } | 5305 } |
| 5321 return TRUE; | 5306 return TRUE; |
| 5322 } | 5307 } |
| 5323 FX_BOOL CXFA_ArrayNodeList::Remove(CXFA_Node* pNode) { | 5308 FX_BOOL CXFA_ArrayNodeList::Remove(CXFA_Node* pNode) { |
| 5324 int32_t iSize = m_array.GetSize(); | 5309 int32_t iSize = m_array.GetSize(); |
| 5325 for (int32_t i = 0; i < iSize; ++i) { | 5310 for (int32_t i = 0; i < iSize; ++i) { |
| 5326 if (m_array[i] == pNode) { | 5311 if (m_array[i] == pNode) { |
| 5327 m_array.RemoveAt(i); | 5312 m_array.RemoveAt(i); |
| 5328 break; | 5313 break; |
| 5329 } | 5314 } |
| 5330 } | 5315 } |
| 5331 return TRUE; | 5316 return TRUE; |
| 5332 } | 5317 } |
| 5333 CXFA_Node* CXFA_ArrayNodeList::Item(int32_t iIndex) { | 5318 CXFA_Node* CXFA_ArrayNodeList::Item(int32_t iIndex) { |
| 5334 int32_t iSize = m_array.GetSize(); | 5319 int32_t iSize = m_array.GetSize(); |
| 5335 if (iIndex >= 0 && iIndex < iSize) { | 5320 if (iIndex >= 0 && iIndex < iSize) { |
| 5336 return m_array[iIndex]; | 5321 return m_array[iIndex]; |
| 5337 } | 5322 } |
| 5338 return NULL; | 5323 return nullptr; |
| 5339 } | 5324 } |
| 5340 CXFA_AttachNodeList::CXFA_AttachNodeList(CXFA_Document* pDocument, | 5325 CXFA_AttachNodeList::CXFA_AttachNodeList(CXFA_Document* pDocument, |
| 5341 CXFA_Node* pAttachNode) | 5326 CXFA_Node* pAttachNode) |
| 5342 : CXFA_NodeList(pDocument) { | 5327 : CXFA_NodeList(pDocument) { |
| 5343 m_pAttachNode = pAttachNode; | 5328 m_pAttachNode = pAttachNode; |
| 5344 } | 5329 } |
| 5345 int32_t CXFA_AttachNodeList::GetLength() { | 5330 int32_t CXFA_AttachNodeList::GetLength() { |
| 5346 return m_pAttachNode->CountChildren( | 5331 return m_pAttachNode->CountChildren( |
| 5347 XFA_ELEMENT_UNKNOWN, m_pAttachNode->GetClassID() == XFA_ELEMENT_Subform); | 5332 XFA_ELEMENT_UNKNOWN, m_pAttachNode->GetClassID() == XFA_ELEMENT_Subform); |
| 5348 } | 5333 } |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 5362 return m_pAttachNode->InsertChild(pNewNode, pBeforeNode); | 5347 return m_pAttachNode->InsertChild(pNewNode, pBeforeNode); |
| 5363 } | 5348 } |
| 5364 FX_BOOL CXFA_AttachNodeList::Remove(CXFA_Node* pNode) { | 5349 FX_BOOL CXFA_AttachNodeList::Remove(CXFA_Node* pNode) { |
| 5365 return m_pAttachNode->RemoveChild(pNode); | 5350 return m_pAttachNode->RemoveChild(pNode); |
| 5366 } | 5351 } |
| 5367 CXFA_Node* CXFA_AttachNodeList::Item(int32_t iIndex) { | 5352 CXFA_Node* CXFA_AttachNodeList::Item(int32_t iIndex) { |
| 5368 return m_pAttachNode->GetChild( | 5353 return m_pAttachNode->GetChild( |
| 5369 iIndex, XFA_ELEMENT_UNKNOWN, | 5354 iIndex, XFA_ELEMENT_UNKNOWN, |
| 5370 m_pAttachNode->GetClassID() == XFA_ELEMENT_Subform); | 5355 m_pAttachNode->GetClassID() == XFA_ELEMENT_Subform); |
| 5371 } | 5356 } |
| OLD | NEW |