diff options
author | Ryan Harrison <rharrison@chromium.org> | 2017-10-18 12:28:14 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-10-18 16:41:35 +0000 |
commit | 854d71c1420eb80ec79755a6cdf829f3f39aead7 (patch) | |
tree | ba5f94431c46bcf8fa5b8e873304f14c8c69088c /fpdfsdk/cpdfsdk_pageview.cpp | |
parent | 7c2daec0a5f5d5e0f442db7946e9356daa7c55b2 (diff) | |
download | pdfium-854d71c1420eb80ec79755a6cdf829f3f39aead7.tar.xz |
Refactor HasXFAField into HasFormInfo
The existing API is too restrictive for collection the metrics
information that we want. Specifically it only tells us if there are
XFA forms in the document, but not AcroForms. This refactoring makes
the method more general, so that non-XFA information is provided
also. This change in semantics of the return value required some
changes at the call sites of the API.
BUG=chromium:775519
Change-Id: Id421c66c09b47196c252c64cdc2c711ca1911de0
Reviewed-on: https://pdfium-review.googlesource.com/16210
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fpdfsdk/cpdfsdk_pageview.cpp')
-rw-r--r-- | fpdfsdk/cpdfsdk_pageview.cpp | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp index 516b0eb499..c1b5221235 100644 --- a/fpdfsdk/cpdfsdk_pageview.cpp +++ b/fpdfsdk/cpdfsdk_pageview.cpp @@ -88,7 +88,7 @@ void CPDFSDK_PageView::PageView_OnDraw(CFX_RenderDevice* pDevice, if (!pPage) return; - if (pPage->GetContext()->GetDocType() == XFA_DocType::kFull) { + if (pPage->GetContext()->GetFormType() == FormType::kXFAFull) { CFX_RectF rectClip( static_cast<float>(pClip.left), static_cast<float>(pClip.top), static_cast<float>(pClip.Width()), static_cast<float>(pClip.Height())); @@ -176,11 +176,8 @@ bool CPDFSDK_PageView::DeleteAnnot(CPDFSDK_Annot* pAnnot) { return false; CPDFXFA_Page* pPage = pAnnot->GetPDFXFAPage(); - if (!pPage || - (pPage->GetContext()->GetDocType() != XFA_DocType::kForegroundOnly && - pPage->GetContext()->GetDocType() != XFA_DocType::kFull)) { + if (!pPage || !pPage->GetContext()->ContainsXFAForm()) return false; - } CPDFSDK_Annot::ObservedPtr pObserved(pAnnot); if (GetFocusAnnot() == pAnnot) @@ -429,7 +426,7 @@ void CPDFSDK_PageView::LoadFXAnnots() { #ifdef PDF_ENABLE_XFA RetainPtr<CPDFXFA_Page> protector(m_page); - if (m_pFormFillEnv->GetXFAContext()->GetDocType() == XFA_DocType::kFull) { + if (m_pFormFillEnv->GetXFAContext()->GetFormType() == FormType::kXFAFull) { CXFA_FFPageView* pageView = m_page->GetXFAPageView(); std::unique_ptr<IXFA_WidgetIterator> pWidgetHandler( pageView->CreateWidgetIterator( @@ -486,20 +483,18 @@ int CPDFSDK_PageView::GetPageIndex() const { return -1; #ifdef PDF_ENABLE_XFA - switch (m_page->GetContext()->GetDocType()) { - case XFA_DocType::kFull: { + switch (m_page->GetContext()->GetFormType()) { + case FormType::kXFAFull: { CXFA_FFPageView* pPageView = m_page->GetXFAPageView(); return pPageView ? pPageView->GetPageIndex() : -1; } - case XFA_DocType::kForegroundOnly: - case XFA_DocType::kNone: - return GetPageIndexForStaticPDF(); - default: - return -1; + case FormType::kNone: + case FormType::kAcroForm: + case FormType::kXFAForeground: + break; } -#else // PDF_ENABLE_XFA - return GetPageIndexForStaticPDF(); #endif // PDF_ENABLE_XFA + return GetPageIndexForStaticPDF(); } bool CPDFSDK_PageView::IsValidAnnot(const CPDF_Annot* p) const { |