From 21f4afbff95cf184917eac23a5659061654760a1 Mon Sep 17 00:00:00 2001 From: Artem Strygin Date: Fri, 8 Sep 2017 17:09:27 +0300 Subject: Use CPDF_ReadValidator to request linearized data. Change-Id: I5c0fccc74a9f103d91c95fd72dc6683d991eadec Reviewed-on: https://pdfium-review.googlesource.com/13570 Reviewed-by: dsinclair Commit-Queue: Art Snake --- core/fpdfapi/parser/cpdf_data_avail.cpp | 15 +++++++-------- core/fpdfapi/parser/cpdf_data_avail.h | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp index 994d082712..b95c9daf8d 100644 --- a/core/fpdfapi/parser/cpdf_data_avail.cpp +++ b/core/fpdfapi/parser/cpdf_data_avail.cpp @@ -1204,8 +1204,7 @@ bool CPDF_DataAvail::LoadPages() { return false; } -CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedData( - DownloadHints* pHints) { +CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedData() { if (m_bLinearedDataOK) return DataAvailable; ASSERT(m_pLinearized); @@ -1218,10 +1217,10 @@ CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedData( if (!data_size.IsValid()) return DataError; - if (!m_pFileAvail->IsDataAvail(m_pLinearized->GetLastXRefOffset(), - data_size.ValueOrDie())) { - pHints->AddSegment(m_pLinearized->GetLastXRefOffset(), - data_size.ValueOrDie()); + if (!GetValidator()->IsDataRangeAvailable( + m_pLinearized->GetLastXRefOffset(), data_size.ValueOrDie())) { + GetValidator()->ScheduleDataDownload(m_pLinearized->GetLastXRefOffset(), + data_size.ValueOrDie()); return DataNotAvailable; } @@ -1312,7 +1311,7 @@ CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsPageAvail( return nRet; } - DocAvailStatus nResult = CheckLinearizedData(pHints); + DocAvailStatus nResult = CheckLinearizedData(); if (nResult != DataAvailable) return nResult; @@ -1479,7 +1478,7 @@ CPDF_DataAvail::DocFormStatus CPDF_DataAvail::IsFormAvail( const HintsScope hints_scope(GetValidator().Get(), pHints); if (m_pLinearized) { - DocAvailStatus nDocStatus = CheckLinearizedData(pHints); + DocAvailStatus nDocStatus = CheckLinearizedData(); if (nDocStatus == DataError) return FormError; if (nDocStatus == DataNotAvailable) diff --git a/core/fpdfapi/parser/cpdf_data_avail.h b/core/fpdfapi/parser/cpdf_data_avail.h index 850ceeaae2..ab54b08404 100644 --- a/core/fpdfapi/parser/cpdf_data_avail.h +++ b/core/fpdfapi/parser/cpdf_data_avail.h @@ -158,7 +158,7 @@ class CPDF_DataAvail final { bool LoadPages(); bool LoadAllXref(DownloadHints* pHints); bool LoadAllFile(); - DocAvailStatus CheckLinearizedData(DownloadHints* pHints); + DocAvailStatus CheckLinearizedData(); bool CheckPageAnnots(uint32_t dwPage); DocAvailStatus CheckLinearizedFirstPage(uint32_t dwPage); -- cgit v1.2.3