#ifndef PDF_LOADER_DOCUMENT_LOADER_H_
#define PDF_LOADER_DOCUMENT_LOADER_H_
#include <stddef.h>
#include <stdint.h>
#include <memory>
#include <string>
#include "base/containers/span.h"
namespace chrome_pdf {
class URLLoaderWrapper;
class DocumentLoader {
public:
class Client {
public:
virtual ~Client() = default;
virtual std::unique_ptr<URLLoaderWrapper> CreateURLLoader() = 0;
virtual void OnPendingRequestComplete() = 0;
virtual void OnNewDataReceived() = 0;
virtual void OnDocumentComplete() = 0;
virtual void OnDocumentCanceled() = 0;
};
virtual ~DocumentLoader() = default;
virtual bool Init(std::unique_ptr<URLLoaderWrapper> loader,
const std::string& url) = 0;
virtual bool GetBlock(uint32_t position, base::span<uint8_t> buf) const = 0;
virtual bool IsDataAvailable(uint32_t position, uint32_t size) const = 0;
virtual void RequestData(uint32_t position, uint32_t size) = 0;
virtual bool IsDocumentComplete() const = 0;
virtual uint32_t GetDocumentSize() const = 0;
virtual uint32_t BytesReceived() const = 0;
virtual void ClearPendingRequests() = 0;
};
}
#endif