diff options
author | Artem Strygin <art-snake@yandex-team.ru> | 2017-08-23 17:40:40 +0300 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-08-28 21:02:22 +0000 |
commit | 4a1493d73135d87d1d4417dd168c92e8902dd12d (patch) | |
tree | 074ed195be883756d84e82efa80460a170eefef0 /core/fpdfapi/parser/cpdf_read_validator.cpp | |
parent | 93ed5f640ce24dae3f0bbf8eeb38e3cc83909a60 (diff) | |
download | pdfium-4a1493d73135d87d1d4417dd168c92e8902dd12d.tar.xz |
Unify CPDF_DataAvail::LoadAllFile.chromium/3199
Use read validator to check whole file availability.
Change-Id: Ic118ccee38557d124ecde3893ee3c18c98c674d5
Reviewed-on: https://pdfium-review.googlesource.com/11712
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_read_validator.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_read_validator.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
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; +} |