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_data_avail.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_data_avail.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_data_avail.cpp | 32 |
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; } } |