summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_data_avail.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_data_avail.cpp
parent93ed5f640ce24dae3f0bbf8eeb38e3cc83909a60 (diff)
downloadpdfium-chromium/3199.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_data_avail.cpp')
-rw-r--r--core/fpdfapi/parser/cpdf_data_avail.cpp32
1 files changed, 15 insertions, 17 deletions
diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp
index 234a5a0b19..9d6b2f4bef 100644
--- a/core/fpdfapi/parser/cpdf_data_avail.cpp
+++ b/core/fpdfapi/parser/cpdf_data_avail.cpp
@@ -281,7 +281,7 @@ bool CPDF_DataAvail::CheckDocStatus(DownloadHints* pHints) {
case PDF_DATAAVAIL_LOADALLCROSSREF:
return LoadAllXref(pHints);
case PDF_DATAAVAIL_LOADALLFILE:
- return LoadAllFile(pHints);
+ return LoadAllFile();
case PDF_DATAAVAIL_ROOT:
return CheckRoot();
case PDF_DATAAVAIL_INFO:
@@ -298,7 +298,7 @@ bool CPDF_DataAvail::CheckDocStatus(DownloadHints* pHints) {
m_docStatus = PDF_DATAAVAIL_PAGE_LATERLOAD;
return true;
case PDF_DATAAVAIL_ERROR:
- return LoadAllFile(pHints);
+ return LoadAllFile();
case PDF_DATAAVAIL_PAGE_LATERLOAD:
m_docStatus = PDF_DATAAVAIL_PAGE;
default:
@@ -307,14 +307,14 @@ bool CPDF_DataAvail::CheckDocStatus(DownloadHints* pHints) {
}
}
-bool CPDF_DataAvail::CheckPageStatus(DownloadHints* pHints) {
+bool CPDF_DataAvail::CheckPageStatus() {
switch (m_docStatus) {
case PDF_DATAAVAIL_PAGETREE:
return CheckPages();
case PDF_DATAAVAIL_PAGE:
return CheckPage();
case PDF_DATAAVAIL_ERROR:
- return LoadAllFile(pHints);
+ return LoadAllFile();
default:
m_bPagesTreeLoad = true;
m_bPagesLoad = true;
@@ -322,13 +322,12 @@ bool CPDF_DataAvail::CheckPageStatus(DownloadHints* pHints) {
}
}
-bool CPDF_DataAvail::LoadAllFile(DownloadHints* pHints) {
- if (m_pFileAvail->IsDataAvail(0, (uint32_t)m_dwFileLen)) {
+bool CPDF_DataAvail::LoadAllFile() {
+ if (GetValidator()->IsWholeFileAvailable()) {
m_docStatus = PDF_DATAAVAIL_DONE;
return true;
}
-
- pHints->AddSegment(0, (uint32_t)m_dwFileLen);
+ GetValidator()->ScheduleDownloadWholeFile();
return false;
}
@@ -1001,7 +1000,7 @@ bool CPDF_DataAvail::CheckTrailer(DownloadHints* pHints) {
return true;
}
-bool CPDF_DataAvail::CheckPage(uint32_t dwPage, DownloadHints* pHints) {
+bool CPDF_DataAvail::CheckPage(uint32_t dwPage) {
while (true) {
switch (m_docStatus) {
case PDF_DATAAVAIL_PAGETREE:
@@ -1013,7 +1012,7 @@ bool CPDF_DataAvail::CheckPage(uint32_t dwPage, DownloadHints* pHints) {
return false;
break;
case PDF_DATAAVAIL_ERROR:
- return LoadAllFile(pHints);
+ return LoadAllFile();
default:
m_bPagesTreeLoad = true;
m_bPagesLoad = true;
@@ -1225,9 +1224,9 @@ bool CPDF_DataAvail::LoadDocPages() {
return false;
}
-bool CPDF_DataAvail::LoadPages(DownloadHints* pHints) {
+bool CPDF_DataAvail::LoadPages() {
while (!m_bPagesTreeLoad) {
- if (!CheckPageStatus(pHints))
+ if (!CheckPageStatus())
return false;
}
@@ -1359,22 +1358,21 @@ CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsPageAvail(
}
if (!m_bMainXRefLoadedOK) {
- if (!LoadAllFile(pHints))
+ if (!LoadAllFile())
return DataNotAvailable;
m_pDocument->GetParser()->RebuildCrossRef();
ResetFirstCheck(dwPage);
return DataAvailable;
}
if (m_bTotalLoadPageTree) {
- if (!LoadPages(pHints))
+ if (!LoadPages())
return DataNotAvailable;
} else {
- if (!m_bCurPageDictLoadOK && !CheckPage(dwPage, pHints))
+ if (!m_bCurPageDictLoadOK && !CheckPage(dwPage))
return DataNotAvailable;
}
} else {
- if (!m_bTotalLoadPageTree && !m_bCurPageDictLoadOK &&
- !CheckPage(dwPage, pHints)) {
+ if (!m_bTotalLoadPageTree && !m_bCurPageDictLoadOK && !CheckPage(dwPage)) {
return DataNotAvailable;
}
}