Split off CPDF_Document into its own .cpp/.h files.

R=dsinclair@chromium.org

Review URL: https://codereview.chromium.org/1780503002 .
diff --git a/BUILD.gn b/BUILD.gn
index 007f2ae..06f33a7 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -237,6 +237,7 @@
 
 static_library("fpdfapi") {
   sources = [
+    "core/include/fpdfapi/cpdf_document.h",
     "core/include/fpdfapi/fpdf_module.h",
     "core/include/fpdfapi/fpdf_objects.h",
     "core/include/fpdfapi/fpdf_page.h",
@@ -331,10 +332,10 @@
     "core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp",
     "core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp",
     "core/src/fpdfapi/fpdf_page/pageint.h",
+    "core/src/fpdfapi/fpdf_parser/cpdf_document.cpp",
     "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp",
     "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h",
     "core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp",
-    "core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp",
     "core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp",
     "core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp",
     "core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp",
diff --git a/core/include/fpdfapi/cpdf_document.h b/core/include/fpdfapi/cpdf_document.h
new file mode 100644
index 0000000..bba89c8
--- /dev/null
+++ b/core/include/fpdfapi/cpdf_document.h
@@ -0,0 +1,124 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_INCLUDE_FPDFAPI_CPDF_DOCUMENT_H_
+#define CORE_INCLUDE_FPDFAPI_CPDF_DOCUMENT_H_
+
+#include "core/include/fpdfapi/fpdf_objects.h"
+#include "core/include/fxcrt/fx_basic.h"
+
+class CFX_Font;
+class CPDF_ColorSpace;
+class CPDF_DocPageData;
+class CPDF_DocRenderData;
+class CPDF_Font;
+class CPDF_FontEncoding;
+class CPDF_IccProfile;
+class CPDF_Image;
+class CPDF_Pattern;
+
+class CPDF_Document : public CFX_PrivateData, public CPDF_IndirectObjectHolder {
+ public:
+  CPDF_Document();
+  explicit CPDF_Document(CPDF_Parser* pParser);
+  ~CPDF_Document();
+
+  CPDF_Parser* GetParser() const { return m_pParser; }
+  CPDF_Dictionary* GetRoot() const { return m_pRootDict; }
+  CPDF_Dictionary* GetInfo() const { return m_pInfoDict; }
+
+  void GetID(CFX_ByteString& id1, CFX_ByteString& id2) const {
+    id1 = m_ID1;
+    id2 = m_ID2;
+  }
+
+  int GetPageCount() const;
+  CPDF_Dictionary* GetPage(int iPage);
+  int GetPageIndex(FX_DWORD objnum);
+  FX_DWORD GetUserPermissions(FX_BOOL bCheckRevision = FALSE) const;
+  CPDF_DocPageData* GetPageData() { return GetValidatePageData(); }
+  void ClearPageData();
+  void RemoveColorSpaceFromPageData(CPDF_Object* pObject);
+
+  CPDF_DocRenderData* GetRenderData() { return GetValidateRenderData(); }
+  void ClearRenderData();
+  void ClearRenderFont();
+
+  FX_BOOL IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) const;
+
+  // |pFontDict| must not be null.
+  CPDF_Font* LoadFont(CPDF_Dictionary* pFontDict);
+  CPDF_ColorSpace* LoadColorSpace(CPDF_Object* pCSObj,
+                                  CPDF_Dictionary* pResources = NULL);
+
+  CPDF_Pattern* LoadPattern(CPDF_Object* pObj,
+                            FX_BOOL bShading,
+                            const CFX_Matrix* matrix = NULL);
+
+  CPDF_Image* LoadImageF(CPDF_Object* pObj);
+  CPDF_StreamAcc* LoadFontFile(CPDF_Stream* pStream);
+  CPDF_IccProfile* LoadIccProfile(CPDF_Stream* pStream);
+
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+
+  CPDF_Font* AddWindowsFont(LOGFONTA* pLogFont,
+                            FX_BOOL bVert,
+                            FX_BOOL bTranslateName = FALSE);
+  CPDF_Font* AddWindowsFont(LOGFONTW* pLogFont,
+                            FX_BOOL bVert,
+                            FX_BOOL bTranslateName = FALSE);
+#endif
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+  CPDF_Font* AddMacFont(CTFontRef pFont,
+                        FX_BOOL bVert,
+                        FX_BOOL bTranslateName = FALSE);
+#endif
+
+  CPDF_Font* AddStandardFont(const FX_CHAR* font, CPDF_FontEncoding* pEncoding);
+  CPDF_Font* AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert);
+  void CreateNewDoc();
+
+  CPDF_Dictionary* CreateNewPage(int iPage);
+  void DeletePage(int iPage);
+
+  void LoadDoc();
+  void LoadAsynDoc(CPDF_Dictionary* pLinearized);
+  void LoadPages();
+
+ protected:
+  // Retrieve page count information by getting count value from the tree nodes
+  // or walking through the tree nodes to calculate it.
+  int RetrievePageCount() const;
+  CPDF_Dictionary* _FindPDFPage(CPDF_Dictionary* pPages,
+                                int iPage,
+                                int nPagesToGo,
+                                int level);
+  int _FindPageIndex(CPDF_Dictionary* pNode,
+                     FX_DWORD& skip_count,
+                     FX_DWORD objnum,
+                     int& index,
+                     int level = 0);
+  FX_BOOL CheckOCGVisible(CPDF_Dictionary* pOCG, FX_BOOL bPrinting);
+  CPDF_DocPageData* GetValidatePageData();
+  CPDF_DocRenderData* GetValidateRenderData();
+  friend class CPDF_Creator;
+  friend class CPDF_Parser;
+  friend class CPDF_DataAvail;
+  friend class CPDF_OCContext;
+
+  CPDF_Dictionary* m_pRootDict;
+  CPDF_Dictionary* m_pInfoDict;
+  CFX_ByteString m_ID1;
+  CFX_ByteString m_ID2;
+  FX_BOOL m_bLinearized;
+  FX_DWORD m_dwFirstPageNo;
+  FX_DWORD m_dwFirstPageObjNum;
+  CFX_DWordArray m_PageList;
+  CPDF_DocPageData* m_pDocPage;
+  CPDF_DocRenderData* m_pDocRender;
+};
+
+#endif  // CORE_INCLUDE_FPDFAPI_CPDF_DOCUMENT_H_
diff --git a/core/include/fpdfapi/fpdf_parser.h b/core/include/fpdfapi/fpdf_parser.h
index 1b09aa0..ec7a98c 100644
--- a/core/include/fpdfapi/fpdf_parser.h
+++ b/core/include/fpdfapi/fpdf_parser.h
@@ -18,6 +18,7 @@
 class CFX_Matrix;
 class CPDF_ColorSpace;
 class CPDF_CryptoHandler;
