blob: b76752bfef41fb007c4babca4a432899225c1a14 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "pdf/loader/data_document_loader.h"
#include "base/check_op.h"
#include "base/compiler_specific.h"
#include "base/notreached.h"
#include "pdf/loader/url_loader_wrapper.h"
namespace chrome_pdf {
DataDocumentLoader::DataDocumentLoader(base::span<const uint8_t> pdf_data)
: pdf_data_(pdf_data) {}
DataDocumentLoader::~DataDocumentLoader() = default;
bool DataDocumentLoader::Init(std::unique_ptr<URLLoaderWrapper> loader,
const std::string& url) {
NOTREACHED() << "PDFiumDocument doesn't call this";
}
bool DataDocumentLoader::GetBlock(uint32_t position,
base::span<uint8_t> buf) const {
if (!IsDataAvailable(position, buf.size())) {
return false;
}
buf.copy_from(pdf_data_.subspan(position, buf.size()));
return true;
}
bool DataDocumentLoader::IsDataAvailable(uint32_t position,
uint32_t size) const {
CHECK_LE(position, GetDocumentSize());
CHECK_LE(size, GetDocumentSize() - position);
return true;
}
void DataDocumentLoader::RequestData(uint32_t position, uint32_t size) {}
bool DataDocumentLoader::IsDocumentComplete() const {
return true;
}
uint32_t DataDocumentLoader::GetDocumentSize() const {
return pdf_data_.size();
}
uint32_t DataDocumentLoader::BytesReceived() const {
return pdf_data_.size();
}
void DataDocumentLoader::ClearPendingRequests() {}
} // namespace chrome_pdf