From 5fda35f2b0a658e310f778c2dc40ef24e6d05975 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 30 Nov 2017 20:21:00 +0000 Subject: Generate XFA node attribute information This CL moves the attribute information out of the xfa basic data array and stores in the generated nodes. Change-Id: Id8e280324bf0f75a1da9c937c2734d161324242d Reviewed-on: https://pdfium-review.googlesource.com/19271 Commit-Queue: dsinclair Reviewed-by: Lei Zhang --- xfa/fxfa/parser/cxfa_layoutpagemgr.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'xfa/fxfa/parser/cxfa_layoutpagemgr.cpp') diff --git a/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp b/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp index c717aff259..e0678c498f 100644 --- a/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp +++ b/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp @@ -97,11 +97,12 @@ void SyncContainer(CXFA_FFNotify* pNotify, uint32_t dwRelevantContainer = 0; if (bVisible) { XFA_ATTRIBUTEENUM eAttributeValue = - pContainerItem->m_pFormNode->JSNode()->GetEnum(XFA_Attribute::Presence); - if (eAttributeValue == XFA_ATTRIBUTEENUM_Visible || - eAttributeValue == XFA_ATTRIBUTEENUM_Unknown) { + pContainerItem->m_pFormNode->JSNode() + ->TryEnum(XFA_Attribute::Presence, true) + .value_or(XFA_ATTRIBUTEENUM_Visible); + if (eAttributeValue == XFA_ATTRIBUTEENUM_Visible) bVisibleItem = true; - } + dwRelevantContainer = GetRelevant(pContainerItem->m_pFormNode, dwRelevant); dwStatus = (bVisibleItem ? XFA_WidgetStatus_Visible : 0) | dwRelevantContainer; @@ -1927,9 +1928,12 @@ void CXFA_LayoutPageMgr::SyncLayoutData() { pChildLayoutItem = iterator.MoveToNext(); continue; } - bool bVisible = - (pContentItem->m_pFormNode->JSNode()->GetEnum( - XFA_Attribute::Presence) == XFA_ATTRIBUTEENUM_Visible); + + XFA_ATTRIBUTEENUM presence = + pContentItem->m_pFormNode->JSNode() + ->TryEnum(XFA_Attribute::Presence, true) + .value_or(XFA_ATTRIBUTEENUM_Visible); + bool bVisible = presence == XFA_ATTRIBUTEENUM_Visible; uint32_t dwRelevantChild = GetRelevant(pContentItem->m_pFormNode, dwRelevant); SyncContainer(pNotify, m_pLayoutProcessor, pContentItem, -- cgit v1.2.3