From 4a1493d73135d87d1d4417dd168c92e8902dd12d Mon Sep 17 00:00:00 2001 From: Artem Strygin Date: Wed, 23 Aug 2017 17:40:40 +0300 Subject: Unify CPDF_DataAvail::LoadAllFile. Use read validator to check whole file availability. Change-Id: Ic118ccee38557d124ecde3893ee3c18c98c674d5 Reviewed-on: https://pdfium-review.googlesource.com/11712 Commit-Queue: dsinclair Reviewed-by: dsinclair --- core/fpdfapi/parser/cpdf_read_validator.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'core/fpdfapi/parser/cpdf_read_validator.cpp') diff --git a/core/fpdfapi/parser/cpdf_read_validator.cpp b/core/fpdfapi/parser/cpdf_read_validator.cpp index be20f18f33..d01b3c61e6 100644 --- a/core/fpdfapi/parser/cpdf_read_validator.cpp +++ b/core/fpdfapi/parser/cpdf_read_validator.cpp @@ -84,6 +84,13 @@ FX_FILESIZE CPDF_ReadValidator::GetSize() { } void CPDF_ReadValidator::ScheduleDownload(FX_FILESIZE offset, size_t size) { + const FX_SAFE_UINT32 safe_size = size; + if (safe_size.IsValid()) + ScheduleDataDownload(offset, safe_size.ValueOrDie()); +} + +void CPDF_ReadValidator::ScheduleDataDownload(FX_FILESIZE offset, + uint32_t size) { if (!hints_ || size == 0) return; @@ -105,3 +112,20 @@ void CPDF_ReadValidator::ScheduleDownload(FX_FILESIZE offset, size_t size) { } hints_->AddSegment(start_segment_offset, segment_size.ValueOrDie()); } + +void CPDF_ReadValidator::ScheduleDownloadWholeFile() { + const FX_SAFE_UINT32 safe_size = GetSize(); + if (safe_size.IsValid()) + ScheduleDataDownload(0, safe_size.ValueOrDie()); +} + +bool CPDF_ReadValidator::IsDataRangeAvailable(FX_FILESIZE offset, + uint32_t size) const { + return !file_avail_ || file_avail_->IsDataAvail(offset, size); +} + +bool CPDF_ReadValidator::IsWholeFileAvailable() { + const FX_SAFE_UINT32 safe_size = GetSize(); + return safe_size.IsValid() ? IsDataRangeAvailable(0, safe_size.ValueOrDie()) + : false; +} -- cgit v1.2.3