Make CPDFXFA_Page annot iteration methods more consistent.
- Check GetXFAPageView() consistently.
- Make the identical argument to two CreateTraverseWidgetIterator()
calls a constant.
Change-Id: Ice44bccf3f57ef3a97f686c7882e6068ba71faaf
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/70212
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
index 02b5f75..021af5a 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp
@@ -21,6 +21,14 @@
#include "xfa/fxfa/cxfa_rendercontext.h"
#include "xfa/fxgraphics/cxfa_graphics.h"
+namespace {
+
+constexpr uint32_t kIteratorFilter = XFA_WidgetStatus_Visible |
+ XFA_WidgetStatus_Viewable |
+ XFA_WidgetStatus_Focused;
+
+} // namespace
+
CPDFXFA_Page::CPDFXFA_Page(CPDF_Document* pDocument, int page_index)
: m_pDocument(pDocument), m_iPageIndex(page_index) {
ASSERT(m_pDocument->GetExtension());
@@ -179,12 +187,14 @@
if (!pXFAWidget)
return nullptr;
+ CXFA_FFPageView* xfa_page_view = GetXFAPageView();
+ if (!xfa_page_view)
+ return nullptr;
+
ObservedPtr<CPDFSDK_Annot> pObservedAnnot(pSDKAnnot);
CPDFSDK_PageView* pPageView = pSDKAnnot->GetPageView();
std::unique_ptr<IXFA_WidgetIterator> pWidgetIterator =
- GetXFAPageView()->CreateTraverseWidgetIterator(XFA_WidgetStatus_Visible |
- XFA_WidgetStatus_Viewable |
- XFA_WidgetStatus_Focused);
+ xfa_page_view->CreateTraverseWidgetIterator(kIteratorFilter);
// Check |pSDKAnnot| again because JS may have destroyed it
if (!pObservedAnnot)
@@ -209,9 +219,7 @@
ObservedPtr<CPDFSDK_PageView> watched_page_view(page_view);
std::unique_ptr<IXFA_WidgetIterator> it =
- xfa_page_view->CreateTraverseWidgetIterator(XFA_WidgetStatus_Visible |
- XFA_WidgetStatus_Viewable |
- XFA_WidgetStatus_Focused);
+ xfa_page_view->CreateTraverseWidgetIterator(kIteratorFilter);
if (!watched_page_view)
return nullptr;