summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_read_validator.cpp
diff options
context:
space:
mode:
authorArtem Strygin <art-snake@yandex-team.ru>2017-08-23 17:40:40 +0300
committerChromium commit bot <commit-bot@chromium.org>2017-08-28 21:02:22 +0000
commit4a1493d73135d87d1d4417dd168c92e8902dd12d (patch)
tree074ed195be883756d84e82efa80460a170eefef0 /core/fpdfapi/parser/cpdf_read_validator.cpp
parent93ed5f640ce24dae3f0bbf8eeb38e3cc83909a60 (diff)
downloadpdfium-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.cpp24
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;
+}