| Index: core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h
 | 
| diff --git a/core/fpdfapi/fpdf_parser/cpdf_data_avail.h b/core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h
 | 
| similarity index 55%
 | 
| rename from core/fpdfapi/fpdf_parser/cpdf_data_avail.h
 | 
| rename to core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h
 | 
| index 553489a2672ed172289d438489eb92846611be36..4adedba36c29be00810fdcfa5a72c0dd9176c701 100644
 | 
| --- a/core/fpdfapi/fpdf_parser/cpdf_data_avail.h
 | 
| +++ b/core/fpdfapi/fpdf_parser/include/cpdf_data_avail.h
 | 
| @@ -4,16 +4,15 @@
 | 
|  
 | 
|  // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 | 
|  
 | 
| -#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_
 | 
| -#define CORE_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_
 | 
| +#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DATA_AVAIL_H_
 | 
| +#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DATA_AVAIL_H_
 | 
|  
 | 
| -#include "core/fpdfapi/fpdf_parser/cpdf_hint_tables.h"
 | 
|  #include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h"
 | 
|  #include "core/fpdfapi/fpdf_parser/include/cpdf_parser.h"
 | 
| -#include "core/fpdfapi/fpdf_parser/include/ipdf_data_avail.h"
 | 
|  #include "core/fxcrt/include/fx_basic.h"
 | 
|  
 | 
|  class CPDF_Dictionary;
 | 
| +class CPDF_HintTables;
 | 
|  class CPDF_IndirectObjectHolder;
 | 
|  class CPDF_Parser;
 | 
|  
 | 
| @@ -49,22 +48,61 @@ enum PDF_PAGENODE_TYPE {
 | 
|    PDF_PAGENODE_ARRAY,
 | 
|  };
 | 
|  
 | 
