#include "core/fpdfapi/parser/cpdf_read_validator.h"
#include <algorithm>
#include <utility>
#include "core/fpdfapi/parser/cpdf_stream.h"
#include "core/fxcrt/fx_safe_types.h"
#include "core/fxcrt/notreached.h"
namespace {
constexpr FX_FILESIZE kAlignBlockValue = …;
FX_FILESIZE AlignDown(FX_FILESIZE offset) { … }
FX_FILESIZE AlignUp(FX_FILESIZE offset) { … }
}
CPDF_ReadValidator::ScopedSession::ScopedSession(
RetainPtr<CPDF_ReadValidator> validator)
: … { … }
CPDF_ReadValidator::ScopedSession::~ScopedSession() { … }
CPDF_ReadValidator::CPDF_ReadValidator(
RetainPtr<IFX_SeekableReadStream> file_read,
CPDF_DataAvail::FileAvail* file_avail)
: … { … }
CPDF_ReadValidator::~CPDF_ReadValidator() = default;
void CPDF_ReadValidator::ResetErrors() { … }
bool CPDF_ReadValidator::ReadBlockAtOffset(pdfium::span<uint8_t> buffer,
FX_FILESIZE offset) { … }
FX_FILESIZE CPDF_ReadValidator::GetSize() { … }
void CPDF_ReadValidator::ScheduleDownload(FX_FILESIZE offset, size_t size) { … }
bool CPDF_ReadValidator::IsDataRangeAvailable(FX_FILESIZE offset,
size_t size) const { … }
bool CPDF_ReadValidator::IsWholeFileAvailable() { … }
bool CPDF_ReadValidator::CheckDataRangeAndRequestIfUnavailable(
FX_FILESIZE offset,
size_t size) { … }
bool CPDF_ReadValidator::CheckWholeFileAndRequestIfUnavailable() { … }