Move fx_crypto.h and fpdf_text.h out of core/include.

This CL moves the two files and breaks fpdf_text.h apart into individual pieces.

R=tsepez@chromium.org

Review URL: https://codereview.chromium.org/1801973002 .
diff --git a/BUILD.gn b/BUILD.gn
index 2f51c21..d0de412 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -201,7 +201,7 @@
     "core/fdrm/crypto/fx_crypt.cpp",
     "core/fdrm/crypto/fx_crypt_aes.cpp",
     "core/fdrm/crypto/fx_crypt_sha.cpp",
-    "core/include/fdrm/fx_crypt.h",
+    "core/fdrm/crypto/include/fx_crypt.h",
   ]
   configs += [ ":pdfium_config" ]
 }
@@ -390,11 +390,13 @@
 static_library("fpdftext") {
   sources = [
     "core/fpdftext/fpdf_text_int.cpp",
+    "core/fpdftext/include/ipdf_linkextract.h",
+    "core/fpdftext/include/ipdf_textpage.h",
+    "core/fpdftext/include/ipdf_textpagefind.h",
     "core/fpdftext/text_int.h",
     "core/fpdftext/unicodenormalization.cpp",
     "core/fpdftext/unicodenormalizationdata.cpp",
     "core/fpdftext/unicodenormalizationdata.h",
-    "core/include/fpdftext/fpdf_text.h",
   ]
   configs += [ ":pdfium_config" ]
 }
diff --git a/core/fdrm/crypto/fx_crypt.cpp b/core/fdrm/crypto/fx_crypt.cpp
index c1016cd..d5cbdb5 100644
--- a/core/fdrm/crypto/fx_crypt.cpp
+++ b/core/fdrm/crypto/fx_crypt.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/core/fdrm/crypto/fx_crypt_aes.cpp b/core/fdrm/crypto/fx_crypt_aes.cpp
index d27783f..b56d8fe 100644
--- a/core/fdrm/crypto/fx_crypt_aes.cpp
+++ b/core/fdrm/crypto/fx_crypt_aes.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/core/fdrm/crypto/fx_crypt_sha.cpp b/core/fdrm/crypto/fx_crypt_sha.cpp
index c7d1710..5f15589 100644
--- a/core/fdrm/crypto/fx_crypt_sha.cpp
+++ b/core/fdrm/crypto/fx_crypt_sha.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/core/include/fdrm/fx_crypt.h b/core/fdrm/crypto/include/fx_crypt.h
similarity index 95%
rename from core/include/fdrm/fx_crypt.h
rename to core/fdrm/crypto/include/fx_crypt.h
index 259dc85..fdba0e7 100644
--- a/core/include/fdrm/fx_crypt.h
+++ b/core/fdrm/crypto/include/fx_crypt.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef CORE_INCLUDE_FDRM_FX_CRYPT_H_
-#define CORE_INCLUDE_FDRM_FX_CRYPT_H_
+#ifndef CORE_FDRM_CRYPTO_INCLUDE_FX_CRYPT_H_
+#define CORE_FDRM_CRYPTO_INCLUDE_FX_CRYPT_H_
 
 #include "core/include/fxcrt/fx_system.h"
 
@@ -68,4 +68,4 @@
 };
 #endif
 
-#endif  // CORE_INCLUDE_FDRM_FX_CRYPT_H_
+#endif  // CORE_FDRM_CRYPTO_INCLUDE_FX_CRYPT_H_
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp
index 1a31364..76ecdcc 100644
--- a/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp
+++ b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp
@@ -6,8 +6,8 @@
 
 #include "core/fpdfapi/fpdf_page/pageint.h"
 
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "core/fpdfapi/fpdf_font/font_int.h"
-#include "core/include/fdrm/fx_crypt.h"
 #include "core/include/fpdfapi/cpdf_array.h"
 #include "core/include/fpdfapi/cpdf_dictionary.h"
 #include "core/include/fpdfapi/cpdf_document.h"
diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp
index b732389..0be414a 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp
@@ -8,7 +8,7 @@
 
 #include <time.h>
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "core/include/fpdfapi/cpdf_parser.h"
 #include "core/include/fpdfapi/cpdf_simple_parser.h"
 #include "core/include/fpdfapi/ipdf_security_handler.h"
diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp
index e5eb4c8..6da4cb1 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp
@@ -8,8 +8,8 @@
 
 #include <time.h>
 
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h"
-#include "core/include/fdrm/fx_crypt.h"
 #include "core/include/fpdfapi/cpdf_array.h"
 #include "core/include/fpdfapi/cpdf_dictionary.h"
 #include "core/include/fpdfapi/cpdf_object.h"
diff --git a/core/fpdftext/fpdf_text_int.cpp b/core/fpdftext/fpdf_text_int.cpp
index d16ccb8..1bd544c 100644
--- a/core/fpdftext/fpdf_text_int.cpp
+++ b/core/fpdftext/fpdf_text_int.cpp
@@ -13,18 +13,28 @@
 #include <utility>
 #include <vector>
 
+#include "core/fpdftext/include/ipdf_linkextract.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
+#include "core/fpdftext/include/ipdf_textpagefind.h"
 #include "core/include/fpdfapi/cpdf_dictionary.h"
 #include "core/include/fpdfapi/cpdf_string.h"
 #include "core/include/fpdfapi/fpdf_module.h"
 #include "core/include/fpdfapi/fpdf_page.h"
 #include "core/include/fpdfapi/fpdf_pageobj.h"
 #include "core/include/fpdfapi/fpdf_resource.h"
-#include "core/include/fpdftext/fpdf_text.h"
 #include "core/include/fxcrt/fx_bidi.h"
 #include "core/include/fxcrt/fx_ext.h"
 #include "core/include/fxcrt/fx_ucd.h"
 #include "third_party/base/stl_util.h"
 
