From 304eefb58759e56be3fb357c78204accd4fa98fc Mon Sep 17 00:00:00 2001 From: Artem Strygin Date: Tue, 29 Aug 2017 00:26:42 +0300 Subject: Implement CPDF_ObjectAvail. This is non recursive replacement for CPDF_DataAvail::AreObjectsAvailable. Also added tests. Change-Id: I546289fc0963d2343253755850f55af8c0bd8e4c Reviewed-on: https://pdfium-review.googlesource.com/11430 Reviewed-by: dsinclair Commit-Queue: Art Snake --- core/fpdfapi/parser/cpdf_data_avail.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'core/fpdfapi/parser/cpdf_data_avail.cpp') diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp index 43897a464c..c9cb1d75fc 100644 --- a/core/fpdfapi/parser/cpdf_data_avail.cpp +++ b/core/fpdfapi/parser/cpdf_data_avail.cpp @@ -18,6 +18,7 @@ #include "core/fpdfapi/parser/cpdf_linearized_header.h" #include "core/fpdfapi/parser/cpdf_name.h" #include "core/fpdfapi/parser/cpdf_number.h" +#include "core/fpdfapi/parser/cpdf_page_object_avail.h" #include "core/fpdfapi/parser/cpdf_read_validator.h" #include "core/fpdfapi/parser/cpdf_reference.h" #include "core/fpdfapi/parser/cpdf_stream.h" @@ -1514,10 +1515,8 @@ bool CPDF_DataAvail::ValidatePage(uint32_t dwPage) { CPDF_Dictionary* pPageDict = m_pDocument->GetPage(safePage.ValueOrDie()); if (!pPageDict) return false; - std::vector obj_array; - obj_array.push_back(pPageDict); - std::vector dummy; - return AreObjectsAvailable(obj_array, true, dummy); + CPDF_PageObjectAvail obj_avail(GetValidator().Get(), m_pDocument, pPageDict); + return obj_avail.CheckAvail() == DocAvailStatus::DataAvailable; } bool CPDF_DataAvail::ValidateForm() { @@ -1527,10 +1526,8 @@ bool CPDF_DataAvail::ValidateForm() { CPDF_Object* pAcroForm = pRoot->GetObjectFor("AcroForm"); if (!pAcroForm) return false; - std::vector obj_array; - obj_array.push_back(pAcroForm); - std::vector dummy; - return AreObjectsAvailable(obj_array, true, dummy); + CPDF_PageObjectAvail obj_avail(GetValidator().Get(), m_pDocument, pAcroForm); + return obj_avail.CheckAvail() == DocAvailStatus::DataAvailable; } CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} -- cgit v1.2.3