| -class CPDF_DataAvail final : public IPDF_DataAvail {
 | 
| +class CPDF_DataAvail final {
 | 
|   public:
 | 
| +  // Must match PDF_DATA_* definitions in public/fpdf_dataavail.h, but cannot
 | 
| +  // #include that header. fpdfsdk/fpdf_dataavail.cpp has static_asserts
 | 
| +  // to make sure the two sets of values match.
 | 
| +  enum DocAvailStatus {
 | 
| +    DataError = -1,        // PDF_DATA_ERROR
 | 
| +    DataNotAvailable = 0,  // PDF_DATA_NOTAVAIL
 | 
| +    DataAvailable = 1,     // PDF_DATA_AVAIL
 | 
| +  };
 | 
| +
 | 
| +  // Must match PDF_*LINEAR* definitions in public/fpdf_dataavail.h, but cannot
 | 
| +  // #include that header. fpdfsdk/fpdf_dataavail.cpp has static_asserts
 | 
| +  // to make sure the two sets of values match.
 | 
| +  enum DocLinearizationStatus {
 | 
| +    LinearizationUnknown = -1,  // PDF_LINEARIZATION_UNKNOWN
 | 
| +    NotLinearized = 0,          // PDF_NOT_LINEARIZED
 | 
| +    Linearized = 1,             // PDF_LINEARIZED
 | 
| +  };
 | 
| +
 | 
| +  // Must match PDF_FORM_* definitions in public/fpdf_dataavail.h, but cannot
 | 
| +  // #include that header. fpdfsdk/fpdf_dataavail.cpp has static_asserts
 | 
| +  // to make sure the two sets of values match.
 | 
| +  enum DocFormStatus {
 | 
| +    FormError = -1,        // PDF_FORM_ERROR
 | 
| +    FormNotAvailable = 0,  // PDF_FORM_NOTAVAIL
 | 
| +    FormAvailable = 1,     // PDF_FORM_AVAIL
 | 
| +    FormNotExist = 2,      // PDF_FORM_NOTEXIST
 | 
| +  };
 | 
| +
 | 
| +  class FileAvail {
 | 
| +   public:
 | 
| +    virtual ~FileAvail();
 | 
| +    virtual FX_BOOL IsDataAvail(FX_FILESIZE offset, uint32_t size) = 0;
 | 
| +  };
 | 
| +
 | 
| +  class DownloadHints {
 | 
| +   public:
 | 
| +    virtual ~DownloadHints();
 | 
| +    virtual void AddSegment(FX_FILESIZE offset, uint32_t size) = 0;
 | 
| +  };
 | 
| +
 | 
|    CPDF_DataAvail(FileAvail* pFileAvail,
 | 
|                   IFX_FileRead* pFileRead,
 | 
|                   FX_BOOL bSupportHintTable);
 | 
| -  ~CPDF_DataAvail() override;
 | 
| -
 | 
| -  // IPDF_DataAvail
 | 
| -  DocAvailStatus IsDocAvail(DownloadHints* pHints) override;
 | 
| -  void SetDocument(CPDF_Document* pDoc) override;
 | 
| -  DocAvailStatus IsPageAvail(int iPage, DownloadHints* pHints) override;
 | 
| -  DocFormStatus IsFormAvail(DownloadHints* pHints) override;
 | 
| -  DocLinearizationStatus IsLinearizedPDF() override;
 | 
| -  FX_BOOL IsLinearized() override;
 | 
| -  void GetLinearizedMainXRefInfo(FX_FILESIZE* pPos, uint32_t* pSize) override;
 | 
| -
 | 
| +  ~CPDF_DataAvail();
 | 
| +
 | 
| +  DocAvailStatus IsDocAvail(DownloadHints* pHints);
 | 
| +  void SetDocument(CPDF_Document* pDoc);
 | 
| +  DocAvailStatus IsPageAvail(int iPage, DownloadHints* pHints);
 | 
| +  DocFormStatus IsFormAvail(DownloadHints* pHints);
 | 
| +  DocLinearizationStatus IsLinearizedPDF();
 | 
| +  FX_BOOL IsLinearized();
 | 
| +  void GetLinearizedMainXRefInfo(FX_FILESIZE* pPos, uint32_t* pSize);
 | 
| +  IFX_FileRead* GetFileRead() const { return m_pFileRead; }
 | 
|    int GetPageCount() const;
 | 
|    CPDF_Dictionary* GetPage(int index);
 | 
|  
 | 
| @@ -88,30 +126,29 @@ class CPDF_DataAvail final : public IPDF_DataAvail {
 | 
|    uint32_t GetObjectSize(uint32_t objnum, FX_FILESIZE& offset);
 | 
|    FX_BOOL IsObjectsAvail(CFX_ArrayTemplate<CPDF_Object*>& obj_array,
 | 
|                           FX_BOOL bParsePage,
 | 
| -                         IPDF_DataAvail::DownloadHints* pHints,
 | 
| +                         DownloadHints* pHints,
 | 
|                           CFX_ArrayTemplate<CPDF_Object*>& ret_array);
 | 
| -  FX_BOOL CheckDocStatus(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckHeader(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckFirstPage(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckHintTables(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckEnd(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckCrossRef(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckCrossRefItem(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckTrailer(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckRoot(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckInfo(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckPages(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckPage(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckResources(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckAnnots(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckAcroForm(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckAcroFormSubObject(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckTrailerAppend(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckPageStatus(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckAllCrossRefStream(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -
 | 
| -  int32_t CheckCrossRefStream(IPDF_DataAvail::DownloadHints* pHints,
 | 
| -                              FX_FILESIZE& xref_offset);
 | 
| +  FX_BOOL CheckDocStatus(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckHeader(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckFirstPage(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckHintTables(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckEnd(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckCrossRef(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckCrossRefItem(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckTrailer(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckRoot(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckInfo(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckPages(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckPage(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckResources(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckAnnots(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckAcroForm(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckAcroFormSubObject(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckTrailerAppend(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckPageStatus(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckAllCrossRefStream(DownloadHints* pHints);
 | 
| +
 | 
| +  int32_t CheckCrossRefStream(DownloadHints* pHints, FX_FILESIZE& xref_offset);
 | 
|    FX_BOOL IsLinearizedFile(uint8_t* pData, uint32_t dwLen);
 | 
|    void SetStartOffset(FX_FILESIZE dwOffset);
 | 
|    FX_BOOL GetNextToken(CFX_ByteString& token);
 | 
| @@ -121,41 +158,39 @@ class CPDF_DataAvail final : public IPDF_DataAvail {
 | 
|        uint32_t objnum,
 | 
|        CPDF_IndirectObjectHolder* pObjList = nullptr);
 | 
|    CPDF_Object* GetObject(uint32_t objnum,
 | 
| -                         IPDF_DataAvail::DownloadHints* pHints,
 | 
| +                         DownloadHints* pHints,
 | 
|                           FX_BOOL* pExistInFile);
 | 
|    FX_BOOL GetPageKids(CPDF_Parser* pParser, CPDF_Object* pPages);
 | 
|    FX_BOOL PreparePageItem();
 | 
| -  FX_BOOL LoadPages(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL LoadAllXref(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL LoadAllFile(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  DocAvailStatus CheckLinearizedData(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckPageAnnots(int iPage, IPDF_DataAvail::DownloadHints* pHints);
 | 
| -
 | 
| -  DocAvailStatus CheckLinearizedFirstPage(
 | 
| -      int iPage,
 | 
| -      IPDF_DataAvail::DownloadHints* pHints);
 | 
| +  FX_BOOL LoadPages(DownloadHints* pHints);
 | 
| +  FX_BOOL LoadAllXref(DownloadHints* pHints);
 | 
| +  FX_BOOL LoadAllFile(DownloadHints* pHints);
 | 
| +  DocAvailStatus CheckLinearizedData(DownloadHints* pHints);
 | 
| +  FX_BOOL CheckPageAnnots(int iPage, DownloadHints* pHints);
 | 
| +
 | 
| +  DocAvailStatus CheckLinearizedFirstPage(int iPage, DownloadHints* pHints);
 | 
|    FX_BOOL HaveResourceAncestor(CPDF_Dictionary* pDict);
 | 
| -  FX_BOOL CheckPage(int32_t iPage, IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL LoadDocPages(IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL LoadDocPage(int32_t iPage, IPDF_DataAvail::DownloadHints* pHints);
 | 
| +  FX_BOOL CheckPage(int32_t iPage, DownloadHints* pHints);
 | 
| +  FX_BOOL LoadDocPages(DownloadHints* pHints);
 | 
| +  FX_BOOL LoadDocPage(int32_t iPage, DownloadHints* pHints);
 | 
|    FX_BOOL CheckPageNode(PageNode& pageNodes,
 | 
|                          int32_t iPage,
 | 
|                          int32_t& iCount,
 | 
| -                        IPDF_DataAvail::DownloadHints* pHints,
 | 
| +                        DownloadHints* pHints,
 | 
|                          int level);
 | 
|    FX_BOOL CheckUnkownPageNode(uint32_t dwPageNo,
 | 
|                                PageNode* pPageNode,
 | 
| -                              IPDF_DataAvail::DownloadHints* pHints);
 | 
| +                              DownloadHints* pHints);
 | 
|    FX_BOOL CheckArrayPageNode(uint32_t dwPageNo,
 | 
|                               PageNode* pPageNode,
 | 
| -                             IPDF_DataAvail::DownloadHints* pHints);
 | 
| -  FX_BOOL CheckPageCount(IPDF_DataAvail::DownloadHints* pHints);
 | 
| +                             DownloadHints* pHints);
 | 
| +  FX_BOOL CheckPageCount(DownloadHints* pHints);
 | 
|    bool IsFirstCheck(int iPage);
 | 
|    void ResetFirstCheck(int iPage);
 | 
| -  FX_BOOL IsDataAvail(FX_FILESIZE offset,
 | 
| -                      uint32_t size,
 | 
| -                      IPDF_DataAvail::DownloadHints* pHints);
 | 
| +  FX_BOOL IsDataAvail(FX_FILESIZE offset, uint32_t size, DownloadHints* pHints);
 | 
|  
 | 
| +  FileAvail* const m_pFileAvail;
 | 
| +  IFX_FileRead* const m_pFileRead;
 | 
|    CPDF_Parser m_parser;
 | 
|    CPDF_SyntaxParser m_syntaxParser;
 | 
|    CPDF_Object* m_pRoot;
 | 
| @@ -214,4 +249,4 @@ class CPDF_DataAvail final : public IPDF_DataAvail {
 | 
|    FX_BOOL m_bSupportHintTable;
 | 
|  };
 | 
|  
 | 
| -#endif  // CORE_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_
 | 
| +#endif  // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_CPDF_DATA_AVAIL_H_
 | 
| 
 |