From 854d71c1420eb80ec79755a6cdf829f3f39aead7 Mon Sep 17 00:00:00 2001 From: Ryan Harrison Date: Wed, 18 Oct 2017 12:28:14 -0400 Subject: 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 Reviewed-by: Henrique Nakashima Reviewed-by: dsinclair --- fpdfsdk/fpdfview.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'fpdfsdk/fpdfview.cpp') diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp index 9a8e8eb0b5..98a5b32d96 100644 --- a/fpdfsdk/fpdfview.cpp +++ b/fpdfsdk/fpdfview.cpp @@ -565,30 +565,28 @@ FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BYTESTRING password) { password); } -FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_HasXFAField(FPDF_DOCUMENT document, - int* docType) { +FPDF_EXPORT int FPDF_CALLCONV FPDF_GetFormType(FPDF_DOCUMENT document) { if (!document) return false; const CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); if (!pDoc) - return false; + return FORMTYPE_NONE; const CPDF_Dictionary* pRoot = pDoc->GetRoot(); if (!pRoot) - return false; + return FORMTYPE_NONE; CPDF_Dictionary* pAcroForm = pRoot->GetDictFor("AcroForm"); if (!pAcroForm) - return false; + return FORMTYPE_NONE; CPDF_Object* pXFA = pAcroForm->GetObjectFor("XFA"); if (!pXFA) - return false; + return FORMTYPE_ACRO_FORM; - bool bDynamicXFA = pRoot->GetBooleanFor("NeedsRendering", false); - *docType = bDynamicXFA ? XFADOCTYPE_FULL : XFADOCTYPE_FOREGROUNDONLY; - return true; + bool needsRendering = pRoot->GetBooleanFor("NeedsRendering", false); + return needsRendering ? FORMTYPE_XFA_FULL : FORMTYPE_XFA_FOREGROUND; } #ifdef PDF_ENABLE_XFA -- cgit v1.2.3