summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_data_avail.cpp
diff options
context:
space:
mode:
authorArtem Strygin <art-snake@yandex-team.ru>2017-09-08 18:10:01 +0300
committerChromium commit bot <commit-bot@chromium.org>2017-09-19 00:15:50 +0000
commit2c559dc576392e69208895f2632f49ee43903d48 (patch)
tree0d9d281df2dd854f09e44f3e0dfab40f76c07cf8 /core/fpdfapi/parser/cpdf_data_avail.cpp
parent0bf6961663ec38568b9323e66a8c808d9aa726fb (diff)
downloadpdfium-2c559dc576392e69208895f2632f49ee43903d48.tar.xz
Use CPDF_ReadValidator to request linearized hint tables.
Change-Id: I9ecf08c5cabfeb7b354abeb46b94918ae0b4539a Reviewed-on: https://pdfium-review.googlesource.com/13590 Commit-Queue: Art Snake <art-snake@yandex-team.ru> 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.cpp25
1 files changed, 11 insertions, 14 deletions
diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp
index 4fa419c22a..bbd61dda00 100644
--- a/core/fpdfapi/parser/cpdf_data_avail.cpp
+++ b/core/fpdfapi/parser/cpdf_data_avail.cpp
@@ -207,7 +207,7 @@ CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsDocAvail(
const HintsScope hints_scope(m_pFileRead.Get(), pHints);
while (!m_bDocAvail) {
- if (!CheckDocStatus(pHints))
+ if (!CheckDocStatus())
return DataNotAvailable;
}
@@ -261,14 +261,14 @@ bool CPDF_DataAvail::CheckAcroForm() {
return true;
}
-bool CPDF_DataAvail::CheckDocStatus(DownloadHints* pHints) {
+bool CPDF_DataAvail::CheckDocStatus() {
switch (m_docStatus) {
case PDF_DATAAVAIL_HEADER:
return CheckHeader();
case PDF_DATAAVAIL_FIRSTPAGE:
return CheckFirstPage();
case PDF_DATAAVAIL_HINTTABLE:
- return CheckHintTables(pHints);
+ return CheckHintTables();
case PDF_DATAAVAIL_END:
return CheckEnd();
case PDF_DATAAVAIL_CROSSREF:
@@ -601,9 +601,7 @@ bool CPDF_DataAvail::CheckFirstPage() {
return true;
}
-bool CPDF_DataAvail::IsDataAvail(FX_FILESIZE offset,
- uint32_t size,
- DownloadHints* pHints) {
+bool CPDF_DataAvail::IsDataAvail(FX_FILESIZE offset, uint32_t size) {
if (offset < 0 || offset > m_dwFileLen)
return true;
@@ -615,15 +613,14 @@ bool CPDF_DataAvail::IsDataAvail(FX_FILESIZE offset,
else
size += 512;
- if (!m_pFileAvail->IsDataAvail(offset, size)) {
- if (pHints)
- pHints->AddSegment(offset, size);
+ if (!GetValidator()->IsDataRangeAvailable(offset, size)) {
+ GetValidator()->ScheduleDataDownload(offset, size);
return false;
}
return true;
}
-bool CPDF_DataAvail::CheckHintTables(DownloadHints* pHints) {
+bool CPDF_DataAvail::CheckHintTables() {
if (m_pLinearized->GetPageCount() <= 1) {
m_docStatus = PDF_DATAAVAIL_DONE;
return true;
@@ -633,10 +630,10 @@ bool CPDF_DataAvail::CheckHintTables(DownloadHints* pHints) {
return false;
}
- FX_FILESIZE szHintStart = m_pLinearized->GetHintStart();
- FX_FILESIZE szHintLength = m_pLinearized->GetHintLength();
+ const FX_FILESIZE szHintStart = m_pLinearized->GetHintStart();
+ const uint32_t szHintLength = m_pLinearized->GetHintLength();
- if (!IsDataAvail(szHintStart, szHintLength, pHints))
+ if (!IsDataAvail(szHintStart, szHintLength))
return false;
m_syntaxParser.InitParser(m_pFileRead, m_dwHeaderOffset);
@@ -1316,7 +1313,7 @@ CPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsPageAvail(
return nResult;
if (m_pHintTables) {
- nResult = m_pHintTables->CheckPage(dwPage, pHints);
+ nResult = m_pHintTables->CheckPage(dwPage);
if (nResult != DataAvailable)
return nResult;
m_pagesLoadState.insert(dwPage);