document_loader.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright (c) 2010 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef PDF_LOADER_DOCUMENT_LOADER_H_
  5. #define PDF_LOADER_DOCUMENT_LOADER_H_
  6. #include <stddef.h>
  7. #include <stdint.h>
  8. #include <memory>
  9. #include <string>
  10. namespace chrome_pdf {
  11. class URLLoaderWrapper;
  12. class DocumentLoader {
  13. public:
  14. class Client {
  15. public:
  16. virtual ~Client() = default;
  17. // Creates new URLLoader based on client settings.
  18. virtual std::unique_ptr<URLLoaderWrapper> CreateURLLoader() = 0;
  19. // Notification called when all outstanding pending requests are complete.
  20. virtual void OnPendingRequestComplete() = 0;
  21. // Notification called when new data is available.
  22. virtual void OnNewDataReceived() = 0;
  23. // Notification called when document is fully loaded.
  24. virtual void OnDocumentComplete() = 0;
  25. // Notification called when document loading is canceled.
  26. virtual void OnDocumentCanceled() = 0;
  27. };
  28. virtual ~DocumentLoader() = default;
  29. virtual bool Init(std::unique_ptr<URLLoaderWrapper> loader,
  30. const std::string& url) = 0;
  31. // Data access interface. Return true if successful.
  32. virtual bool GetBlock(uint32_t position, uint32_t size, void* buf) const = 0;
  33. // Data availability interface. Return true if data is available.
  34. virtual bool IsDataAvailable(uint32_t position, uint32_t size) const = 0;
  35. // Data request interface.
  36. virtual void RequestData(uint32_t position, uint32_t size) = 0;
  37. virtual bool IsDocumentComplete() const = 0;
  38. virtual uint32_t GetDocumentSize() const = 0;
  39. virtual uint32_t BytesReceived() const = 0;
  40. // Clear pending requests from the queue.
  41. virtual void ClearPendingRequests() = 0;
  42. };
  43. } // namespace chrome_pdf
  44. #endif // PDF_LOADER_DOCUMENT_LOADER_H_