+#define FPDFTEXT_RLTB 1
+#define FPDFTEXT_LEFT -1
+#define FPDFTEXT_RIGHT 1
+
+#define FPDFTEXT_MATCHCASE 0x00000001
+#define FPDFTEXT_MATCHWHOLEWORD 0x00000002
+#define FPDFTEXT_CONSECUTIVE 0x00000004
+
 namespace {
 
 FX_BOOL _IsIgnoreSpaceCharacter(FX_WCHAR curChar) {
@@ -1899,7 +1909,8 @@
     FPDF_CHAR_INFO info;
     pTextPage->GetCharInfo(i, &info);
     int indexSize = pdfium::CollectionSize<int>(m_CharIndex);
-    if (info.m_Flag == CHAR_NORMAL || info.m_Flag == CHAR_GENERATED) {
+    if (info.m_Flag == FPDFTEXT_CHAR_NORMAL ||
+        info.m_Flag == FPDFTEXT_CHAR_GENERATED) {
       if (indexSize % 2) {
         m_CharIndex.push_back(1);
       } else {
@@ -2325,8 +2336,8 @@
   while (pos < TotalChar) {
     FPDF_CHAR_INFO pageChar;
     m_pTextPage->GetCharInfo(pos, &pageChar);
-    if (pageChar.m_Flag == CHAR_GENERATED || pageChar.m_Unicode == 0x20 ||
-        pos == TotalChar - 1) {
+    if (pageChar.m_Flag == FPDFTEXT_CHAR_GENERATED ||
+        pageChar.m_Unicode == 0x20 || pos == TotalChar - 1) {
       int nCount = pos - start;
       if (pos == TotalChar - 1) {
         nCount++;
diff --git a/core/fpdftext/include/ipdf_linkextract.h b/core/fpdftext/include/ipdf_linkextract.h
new file mode 100644
index 0000000..2d7fe02
--- /dev/null
+++ b/core/fpdftext/include/ipdf_linkextract.h
@@ -0,0 +1,26 @@
+// 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_FPDFTEXT_INCLUDE_IPDF_LINKEXTRACT_H_
+#define CORE_FPDFTEXT_INCLUDE_IPDF_LINKEXTRACT_H_
+
+#include "core/include/fxcrt/fx_coordinates.h"
+#include "core/include/fxcrt/fx_system.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
+
+class IPDF_LinkExtract {
+ public:
+  static IPDF_LinkExtract* CreateLinkExtract();
+  virtual ~IPDF_LinkExtract() {}
+
+  virtual FX_BOOL ExtractLinks(const IPDF_TextPage* pTextPage) = 0;
+  virtual int CountLinks() const = 0;
+  virtual CFX_WideString GetURL(int index) const = 0;
+  virtual void GetBoundedSegment(int index, int& start, int& count) const = 0;
+  virtual void GetRects(int index, CFX_RectArray& rects) const = 0;
+};
+
+#endif  // CORE_FPDFTEXT_INCLUDE_IPDF_LINKEXTRACT_H_
diff --git a/core/fpdftext/include/ipdf_textpage.h b/core/fpdftext/include/ipdf_textpage.h
new file mode 100644
index 0000000..1698e9a
--- /dev/null
+++ b/core/fpdftext/include/ipdf_textpage.h
@@ -0,0 +1,69 @@
+// 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_FPDFTEXT_INCLUDE_IPDF_TEXTPAGE_H_
+#define CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGE_H_
+
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fxcrt/fx_coordinates.h"
+#include "core/include/fxcrt/fx_system.h"
+
+struct FPDF_CHAR_INFO {
+  FX_WCHAR m_Unicode;
+  FX_WCHAR m_Charcode;
+  int32_t m_Flag;
+  FX_FLOAT m_FontSize;
+  FX_FLOAT m_OriginX;
+  FX_FLOAT m_OriginY;
+  CFX_FloatRect m_CharBox;
+  CPDF_TextObject* m_pTextObj;
+  CFX_Matrix m_Matrix;
+};
+
+class IPDF_TextPage {
+ public:
+  static IPDF_TextPage* CreateTextPage(const CPDF_Page* pPage, int flags = 0);
+  virtual ~IPDF_TextPage() {}
+
+  virtual void ParseTextPage() = 0;
+  virtual bool IsParsed() const = 0;
+  virtual int CharIndexFromTextIndex(int TextIndex) const = 0;
+  virtual int TextIndexFromCharIndex(int CharIndex) const = 0;
+  virtual int CountChars() const = 0;
+  virtual void GetCharInfo(int index, FPDF_CHAR_INFO* info) const = 0;
+  virtual void GetRectArray(int start,
+                            int nCount,
+                            CFX_RectArray& rectArray) const = 0;
+  virtual int GetIndexAtPos(CFX_FloatPoint point,
+                            FX_FLOAT xTolerance,
+                            FX_FLOAT yTolerance) const = 0;
+  virtual int GetIndexAtPos(FX_FLOAT x,
+                            FX_FLOAT y,
+                            FX_FLOAT xTolerance,
+                            FX_FLOAT yTolerance) const = 0;
+  virtual CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const = 0;
+  virtual void GetRectsArrayByRect(const CFX_FloatRect& rect,
+                                   CFX_RectArray& resRectArray) const = 0;
+  virtual int CountRects(int start, int nCount) = 0;
+  virtual void GetRect(int rectIndex,
+                       FX_FLOAT& left,
+                       FX_FLOAT& top,
+                       FX_FLOAT& right,
+                       FX_FLOAT& bottom) const = 0;
+  virtual FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate) = 0;
+  virtual FX_BOOL GetBaselineRotate(const CFX_FloatRect& rect, int& Rotate) = 0;
+  virtual int CountBoundedSegments(FX_FLOAT left,
+                                   FX_FLOAT top,
+                                   FX_FLOAT right,
+                                   FX_FLOAT bottom,
+                                   FX_BOOL bContains = FALSE) = 0;
+  virtual void GetBoundedSegment(int index, int& start, int& count) const = 0;
+  virtual int GetWordBreak(int index, int direction) const = 0;
+  virtual CFX_WideString GetPageText(int start = 0, int nCount = -1) const = 0;
+};
+
+#endif  // CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGE_H_
diff --git a/core/fpdftext/include/ipdf_textpagefind.h b/core/fpdftext/include/ipdf_textpagefind.h
new file mode 100644
index 0000000..88774b6
--- /dev/null
+++ b/core/fpdftext/include/ipdf_textpagefind.h
@@ -0,0 +1,29 @@
+// 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_FPDFTEXT_INCLUDE_IPDF_TEXTPAGEFIND_H_
+#define CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGEFIND_H_
+
+#include "core/fpdftext/include/ipdf_textpage.h"
+#include "core/include/fxcrt/fx_coordinates.h"
+#include "core/include/fxcrt/fx_string.h"
+
+class IPDF_TextPageFind {
+ public:
+  static IPDF_TextPageFind* CreatePageFind(const IPDF_TextPage* pTextPage);
+  virtual ~IPDF_TextPageFind() {}
+
+  virtual FX_BOOL FindFirst(const CFX_WideString& findwhat,
+                            int flags,
+                            int startPos = 0) = 0;
+  virtual FX_BOOL FindNext() = 0;
+  virtual FX_BOOL FindPrev() = 0;
+  virtual void GetRectArray(CFX_RectArray& rects) const = 0;
+  virtual int GetCurOrder() const = 0;
+  virtual int GetMatchedCount() const = 0;
+};
+
+#endif  // CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGEFIND_H_
diff --git a/core/fpdftext/text_int.h b/core/fpdftext/text_int.h
index bc110c7..42e254e 100644
--- a/core/fpdftext/text_int.h
+++ b/core/fpdftext/text_int.h
@@ -10,8 +10,10 @@
 #include <deque>
 #include <vector>
 
+#include "core/fpdftext/include/ipdf_linkextract.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
+#include "core/fpdftext/include/ipdf_textpagefind.h"
 #include "core/include/fpdfapi/fpdf_page.h"
-#include "core/include/fpdftext/fpdf_text.h"
 #include "core/include/fxcrt/fx_basic.h"
 
 class CFX_BidiChar;
diff --git a/core/include/fpdftext/fpdf_text.h b/core/include/fpdftext/fpdf_text.h
deleted file mode 100644
index a3457fc..0000000
--- a/core/include/fpdftext/fpdf_text.h
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2014 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_FPDFTEXT_FPDF_TEXT_H_
-#define CORE_INCLUDE_FPDFTEXT_FPDF_TEXT_H_
-
-#include "core/include/fxcrt/fx_coordinates.h"
-#include "core/include/fxcrt/fx_system.h"
-
-class CPDF_Page;
-class CPDF_TextObject;
-class IPDF_LinkExtract;
-class IPDF_ReflowedPage;
-class IPDF_TextPage;
-class IPDF_TextPageFind;
-
-#define CHAR_ERROR -1
-#define CHAR_NORMAL 0
-#define CHAR_GENERATED 1
-#define CHAR_UNUNICODE 2
-
-struct FPDF_CHAR_INFO {
-  FX_WCHAR m_Unicode;
-  FX_WCHAR m_Charcode;
-  int32_t m_Flag;
-  FX_FLOAT m_FontSize;
-  FX_FLOAT m_OriginX;
-  FX_FLOAT m_OriginY;
-  CFX_FloatRect m_CharBox;
-  CPDF_TextObject* m_pTextObj;
-  CFX_Matrix m_Matrix;
-};
-
-using CFX_RectArray = CFX_ArrayTemplate<CFX_FloatRect>;
-
-#define FPDFTEXT_LRTB 0
-#define FPDFTEXT_RLTB 1
-#define FPDFTEXT_TBRL 2
-#define FPDFTEXT_LEFT -1
-#define FPDFTEXT_RIGHT 1
-#define FPDFTEXT_UP -2
-#define FPDFTEXT_DOWN 2
-
-class IPDF_TextPage {
- public:
-  static IPDF_TextPage* CreateTextPage(const CPDF_Page* pPage, int flags = 0);
-  static IPDF_TextPage* CreateReflowTextPage(IPDF_ReflowedPage* pRefPage);
-  virtual ~IPDF_TextPage() {}
-
-  virtual void ParseTextPage() = 0;
-  virtual bool IsParsed() const = 0;
-  virtual int CharIndexFromTextIndex(int TextIndex) const = 0;
-  virtual int TextIndexFromCharIndex(int CharIndex) const = 0;
-  virtual int CountChars() const = 0;
-  virtual void GetCharInfo(int index, FPDF_CHAR_INFO* info) const = 0;
-  virtual void GetRectArray(int start,
-                            int nCount,
-                            CFX_RectArray& rectArray) const = 0;
-  virtual int GetIndexAtPos(CFX_FloatPoint point,
-                            FX_FLOAT xTolerance,
-                            FX_FLOAT yTolerance) const = 0;
-  virtual int GetIndexAtPos(FX_FLOAT x,
-                            FX_FLOAT y,
-                            FX_FLOAT xTolerance,
-                            FX_FLOAT yTolerance) const = 0;
-  virtual CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const = 0;
-  virtual void GetRectsArrayByRect(const CFX_FloatRect& rect,
-                                   CFX_RectArray& resRectArray) const = 0;
-  virtual int CountRects(int start, int nCount) = 0;
-  virtual void GetRect(int rectIndex,
-                       FX_FLOAT& left,
-                       FX_FLOAT& top,
-                       FX_FLOAT& right,
-                       FX_FLOAT& bottom) const = 0;
-  virtual FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate) = 0;
-  virtual FX_BOOL GetBaselineRotate(const CFX_FloatRect& rect, int& Rotate) = 0;
-  virtual int CountBoundedSegments(FX_FLOAT left,
-                                   FX_FLOAT top,
-                                   FX_FLOAT right,
-                                   FX_FLOAT bottom,
-                                   FX_BOOL bContains = FALSE) = 0;
-  virtual void GetBoundedSegment(int index, int& start, int& count) const = 0;
-  virtual int GetWordBreak(int index, int direction) const = 0;
-  virtual CFX_WideString GetPageText(int start = 0, int nCount = -1) const = 0;
-};
-
-#define FPDFTEXT_MATCHCASE 0x00000001
-#define FPDFTEXT_MATCHWHOLEWORD 0x00000002
-#define FPDFTEXT_CONSECUTIVE 0x00000004
-
-class IPDF_TextPageFind {
- public:
-  static IPDF_TextPageFind* CreatePageFind(const IPDF_TextPage* pTextPage);
-  virtual ~IPDF_TextPageFind() {}
-
-  virtual FX_BOOL FindFirst(const CFX_WideString& findwhat,
-                            int flags,
-                            int startPos = 0) = 0;
-  virtual FX_BOOL FindNext() = 0;
-  virtual FX_BOOL FindPrev() = 0;
-  virtual void GetRectArray(CFX_RectArray& rects) const = 0;
-  virtual int GetCurOrder() const = 0;
-  virtual int GetMatchedCount() const = 0;
-};
-
-class IPDF_LinkExtract {
- public:
-  static IPDF_LinkExtract* CreateLinkExtract();
-  virtual ~IPDF_LinkExtract() {}
-
-  virtual FX_BOOL ExtractLinks(const IPDF_TextPage* pTextPage) = 0;
-  virtual int CountLinks() const = 0;
-  virtual CFX_WideString GetURL(int index) const = 0;
-  virtual void GetBoundedSegment(int index, int& start, int& count) const = 0;
-  virtual void GetRects(int index, CFX_RectArray& rects) const = 0;
-};
-
-#endif  // CORE_INCLUDE_FPDFTEXT_FPDF_TEXT_H_
diff --git a/core/include/fxcrt/fx_coordinates.h b/core/include/fxcrt/fx_coordinates.h
index 53b4c1a..0422da1 100644
--- a/core/include/fxcrt/fx_coordinates.h
+++ b/core/include/fxcrt/fx_coordinates.h
@@ -310,6 +310,7 @@
   FX_FLOAT right;
   FX_FLOAT top;
 };
+using CFX_RectArray = CFX_ArrayTemplate<CFX_FloatRect>;
 
 // LTWH rectangles (y-axis runs downwards).
 template <class baseType>
diff --git a/fpdfsdk/DEPS b/fpdfsdk/DEPS
index 488a396..ed11188 100644
--- a/fpdfsdk/DEPS
+++ b/fpdfsdk/DEPS
@@ -1,5 +1,6 @@
 include_rules = [
   '+core/include',
+  '+core/fpdftext/include',
   '+javascript/IJavaScript.h',
   '+public',
   '+v8',
diff --git a/fpdfsdk/fpdf_searchex.cpp b/fpdfsdk/fpdf_searchex.cpp
index 96c5e53..ab2baf5 100644
--- a/fpdfsdk/fpdf_searchex.cpp
+++ b/fpdfsdk/fpdf_searchex.cpp
@@ -6,7 +6,7 @@
 
 #include "public/fpdf_searchex.h"
 
-#include "core/include/fpdftext/fpdf_text.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
 
 DLLEXPORT int STDCALL
 FPDFText_GetCharIndexFromTextIndex(FPDF_TEXTPAGE text_page, int nTextIndex) {
diff --git a/fpdfsdk/fpdftext.cpp b/fpdfsdk/fpdftext.cpp
index 80d5692..3e64d8e 100644
--- a/fpdfsdk/fpdftext.cpp
+++ b/fpdfsdk/fpdftext.cpp
@@ -6,8 +6,10 @@
 
 #include "public/fpdf_text.h"
 
+#include "core/fpdftext/include/ipdf_linkextract.h"
+#include "core/fpdftext/include/ipdf_textpage.h"
+#include "core/fpdftext/include/ipdf_textpagefind.h"
 #include "core/include/fpdfdoc/fpdf_doc.h"
-#include "core/include/fpdftext/fpdf_text.h"
 #include "fpdfsdk/include/fsdk_define.h"
 
 #ifdef PDF_ENABLE_XFA
diff --git a/fpdfsdk/include/fsdk_mgr.h b/fpdfsdk/include/fsdk_mgr.h
index 6543000..0073377 100644
--- a/fpdfsdk/include/fsdk_mgr.h
+++ b/fpdfsdk/include/fsdk_mgr.h
@@ -12,7 +12,6 @@
 #include <vector>
 
 #include "core/include/fpdfapi/cpdf_document.h"
-#include "core/include/fpdftext/fpdf_text.h"
 #include "fpdfsdk/include/fsdk_actionhandler.h"
 #include "fpdfsdk/include/fsdk_annothandler.h"
 #include "fpdfsdk/include/fsdk_baseannot.h"
diff --git a/fpdfsdk/javascript/DEPS b/fpdfsdk/javascript/DEPS
index 4b3f3dd..a1f0ec3 100644
--- a/fpdfsdk/javascript/DEPS
+++ b/fpdfsdk/javascript/DEPS
@@ -1,3 +1,4 @@
 include_rules = [
+  '+core/fdrm/crypto/include',
   '+xfa/fxjse'
 ]
diff --git a/fpdfsdk/javascript/JS_GlobalData.cpp b/fpdfsdk/javascript/JS_GlobalData.cpp
index 1408dbe..ba547fe 100644
--- a/fpdfsdk/javascript/JS_GlobalData.cpp
+++ b/fpdfsdk/javascript/JS_GlobalData.cpp
@@ -6,7 +6,7 @@
 
 #include "fpdfsdk/javascript/JS_GlobalData.h"
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "fpdfsdk/include/javascript/IJavaScript.h"
 
 #define JS_MAXGLOBALDATA (1024 * 4 - 8)
diff --git a/pdfium.gyp b/pdfium.gyp
index a7cb00d..9d986b2 100644
--- a/pdfium.gyp
+++ b/pdfium.gyp
@@ -212,7 +212,7 @@
       'target_name': 'fdrm',
       'type': 'static_library',
       'sources': [
-        'core/include/fdrm/fx_crypt.h',
+        'core/fdrm/crypto/include/fx_crypt.h',
         'core/fdrm/crypto/fx_crypt.cpp',
         'core/fdrm/crypto/fx_crypt_aes.cpp',
         'core/fdrm/crypto/fx_crypt_sha.cpp',
@@ -403,7 +403,9 @@
       'target_name': 'fpdftext',
       'type': 'static_library',
       'sources': [
-        'core/include/fpdftext/fpdf_text.h',
+        'core/fpdftext/include/ipdf_linkextract.h',
+        'core/fpdftext/include/ipdf_textpage.h',
+        'core/fpdftext/include/ipdf_textpagefind.h',
         'core/fpdftext/fpdf_text_int.cpp',
         'core/fpdftext/text_int.h',
         'core/fpdftext/unicodenormalization.cpp',
diff --git a/xfa/fxfa/app/DEPS b/xfa/fxfa/app/DEPS
new file mode 100644
index 0000000..a0d113f
--- /dev/null
+++ b/xfa/fxfa/app/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+  '+core/fdrm/crypto/include',
+]
diff --git a/xfa/fxfa/app/xfa_checksum.cpp b/xfa/fxfa/app/xfa_checksum.cpp
index 1639c0d..b9a7b50 100644
--- a/xfa/fxfa/app/xfa_checksum.cpp
+++ b/xfa/fxfa/app/xfa_checksum.cpp
@@ -6,7 +6,7 @@
 
 #include "xfa/fxfa/app/xfa_checksum.h"
 
-#include "core/include/fdrm/fx_crypt.h"
+#include "core/fdrm/crypto/include/fx_crypt.h"
 #include "xfa/fgas/crt/fgas_algorithm.h"
 
 CXFA_SAXReaderHandler::CXFA_SAXReaderHandler(CXFA_ChecksumContext* pContext)