+class CPDF_Document;
 class CPDF_DocPageData;
 class CPDF_DocRenderData;
 class CPDF_Font;
@@ -83,132 +84,6 @@
 // Indexed by 8-bit char code, contains unicode code points.
 extern const FX_WORD PDFDocEncoding[256];
 
-class CPDF_Document : public CFX_PrivateData, public CPDF_IndirectObjectHolder {
- public:
-  CPDF_Document();
-  explicit CPDF_Document(CPDF_Parser* pParser);
-
-  ~CPDF_Document();
-
-  CPDF_Parser* GetParser() const { return m_pParser; }
-
-  CPDF_Dictionary* GetRoot() const { return m_pRootDict; }
-
-  CPDF_Dictionary* GetInfo() const { return m_pInfoDict; }
-
-  void GetID(CFX_ByteString& id1, CFX_ByteString& id2) const {
-    id1 = m_ID1;
-    id2 = m_ID2;
-  }
-
-  int GetPageCount() const;
-
-  CPDF_Dictionary* GetPage(int iPage);
-
-  int GetPageIndex(FX_DWORD objnum);
-
-  FX_DWORD GetUserPermissions(FX_BOOL bCheckRevision = FALSE) const;
-
-  CPDF_DocPageData* GetPageData() { return GetValidatePageData(); }
-
-  void ClearPageData();
-
-  void RemoveColorSpaceFromPageData(CPDF_Object* pObject);
-
-  CPDF_DocRenderData* GetRenderData() { return GetValidateRenderData(); }
-
-  void ClearRenderData();
-
-  void ClearRenderFont();
-
-  FX_BOOL IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) const;
-
-  // |pFontDict| must not be null.
-  CPDF_Font* LoadFont(CPDF_Dictionary* pFontDict);
-
-  CPDF_ColorSpace* LoadColorSpace(CPDF_Object* pCSObj,
-                                  CPDF_Dictionary* pResources = NULL);
-
-  CPDF_Pattern* LoadPattern(CPDF_Object* pObj,
-                            FX_BOOL bShading,
-                            const CFX_Matrix* matrix = NULL);
-
-  CPDF_Image* LoadImageF(CPDF_Object* pObj);
-
-  CPDF_StreamAcc* LoadFontFile(CPDF_Stream* pStream);
-
-  CPDF_IccProfile* LoadIccProfile(CPDF_Stream* pStream);
-
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
-
-  CPDF_Font* AddWindowsFont(LOGFONTA* pLogFont,
-                            FX_BOOL bVert,
-                            FX_BOOL bTranslateName = FALSE);
-  CPDF_Font* AddWindowsFont(LOGFONTW* pLogFont,
-                            FX_BOOL bVert,
-                            FX_BOOL bTranslateName = FALSE);
-#endif
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
-  CPDF_Font* AddMacFont(CTFontRef pFont,
-                        FX_BOOL bVert,
-                        FX_BOOL bTranslateName = FALSE);
-#endif
-
-  CPDF_Font* AddStandardFont(const FX_CHAR* font, CPDF_FontEncoding* pEncoding);
-
-  CPDF_Font* AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert);
-
-  void CreateNewDoc();
-
-  CPDF_Dictionary* CreateNewPage(int iPage);
-
-  void DeletePage(int iPage);
-
-  void LoadDoc();
-  void LoadAsynDoc(CPDF_Dictionary* pLinearized);
-  void LoadPages();
-
- protected:
-  CPDF_Dictionary* m_pRootDict;
-
-  CPDF_Dictionary* m_pInfoDict;
-
-  CFX_ByteString m_ID1;
-
-  CFX_ByteString m_ID2;
-
-  FX_BOOL m_bLinearized;
-
-  FX_DWORD m_dwFirstPageNo;
-
-  FX_DWORD m_dwFirstPageObjNum;
-
-  CFX_DWordArray m_PageList;
-
-  // Retrieve page count information by getting count value from the tree nodes
-  // or walking through the tree nodes to calculate it.
-  int RetrievePageCount() const;
-  CPDF_Dictionary* _FindPDFPage(CPDF_Dictionary* pPages,
-                                int iPage,
-                                int nPagesToGo,
-                                int level);
-  int _FindPageIndex(CPDF_Dictionary* pNode,
-                     FX_DWORD& skip_count,
-                     FX_DWORD objnum,
-                     int& index,
-                     int level = 0);
-  FX_BOOL CheckOCGVisible(CPDF_Dictionary* pOCG, FX_BOOL bPrinting);
-  CPDF_DocPageData* GetValidatePageData();
-  CPDF_DocRenderData* GetValidateRenderData();
-  friend class CPDF_Creator;
-  friend class CPDF_Parser;
-  friend class CPDF_DataAvail;
-  friend class CPDF_OCContext;
-
-  CPDF_DocPageData* m_pDocPage;
-
-  CPDF_DocRenderData* m_pDocRender;
-};
 
 class CPDF_SimpleParser {
  public:
diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp
index 77c58f0..ad19b5d 100644
--- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp
+++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fpdfapi/fpdf_serial.h"
diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
index 878dc2a..ac01bf9 100644
--- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
+++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
@@ -8,6 +8,7 @@
 
 #include <vector>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_parser.h"
 #include "core/include/fpdfapi/fpdf_serial.h"
 #include "core/include/fxcrt/fx_ext.h"
diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
index bc3de20..8b1571a 100644
--- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
+++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
@@ -6,6 +6,7 @@
 
 #include <limits.h>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/src/fpdfapi/fpdf_page/pageint.h"
diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp
index 2b68a04..0d2f836 100644
--- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp
+++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fpdfapi/fpdf_render.h"
diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
index ecdb2d7..d9bc148 100644
--- a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
+++ b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
@@ -6,6 +6,7 @@
 
 #include "core/src/fpdfapi/fpdf_font/font_int.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page.cpp
index 7770762..1868d26 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page.cpp
@@ -8,6 +8,7 @@
 
 #include <algorithm>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "third_party/base/stl_util.h"
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
index 49fb331..a43aff1 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
@@ -10,6 +10,7 @@
 
 #include <algorithm>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fxcodec/fx_codec.h"
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp
index 85b026f..fbf236d 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp
@@ -7,6 +7,7 @@
 #include "core/src/fpdfapi/fpdf_page/pageint.h"
 
 #include "core/include/fdrm/fx_crypt.h"
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/src/fpdfapi/fpdf_font/font_int.h"
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp
index a294d3b..eff2ff4 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp
@@ -8,6 +8,7 @@
 
 #include <algorithm>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp
index c5e29a4..64d3264 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp
@@ -6,6 +6,7 @@
 
 #include "core/src/fpdfapi/fpdf_page/pageint.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
 
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp
index 1df4f3d..7114f76 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp
@@ -6,6 +6,7 @@
 
 #include "core/src/fpdfapi/fpdf_page/pageint.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fpdfapi/fpdf_serial.h"
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
index b49607e..a808c29 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
@@ -8,6 +8,7 @@
 
 #include <limits.h>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fxcodec/fx_codec.h"
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
index d56e65c..0287b4f 100644
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
@@ -6,6 +6,7 @@
 
 #include "core/src/fpdfapi/fpdf_page/pageint.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 
 namespace {
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_document.cpp
similarity index 96%
rename from core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp
rename to core/src/fpdfapi/fpdf_parser/cpdf_document.cpp
index a63b0ed..f837c00 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp
+++ b/core/src/fpdfapi/fpdf_parser/cpdf_document.cpp
@@ -4,11 +4,14 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "core/include/fpdfapi/fpdf_parser.h"
+#include "core/include/fpdfapi/cpdf_document.h"
 
 #include <set>
 
 #include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_parser.h"
+#include "core/include/fxge/fx_font.h"
+#include "core/src/fpdfapi/fpdf_render/render_int.h"
 #include "third_party/base/stl_util.h"
 
 namespace {
@@ -336,3 +339,12 @@
   if (m_pDocRender)
     CPDF_ModuleMgr::Get()->GetRenderModule()->ClearDocData(m_pDocRender);
 }
+
+void CPDF_Document::ClearRenderFont() {
+  if (!m_pDocRender)
+    return;
+
+  CFX_FontCache* pCache = m_pDocRender->GetFontCache();
+  if (pCache)
+    pCache->FreeCache(FALSE);
+}
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
index a00d1bc..2b61cdc 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
@@ -12,6 +12,7 @@
 #include <utility>
 #include <vector>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fxcrt/fx_ext.h"
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp
index 4c7abea..c054f95 100644
--- a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp
@@ -6,6 +6,7 @@
 
 #include "core/src/fpdfapi/fpdf_render/render_int.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_render.h"
 #include "core/include/fxge/fx_ge.h"
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp
index d95885f..9636d1b 100644
--- a/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp
@@ -6,6 +6,7 @@
 
 #include "core/src/fpdfapi/fpdf_render/render_int.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
 #include "core/include/fpdfapi/fpdf_render.h"
 #include "core/include/fxge/fx_ge.h"
@@ -331,11 +332,3 @@
   m_dwCacheSize = FPDF_ImageCache_EstimateImageSize(m_pCachedBitmap) +
                   FPDF_ImageCache_EstimateImageSize(m_pCachedMask);
 }
-void CPDF_Document::ClearRenderFont() {
-  if (m_pDocRender) {
-    CFX_FontCache* pCache = m_pDocRender->GetFontCache();
-    if (pCache) {
-      pCache->FreeCache(FALSE);
-    }
-  }
-}
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp
index b91f258..0f9b88e 100644
--- a/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp
@@ -9,6 +9,7 @@
 #include <utility>
 #include <vector>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
 #include "core/include/fpdfapi/fpdf_render.h"
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp
index 2aa1b0e..709733c 100644
--- a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp
@@ -10,6 +10,7 @@
 #include <memory>
 #include <vector>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
 #include "core/include/fpdfapi/fpdf_render.h"
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp
index aa10809..7051537 100644
--- a/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp
@@ -6,6 +6,7 @@
 
 #include "core/src/fpdfapi/fpdf_render/render_int.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
 #include "core/include/fpdfapi/fpdf_render.h"
 #include "core/include/fxge/fx_ge.h"
diff --git a/core/src/fpdfdoc/doc_action.cpp b/core/src/fpdfdoc/doc_action.cpp
index 94235d2..9a0ba57 100644
--- a/core/src/fpdfdoc/doc_action.cpp
+++ b/core/src/fpdfdoc/doc_action.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 
 CPDF_Dest CPDF_Action::GetDest(CPDF_Document* pDoc) const {
diff --git a/core/src/fpdfdoc/doc_annot.cpp b/core/src/fpdfdoc/doc_annot.cpp
index 09b6e8d..07fca72 100644
--- a/core/src/fpdfdoc/doc_annot.cpp
+++ b/core/src/fpdfdoc/doc_annot.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 
diff --git a/core/src/fpdfdoc/doc_ap.cpp b/core/src/fpdfdoc/doc_ap.cpp
index 7fe06e2..3028169 100644
--- a/core/src/fpdfdoc/doc_ap.cpp
+++ b/core/src/fpdfdoc/doc_ap.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_ap.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 #include "core/include/fpdfdoc/fpdf_vt.h"
diff --git a/core/src/fpdfdoc/doc_basic.cpp b/core/src/fpdfdoc/doc_basic.cpp
index bc88ddc..09d74f5 100644
--- a/core/src/fpdfdoc/doc_basic.cpp
+++ b/core/src/fpdfdoc/doc_basic.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 
 const int nMaxRecursion = 32;
diff --git a/core/src/fpdfdoc/doc_bookmark.cpp b/core/src/fpdfdoc/doc_bookmark.cpp
index d7e2e2f..71c8f03 100644
--- a/core/src/fpdfdoc/doc_bookmark.cpp
+++ b/core/src/fpdfdoc/doc_bookmark.cpp
@@ -7,6 +7,7 @@
 #include <memory>
 #include <vector>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 
 CPDF_Bookmark CPDF_BookmarkTree::GetFirstChild(
diff --git a/core/src/fpdfdoc/doc_form.cpp b/core/src/fpdfdoc/doc_form.cpp
index 7a6db90..8080dc7 100644
--- a/core/src/fpdfdoc/doc_form.cpp
+++ b/core/src/fpdfdoc/doc_form.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 #include "core/src/fpdfdoc/doc_utils.h"
 #include "third_party/base/stl_util.h"
diff --git a/core/src/fpdfdoc/doc_formcontrol.cpp b/core/src/fpdfdoc/doc_formcontrol.cpp
index 4cfd452..665da0a 100644
--- a/core/src/fpdfdoc/doc_formcontrol.cpp
+++ b/core/src/fpdfdoc/doc_formcontrol.cpp
@@ -6,6 +6,7 @@
 
 #include <algorithm>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 
 CPDF_FormControl::CPDF_FormControl(CPDF_FormField* pField,
diff --git a/core/src/fpdfdoc/doc_formfield.cpp b/core/src/fpdfdoc/doc_formfield.cpp
index a7cc484..915af33 100644
--- a/core/src/fpdfdoc/doc_formfield.cpp
+++ b/core/src/fpdfdoc/doc_formfield.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 #include "core/src/fpdfdoc/doc_utils.h"
 
diff --git a/core/src/fpdfdoc/doc_metadata.cpp b/core/src/fpdfdoc/doc_metadata.cpp
index 593cffb..78364c4 100644
--- a/core/src/fpdfdoc/doc_metadata.cpp
+++ b/core/src/fpdfdoc/doc_metadata.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 #include "core/include/fxcrt/fx_xml.h"
 
diff --git a/core/src/fpdfdoc/doc_ocg.cpp b/core/src/fpdfdoc/doc_ocg.cpp
index a18924c..6f6e546 100644
--- a/core/src/fpdfdoc/doc_ocg.cpp
+++ b/core/src/fpdfdoc/doc_ocg.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 
 static int32_t FPDFDOC_OCG_FindGroup(const CPDF_Object* pObject,
diff --git a/core/src/fpdfdoc/doc_tagged.cpp b/core/src/fpdfdoc/doc_tagged.cpp
index a7eea11..d4ce4a4 100644
--- a/core/src/fpdfdoc/doc_tagged.cpp
+++ b/core/src/fpdfdoc/doc_tagged.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fpdfapi/fpdf_parser.h"
 #include "core/include/fpdfdoc/fpdf_tagged.h"
diff --git a/core/src/fpdfdoc/doc_utils.cpp b/core/src/fpdfdoc/doc_utils.cpp
index 67a9324..bc09c9a 100644
--- a/core/src/fpdfdoc/doc_utils.cpp
+++ b/core/src/fpdfdoc/doc_utils.cpp
@@ -6,6 +6,7 @@
 
 #include <algorithm>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 #include "core/src/fpdfdoc/doc_utils.h"
 
diff --git a/core/src/fpdfdoc/doc_viewerPreferences.cpp b/core/src/fpdfdoc/doc_viewerPreferences.cpp
index 6ef0925..582f3a5 100644
--- a/core/src/fpdfdoc/doc_viewerPreferences.cpp
+++ b/core/src/fpdfdoc/doc_viewerPreferences.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 
 CPDF_ViewerPreferences::CPDF_ViewerPreferences(CPDF_Document* pDoc)
diff --git a/fpdfsdk/src/formfiller/FFL_CBA_Fontmap.cpp b/fpdfsdk/src/formfiller/FFL_CBA_Fontmap.cpp
index b28cdf7..fecc2c6 100644
--- a/fpdfsdk/src/formfiller/FFL_CBA_Fontmap.cpp
+++ b/fpdfsdk/src/formfiller/FFL_CBA_Fontmap.cpp
@@ -6,6 +6,7 @@
 
 #include "fpdfsdk/include/formfiller/FFL_CBA_Fontmap.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "fpdfsdk/include/fsdk_baseannot.h"
 
diff --git a/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp b/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
index 2cad12b..75f18e7 100644
--- a/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
+++ b/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp
@@ -6,6 +6,7 @@
 
 #include "fpdfsdk/include/formfiller/FFL_IFormFiller.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/formfiller/FFL_CheckBox.h"
 #include "fpdfsdk/include/formfiller/FFL_ComboBox.h"
 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h"
diff --git a/fpdfsdk/src/fpdf_dataavail.cpp b/fpdfsdk/src/fpdf_dataavail.cpp
index 866e41e..1a6c29a 100644
--- a/fpdfsdk/src/fpdf_dataavail.cpp
+++ b/fpdfsdk/src/fpdf_dataavail.cpp
@@ -6,6 +6,7 @@
 
 #include "public/fpdf_dataavail.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fsdk_define.h"
 #include "public/fpdf_formfill.h"
 
diff --git a/fpdfsdk/src/fpdf_ext.cpp b/fpdfsdk/src/fpdf_ext.cpp
index aa6725b..55ebe09 100644
--- a/fpdfsdk/src/fpdf_ext.cpp
+++ b/fpdfsdk/src/fpdf_ext.cpp
@@ -6,6 +6,7 @@
 
 #include "public/fpdf_ext.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fxcrt/fx_xml.h"
 #include "fpdfsdk/include/fsdk_define.h"
 
diff --git a/fpdfsdk/src/fpdf_flatten.cpp b/fpdfsdk/src/fpdf_flatten.cpp
index 759f758..fd7ef67 100644
--- a/fpdfsdk/src/fpdf_flatten.cpp
+++ b/fpdfsdk/src/fpdf_flatten.cpp
@@ -8,6 +8,7 @@
 
 #include <algorithm>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fsdk_define.h"
 
 typedef CFX_ArrayTemplate<CPDF_Dictionary*> CPDF_ObjectArray;
diff --git a/fpdfsdk/src/fpdf_transformpage.cpp b/fpdfsdk/src/fpdf_transformpage.cpp
index 3d2f651..d37074a 100644
--- a/fpdfsdk/src/fpdf_transformpage.cpp
+++ b/fpdfsdk/src/fpdf_transformpage.cpp
@@ -6,6 +6,7 @@
 
 #include "public/fpdf_transformpage.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fsdk_define.h"
 
 namespace {
diff --git a/fpdfsdk/src/fpdfdoc.cpp b/fpdfsdk/src/fpdfdoc.cpp
index 4b5da2f..2794045 100644
--- a/fpdfsdk/src/fpdfdoc.cpp
+++ b/fpdfsdk/src/fpdfdoc.cpp
@@ -8,6 +8,7 @@
 
 #include <set>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fsdk_define.h"
 #include "third_party/base/stl_util.h"
 
diff --git a/fpdfsdk/src/fpdfdoc_unittest.cpp b/fpdfsdk/src/fpdfdoc_unittest.cpp
index ec4684d..0dd03ce 100644
--- a/fpdfsdk/src/fpdfdoc_unittest.cpp
+++ b/fpdfsdk/src/fpdfdoc_unittest.cpp
@@ -7,6 +7,7 @@
 #include <memory>
 #include <vector>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/fpdfsdk/src/fpdfeditpage.cpp b/fpdfsdk/src/fpdfeditpage.cpp
index 46026b5..2661ace 100644
--- a/fpdfsdk/src/fpdfeditpage.cpp
+++ b/fpdfsdk/src/fpdfeditpage.cpp
@@ -6,6 +6,7 @@
 
 #include "public/fpdf_edit.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fsdk_define.h"
 #include "public/fpdf_formfill.h"
 #include "third_party/base/stl_util.h"
diff --git a/fpdfsdk/src/fpdfformfill.cpp b/fpdfsdk/src/fpdfformfill.cpp
index 874082e..31f5732 100644
--- a/fpdfsdk/src/fpdfformfill.cpp
+++ b/fpdfsdk/src/fpdfformfill.cpp
@@ -9,6 +9,7 @@
 #include <memory>
 #include <vector>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fsdk_define.h"
 #include "fpdfsdk/include/fsdk_mgr.h"
 #include "public/fpdfview.h"
diff --git a/fpdfsdk/src/fpdfppo.cpp b/fpdfsdk/src/fpdfppo.cpp
index 84ac41d..3b3d340 100644
--- a/fpdfsdk/src/fpdfppo.cpp
+++ b/fpdfsdk/src/fpdfppo.cpp
@@ -8,6 +8,7 @@
 
 #include <memory>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fsdk_define.h"
 #include "third_party/base/stl_util.h"
 
diff --git a/fpdfsdk/src/fpdfsave.cpp b/fpdfsdk/src/fpdfsave.cpp
index ca0fa53..f93b52d 100644
--- a/fpdfsdk/src/fpdfsave.cpp
+++ b/fpdfsdk/src/fpdfsave.cpp
@@ -6,6 +6,7 @@
 
 #include "public/fpdf_save.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_parser.h"
 #include "core/include/fpdfapi/fpdf_serial.h"
 #include "fpdfsdk/include/fsdk_define.h"
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp
index 05c69ac..a35952c 100644
--- a/fpdfsdk/src/fpdfview.cpp
+++ b/fpdfsdk/src/fpdfview.cpp
@@ -8,6 +8,7 @@
 
 #include <memory>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fxcodec/fx_codec.h"
 #include "core/include/fxcrt/fx_safe_types.h"
 #include "fpdfsdk/include/fsdk_define.h"
diff --git a/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp b/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp
index aaeb4d6..e896441 100644
--- a/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp
+++ b/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_app.h"
 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h"
 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h"
diff --git a/fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp b/fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp
index 1f6aa12..0210ac1 100644
--- a/fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp
+++ b/fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp
@@ -4,6 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h"
 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h"
 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_util.h"
diff --git a/fpdfsdk/src/fsdk_annothandler.cpp b/fpdfsdk/src/fsdk_annothandler.cpp
index 5c77b39..ee0a4d8 100644
--- a/fpdfsdk/src/fsdk_annothandler.cpp
+++ b/fpdfsdk/src/fsdk_annothandler.cpp
@@ -6,6 +6,7 @@
 
 #include <algorithm>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h"
 #include "fpdfsdk/include/fsdk_annothandler.h"
 #include "fpdfsdk/include/fsdk_define.h"
diff --git a/fpdfsdk/src/fsdk_baseannot.cpp b/fpdfsdk/src/fsdk_baseannot.cpp
index bd73ee3..0c7cfac 100644
--- a/fpdfsdk/src/fsdk_baseannot.cpp
+++ b/fpdfsdk/src/fsdk_baseannot.cpp
@@ -6,6 +6,7 @@
 
 #include <algorithm>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fxcrt/fx_ext.h"
 #include "fpdfsdk/include/fsdk_baseannot.h"
 #include "fpdfsdk/include/fsdk_define.h"
diff --git a/fpdfsdk/src/fsdk_baseform.cpp b/fpdfsdk/src/fsdk_baseform.cpp
index 8d8b95f..e18959f 100644
--- a/fpdfsdk/src/fsdk_baseform.cpp
+++ b/fpdfsdk/src/fsdk_baseform.cpp
@@ -9,6 +9,7 @@
 #include <algorithm>
 #include <memory>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h"
 #include "fpdfsdk/include/fsdk_actionhandler.h"
 #include "fpdfsdk/include/fsdk_baseannot.h"
diff --git a/fpdfsdk/src/fsdk_mgr.cpp b/fpdfsdk/src/fsdk_mgr.cpp
index 933f451..1177ddf 100644
--- a/fpdfsdk/src/fsdk_mgr.cpp
+++ b/fpdfsdk/src/fsdk_mgr.cpp
@@ -4,11 +4,12 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "fpdfsdk/include/fsdk_mgr.h"
+
 #include <algorithm>
 #include <memory>
 
-#include "fpdfsdk/include/fsdk_mgr.h"
-
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h"
 #include "fpdfsdk/include/fsdk_define.h"
 #include "fpdfsdk/include/javascript/IJavaScript.h"
diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
index 4d77442..f688982 100644
--- a/fpdfsdk/src/javascript/Document.cpp
+++ b/fpdfsdk/src/javascript/Document.cpp
@@ -6,6 +6,7 @@
 
 #include "fpdfsdk/src/javascript/Document.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "fpdfsdk/include/fsdk_mgr.h"  // For CPDFDoc_Environment.
 #include "fpdfsdk/include/javascript/IJavaScript.h"
 #include "fpdfsdk/src/javascript/Field.h"
diff --git a/fpdfsdk/src/pdfwindow/PWL_FontMap.cpp b/fpdfsdk/src/pdfwindow/PWL_FontMap.cpp
index 89a75b2..0a70357 100644
--- a/fpdfsdk/src/pdfwindow/PWL_FontMap.cpp
+++ b/fpdfsdk/src/pdfwindow/PWL_FontMap.cpp
@@ -6,6 +6,7 @@
 
 #include "fpdfsdk/include/pdfwindow/PWL_FontMap.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "fpdfsdk/include/pdfwindow/PWL_Wnd.h"
 
diff --git a/pdfium.gyp b/pdfium.gyp
index f2161ae..63fa2fa 100644
--- a/pdfium.gyp
+++ b/pdfium.gyp
@@ -251,6 +251,7 @@
       'target_name': 'fpdfapi',
       'type': 'static_library',
       'sources': [
+        'core/include/fpdfapi/cpdf_document.h',
         'core/include/fpdfapi/fpdf_module.h',
         'core/include/fpdfapi/fpdf_objects.h',
         'core/include/fpdfapi/fpdf_page.h',
@@ -345,10 +346,10 @@
         'core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp',
         'core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp',
         'core/src/fpdfapi/fpdf_page/pageint.h',
+        'core/src/fpdfapi/fpdf_parser/cpdf_document.cpp',
         'core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp',
         'core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h',
         'core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp',
-        'core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp',
         'core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp',
         'core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp',
         'core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp',
diff --git a/xfa/src/fxfa/app/xfa_ffdoc.cpp b/xfa/src/fxfa/app/xfa_ffdoc.cpp
index f088a79..1c277aa 100644
--- a/xfa/src/fxfa/app/xfa_ffdoc.cpp
+++ b/xfa/src/fxfa/app/xfa_ffdoc.cpp
@@ -6,6 +6,7 @@
 
 #include "xfa/src/fxfa/app/xfa_ffdoc.h"
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
 #include "core/include/fxcrt/fx_ext.h"
 #include "xfa/include/fwl/core/fwl_note.h"
diff --git a/xfa/src/fxfa/app/xfa_fontmgr.cpp b/xfa/src/fxfa/app/xfa_fontmgr.cpp
index cc5de78..1b9fb5f 100644
--- a/xfa/src/fxfa/app/xfa_fontmgr.cpp
+++ b/xfa/src/fxfa/app/xfa_fontmgr.cpp
@@ -8,6 +8,7 @@
 
 #include <algorithm>
 
+#include "core/include/fpdfapi/cpdf_document.h"
 #include "core/include/fpdfapi/fpdf_resource.h"
 #include "xfa/src/fxfa/app/xfa_ffapp.h"
 #include "xfa/src/fxfa/app/xfa_ffdoc.h"