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

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

Issue 2082573007: Update GetClassID to GetElementType (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@remove_script_obj_hash
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fxfa/parser/xfa_script_nodehelper.h" 7 #include "xfa/fxfa/parser/xfa_script_nodehelper.h"
8 8
9 #include "core/fxcrt/include/fx_ext.h" 9 #include "core/fxcrt/include/fx_ext.h"
10 #include "xfa/fxfa/parser/xfa_doclayout.h" 10 #include "xfa/fxfa/parser/xfa_doclayout.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 XFA_LOGIC_TYPE eLogicType, 46 XFA_LOGIC_TYPE eLogicType,
47 CXFA_NodeArray* pSiblings, 47 CXFA_NodeArray* pSiblings,
48 FX_BOOL bIsClassName) { 48 FX_BOOL bIsClassName) {
49 if (!pNode) 49 if (!pNode)
50 return 0; 50 return 0;
51 CXFA_Node* parent = 51 CXFA_Node* parent =
52 XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_NoTransparent); 52 XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_NoTransparent);
53 if (!parent) 53 if (!parent)
54 return 0; 54 return 0;
55 const XFA_PROPERTY* pProperty = XFA_GetPropertyOfElement( 55 const XFA_PROPERTY* pProperty = XFA_GetPropertyOfElement(
56 parent->GetClassID(), pNode->GetClassID(), XFA_XDPPACKET_UNKNOWN); 56 parent->GetElementType(), pNode->GetElementType(), XFA_XDPPACKET_UNKNOWN);
57 if (!pProperty && eLogicType == XFA_LOGIC_Transparent) { 57 if (!pProperty && eLogicType == XFA_LOGIC_Transparent) {
58 parent = XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_Transparent); 58 parent = XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_Transparent);
59 if (parent == NULL) { 59 if (parent == NULL) {
60 return 0; 60 return 0;
61 } 61 }
62 } 62 }
63 if (bIsClassName) { 63 if (bIsClassName) {
64 return XFA_NodeAcc_TraverseSiblings(parent, pNode->GetClassHashCode(), 64 return XFA_NodeAcc_TraverseSiblings(parent, pNode->GetClassHashCode(),
65 pSiblings, eLogicType, bIsClassName); 65 pSiblings, eLogicType, bIsClassName);
66 } else { 66 } else {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 int32_t nProperties = properties.GetSize(); 147 int32_t nProperties = properties.GetSize();
148 for (i = 0; i < nProperties; ++i) { 148 for (i = 0; i < nProperties; ++i) {
149 CXFA_Node* child = properties[i]; 149 CXFA_Node* child = properties[i];
150 if (bIsClassName) { 150 if (bIsClassName) {
151 if (child->GetClassHashCode() == dNameHash) { 151 if (child->GetClassHashCode() == dNameHash) {
152 pSiblings->Add(child); 152 pSiblings->Add(child);
153 nCount++; 153 nCount++;
154 } 154 }
155 } else { 155 } else {
156 if (child->GetNameHash() == dNameHash) { 156 if (child->GetNameHash() == dNameHash) {
157 if (child->GetClassID() != XFA_Element::PageSet && 157 if (child->GetElementType() != XFA_Element::PageSet &&
158 child->GetClassID() != XFA_Element::Extras && 158 child->GetElementType() != XFA_Element::Extras &&
159 child->GetClassID() != XFA_Element::Items) { 159 child->GetElementType() != XFA_Element::Items) {
160 pSiblings->Add(child); 160 pSiblings->Add(child);
161 nCount++; 161 nCount++;
162 } 162 }
163 } 163 }
164 } 164 }
165 if (child->IsUnnamed() && child->GetClassID() == XFA_Element::PageSet) { 165 if (child->IsUnnamed() &&
166 child->GetElementType() == XFA_Element::PageSet) {
166 nCount += XFA_NodeAcc_TraverseSiblings(child, dNameHash, pSiblings, 167 nCount += XFA_NodeAcc_TraverseSiblings(child, dNameHash, pSiblings,
167 eLogicType, bIsClassName, FALSE); 168 eLogicType, bIsClassName, FALSE);
168 } 169 }
169 } 170 }
170 if (nCount > 0) { 171 if (nCount > 0) {
171 return nCount; 172 return nCount;
172 } 173 }
173 } 174 }
174 CXFA_NodeArray children; 175 CXFA_NodeArray children;
175 parent->GetNodeList(children, XFA_NODEFILTER_Children); 176 parent->GetNodeList(children, XFA_NODEFILTER_Children);
176 int32_t nChildren = children.GetSize(); 177 int32_t nChildren = children.GetSize();
177 for (i = 0; i < nChildren; i++) { 178 for (i = 0; i < nChildren; i++) {
178 CXFA_Node* child = children[i]; 179 CXFA_Node* child = children[i];
179 if (child->GetClassID() == XFA_Element::Variables) { 180 if (child->GetElementType() == XFA_Element::Variables) {
180 continue; 181 continue;
181 } 182 }
182 if (bIsClassName) { 183 if (bIsClassName) {
183 if (child->GetClassHashCode() == dNameHash) { 184 if (child->GetClassHashCode() == dNameHash) {
184 if (pSiblings) { 185 if (pSiblings) {
185 pSiblings->Add(child); 186 pSiblings->Add(child);
186 } 187 }
187 nCount++; 188 nCount++;
188 } 189 }
189 } else { 190 } else {
190 if (child->GetNameHash() == dNameHash) { 191 if (child->GetNameHash() == dNameHash) {
191 if (pSiblings) { 192 if (pSiblings) {
192 pSiblings->Add(child); 193 pSiblings->Add(child);
193 } 194 }
194 nCount++; 195 nCount++;
195 } 196 }
196 } 197 }
197 if (eLogicType == XFA_LOGIC_NoTransparent) { 198 if (eLogicType == XFA_LOGIC_NoTransparent) {
198 continue; 199 continue;
199 } 200 }
200 if (XFA_NodeIsTransparent(child) && 201 if (XFA_NodeIsTransparent(child) &&
201 child->GetClassID() != XFA_Element::PageSet) { 202 child->GetElementType() != XFA_Element::PageSet) {
202 nCount += XFA_NodeAcc_TraverseSiblings(child, dNameHash, pSiblings, 203 nCount += XFA_NodeAcc_TraverseSiblings(child, dNameHash, pSiblings,
203 eLogicType, bIsClassName, FALSE); 204 eLogicType, bIsClassName, FALSE);
204 } 205 }
205 } 206 }
206 return nCount; 207 return nCount;
207 } 208 }
208 209
209 CXFA_Node* CXFA_NodeHelper::XFA_ResolveNodes_GetParent( 210 CXFA_Node* CXFA_NodeHelper::XFA_ResolveNodes_GetParent(
210 CXFA_Node* pNode, 211 CXFA_Node* pNode,
211 XFA_LOGIC_TYPE eLogicType) { 212 XFA_LOGIC_TYPE eLogicType) {
212 if (!pNode) { 213 if (!pNode) {
213 return NULL; 214 return NULL;
214 } 215 }
215 if (eLogicType == XFA_LOGIC_NoTransparent) { 216 if (eLogicType == XFA_LOGIC_NoTransparent) {
216 return pNode->GetNodeItem(XFA_NODEITEM_Parent); 217 return pNode->GetNodeItem(XFA_NODEITEM_Parent);
217 } 218 }
218 CXFA_Node* parent; 219 CXFA_Node* parent;
219 CXFA_Node* node = pNode; 220 CXFA_Node* node = pNode;
220 while (TRUE) { 221 while (TRUE) {
221 parent = XFA_ResolveNodes_GetParent(node); 222 parent = XFA_ResolveNodes_GetParent(node);
222 if (parent == NULL) { 223 if (parent == NULL) {
223 break; 224 break;
224 } 225 }
225 XFA_Element parentElement = parent->GetClassID(); 226 XFA_Element parentElement = parent->GetElementType();
226 if ((!parent->IsUnnamed() && parentElement != XFA_Element::SubformSet) || 227 if ((!parent->IsUnnamed() && parentElement != XFA_Element::SubformSet) ||
227 parentElement == XFA_Element::Variables) { 228 parentElement == XFA_Element::Variables) {
228 break; 229 break;
229 } 230 }
230 node = parent; 231 node = parent;
231 } 232 }
232 return parent; 233 return parent;
233 } 234 }
234 235
235 int32_t CXFA_NodeHelper::XFA_GetIndex(CXFA_Node* pNode, 236 int32_t CXFA_NodeHelper::XFA_GetIndex(CXFA_Node* pNode,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 wsName = wsParent; 281 wsName = wsParent;
281 parent = XFA_ResolveNodes_GetParent(parent, XFA_LOGIC_NoTransparent); 282 parent = XFA_ResolveNodes_GetParent(parent, XFA_LOGIC_NoTransparent);
282 } 283 }
283 return; 284 return;
284 } 285 }
285 286
286 CFX_WideStringC wsTagName; 287 CFX_WideStringC wsTagName;
287 CFX_WideString ws; 288 CFX_WideString ws;
288 FX_BOOL bIsProperty = XFA_NodeIsProperty(refNode); 289 FX_BOOL bIsProperty = XFA_NodeIsProperty(refNode);
289 if (refNode->IsUnnamed() || 290 if (refNode->IsUnnamed() ||
290 (bIsProperty && refNode->GetClassID() != XFA_Element::PageSet)) { 291 (bIsProperty && refNode->GetElementType() != XFA_Element::PageSet)) {
291 refNode->GetClassName(wsTagName); 292 refNode->GetClassName(wsTagName);
292 ws = wsTagName; 293 ws = wsTagName;
293 wsName.Format(L"#%s[%d]", ws.c_str(), 294 wsName.Format(L"#%s[%d]", ws.c_str(),
294 XFA_GetIndex(refNode, eLogicType, bIsProperty, TRUE)); 295 XFA_GetIndex(refNode, eLogicType, bIsProperty, TRUE));
295 return; 296 return;
296 } 297 }
297 ws = refNode->GetCData(XFA_ATTRIBUTE_Name); 298 ws = refNode->GetCData(XFA_ATTRIBUTE_Name);
298 ws.Replace(L".", L"\\."); 299 ws.Replace(L".", L"\\.");
299 wsName.Format(L"%s[%d]", ws.c_str(), 300 wsName.Format(L"%s[%d]", ws.c_str(),
300 XFA_GetIndex(refNode, eLogicType, bIsProperty, FALSE)); 301 XFA_GetIndex(refNode, eLogicType, bIsProperty, FALSE));
301 } 302 }
302 303
303 FX_BOOL CXFA_NodeHelper::XFA_NodeIsTransparent(CXFA_Node* refNode) { 304 FX_BOOL CXFA_NodeHelper::XFA_NodeIsTransparent(CXFA_Node* refNode) {
304 if (refNode == NULL) { 305 if (refNode == NULL) {
305 return FALSE; 306 return FALSE;
306 } 307 }
307 XFA_Element eRefNode = refNode->GetClassID(); 308 XFA_Element eRefNode = refNode->GetElementType();
308 if ((refNode->IsUnnamed() && refNode->IsContainerNode()) || 309 if ((refNode->IsUnnamed() && refNode->IsContainerNode()) ||
309 eRefNode == XFA_Element::SubformSet || eRefNode == XFA_Element::Area || 310 eRefNode == XFA_Element::SubformSet || eRefNode == XFA_Element::Area ||
310 eRefNode == XFA_Element::Proto) { 311 eRefNode == XFA_Element::Proto) {
311 return TRUE; 312 return TRUE;
312 } 313 }
313 return FALSE; 314 return FALSE;
314 } 315 }
315 316
316 FX_BOOL CXFA_NodeHelper::XFA_CreateNode_ForCondition( 317 FX_BOOL CXFA_NodeHelper::XFA_CreateNode_ForCondition(
317 CFX_WideString& wsCondition) { 318 CFX_WideString& wsCondition) {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 if (!bResult) { 412 if (!bResult) {
412 m_pCreateParent = NULL; 413 m_pCreateParent = NULL;
413 } 414 }
414 return bResult; 415 return bResult;
415 } 416 }
416 417
417 void CXFA_NodeHelper::XFA_SetCreateNodeType(CXFA_Node* refNode) { 418 void CXFA_NodeHelper::XFA_SetCreateNodeType(CXFA_Node* refNode) {
418 if (refNode == NULL) { 419 if (refNode == NULL) {
419 return; 420 return;
420 } 421 }
421 if (refNode->GetClassID() == XFA_Element::Subform) { 422 if (refNode->GetElementType() == XFA_Element::Subform) {
422 m_eLastCreateType = XFA_Element::DataGroup; 423 m_eLastCreateType = XFA_Element::DataGroup;
423 } else if (refNode->GetClassID() == XFA_Element::Field) { 424 } else if (refNode->GetElementType() == XFA_Element::Field) {
424 m_eLastCreateType = XFA_FieldIsMultiListBox(refNode) 425 m_eLastCreateType = XFA_FieldIsMultiListBox(refNode)
425 ? XFA_Element::DataGroup 426 ? XFA_Element::DataGroup
426 : XFA_Element::DataValue; 427 : XFA_Element::DataValue;
427 } else if (refNode->GetClassID() == XFA_Element::ExclGroup) { 428 } else if (refNode->GetElementType() == XFA_Element::ExclGroup) {
428 m_eLastCreateType = XFA_Element::DataValue; 429 m_eLastCreateType = XFA_Element::DataValue;
429 } 430 }
430 } 431 }
431 432
432 FX_BOOL CXFA_NodeHelper::XFA_NodeIsProperty(CXFA_Node* refNode) { 433 FX_BOOL CXFA_NodeHelper::XFA_NodeIsProperty(CXFA_Node* refNode) {
433 CXFA_Node* parent = 434 CXFA_Node* parent =
434 XFA_ResolveNodes_GetParent(refNode, XFA_LOGIC_NoTransparent); 435 XFA_ResolveNodes_GetParent(refNode, XFA_LOGIC_NoTransparent);
435 return parent && refNode && 436 return parent && refNode &&
436 XFA_GetPropertyOfElement(parent->GetClassID(), refNode->GetClassID(), 437 XFA_GetPropertyOfElement(parent->GetElementType(),
438 refNode->GetElementType(),
437 XFA_XDPPACKET_UNKNOWN); 439 XFA_XDPPACKET_UNKNOWN);
438 } 440 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698