diff --git a/core/fpdfapi/cpdf_modulemgr.cpp b/core/fpdfapi/cpdf_modulemgr.cpp
index 3ab5cb5..0cac7ef 100644
--- a/core/fpdfapi/cpdf_modulemgr.cpp
+++ b/core/fpdfapi/cpdf_modulemgr.cpp
@@ -9,38 +9,26 @@
 #include "core/fpdfapi/font/cpdf_fontglobals.h"
 #include "core/fpdfapi/page/cpdf_pagemodule.h"
 #include "core/fxcodec/fx_codec.h"
-#include "third_party/base/ptr_util.h"
 
 namespace {
 
-CPDF_ModuleMgr* g_pDefaultMgr = nullptr;
+bool g_bModuleMgrCreated = false;
 
 }  // namespace
 
 // static
 void CPDF_ModuleMgr::Create() {
-  ASSERT(!g_pDefaultMgr);
-  g_pDefaultMgr = new CPDF_ModuleMgr;
+  ASSERT(!g_bModuleMgrCreated);
   fxcodec::ModuleMgr::Create();
   CPDF_PageModule::Create();
   CPDF_FontGlobals::GetInstance()->LoadEmbeddedMaps();
+  g_bModuleMgrCreated = true;
 }
 
 // static
 void CPDF_ModuleMgr::Destroy() {
-  ASSERT(g_pDefaultMgr);
+  ASSERT(g_bModuleMgrCreated);
   CPDF_PageModule::Destroy();
   fxcodec::ModuleMgr::Destroy();
-  delete g_pDefaultMgr;
-  g_pDefaultMgr = nullptr;
+  g_bModuleMgrCreated = false;
 }
-
-// static
-CPDF_ModuleMgr* CPDF_ModuleMgr::Get() {
-  ASSERT(g_pDefaultMgr);
-  return g_pDefaultMgr;
-}
-
-CPDF_ModuleMgr::CPDF_ModuleMgr() = default;
-
-CPDF_ModuleMgr::~CPDF_ModuleMgr() = default;
diff --git a/core/fpdfapi/cpdf_modulemgr.h b/core/fpdfapi/cpdf_modulemgr.h
index 86fe988..8cc713b 100644
--- a/core/fpdfapi/cpdf_modulemgr.h
+++ b/core/fpdfapi/cpdf_modulemgr.h
@@ -7,44 +7,14 @@
 #ifndef CORE_FPDFAPI_CPDF_MODULEMGR_H_
 #define CORE_FPDFAPI_CPDF_MODULEMGR_H_
 
-#include <memory>
-#include <utility>
-
-namespace fpdfapi {
-
-class UnsupportedInfoAdapter {
- public:
-  explicit UnsupportedInfoAdapter(void* info) : m_info(info) {}
-
-  void* info() const { return m_info; }
-
- private:
-  void* const m_info;
-};
-
-}  // namespace fpdfapi
-
 class CPDF_ModuleMgr {
  public:
   static void Create();
   static void Destroy();
-  static CPDF_ModuleMgr* Get();
-
-  void SetUnsupportInfoAdapter(
-      std::unique_ptr<fpdfapi::UnsupportedInfoAdapter> pAdapter) {
-    m_pUnsupportInfoAdapter = std::move(pAdapter);
-  }
-  fpdfapi::UnsupportedInfoAdapter* GetUnsupportInfoAdapter() const {
-    return m_pUnsupportInfoAdapter.get();
-  }
 
  private:
-  CPDF_ModuleMgr();
-  ~CPDF_ModuleMgr();
-
-  void InitPageModule();
-
-  std::unique_ptr<fpdfapi::UnsupportedInfoAdapter> m_pUnsupportInfoAdapter;
+  CPDF_ModuleMgr() = delete;
+  ~CPDF_ModuleMgr() = delete;
 };
 
 #endif  // CORE_FPDFAPI_CPDF_MODULEMGR_H_
diff --git a/fpdfsdk/cpdfsdk_helpers.cpp b/fpdfsdk/cpdfsdk_helpers.cpp
index 24cf507..bafac5c 100644
--- a/fpdfsdk/cpdfsdk_helpers.cpp
+++ b/fpdfsdk/cpdfsdk_helpers.cpp
@@ -19,7 +19,6 @@
 #include "core/fpdfdoc/cpdf_interactiveform.h"
 #include "core/fpdfdoc/cpdf_metadata.h"
 #include "fpdfsdk/cpdfsdk_formfillenvironment.h"
-#include "public/fpdf_ext.h"
 
 #ifdef PDF_ENABLE_XFA
 #include "fpdfsdk/fpdfxfa/cpdfxfa_context.h"
@@ -32,18 +31,18 @@
 // 0 bit: FPDF_POLICY_MACHINETIME_ACCESS
 uint32_t g_sandbox_policy = 0xFFFFFFFF;
 
+UNSUPPORT_INFO* g_unsupport_info = nullptr;
+
 #if !defined(OS_WIN)
 int g_last_error = 0;
 #endif
 
 bool RaiseUnsupportedError(int nError) {
-  auto* pAdapter = CPDF_ModuleMgr::Get()->GetUnsupportInfoAdapter();
-  if (!pAdapter)
+  if (!g_unsupport_info)
     return false;
 
-  UNSUPPORT_INFO* info = static_cast<UNSUPPORT_INFO*>(pAdapter->info());
-  if (info && info->FSDK_UnSupport_Handler)
-    info->FSDK_UnSupport_Handler(info, nError);
+  if (g_unsupport_info->FSDK_UnSupport_Handler)
+    g_unsupport_info->FSDK_UnSupport_Handler(g_unsupport_info, nError);
   return true;
 }
 
@@ -318,6 +317,14 @@
   }
 }
 
+void SetPDFUnsupportInfo(UNSUPPORT_INFO* unsp_info) {
+  g_unsupport_info = unsp_info;
+}
+
+UNSUPPORT_INFO* GetPDFUnssuportInto() {
+  return g_unsupport_info;
+}
+
 void ReportUnsupportedFeatures(CPDF_Document* pDoc) {
   const CPDF_Dictionary* pRootDict = pDoc->GetRoot();
   if (pRootDict) {
diff --git a/fpdfsdk/cpdfsdk_helpers.h b/fpdfsdk/cpdfsdk_helpers.h
index f8d3574..8eca854 100644
--- a/fpdfsdk/cpdfsdk_helpers.h
+++ b/fpdfsdk/cpdfsdk_helpers.h
@@ -12,6 +12,7 @@
 #include "core/fpdfapi/parser/cpdf_parser.h"
 #include "core/fxge/dib/cfx_dibitmap.h"
 #include "public/fpdf_doc.h"
+#include "public/fpdf_ext.h"
 #include "public/fpdfview.h"
 
 #ifdef PDF_ENABLE_XFA
@@ -275,6 +276,8 @@
                            bool bNeedToRestore,
                            IPDFSDK_PauseAdapter* pause);
 
+void SetPDFUnsupportInfo(UNSUPPORT_INFO* unsp_info);
+UNSUPPORT_INFO* GetPDFUnssuportInto();
 void ReportUnsupportedFeatures(CPDF_Document* pDoc);
 void CheckForUnsupportedAnnot(const CPDF_Annot* pAnnot);
 
diff --git a/fpdfsdk/fpdf_ext.cpp b/fpdfsdk/fpdf_ext.cpp
index e757481..acb40de 100644
--- a/fpdfsdk/fpdf_ext.cpp
+++ b/fpdfsdk/fpdf_ext.cpp
@@ -74,8 +74,7 @@
   if (!unsp_info || unsp_info->version != 1)
     return false;
 
-  CPDF_ModuleMgr::Get()->SetUnsupportInfoAdapter(
-      pdfium::MakeUnique<fpdfapi::UnsupportedInfoAdapter>(unsp_info));
+  SetPDFUnsupportInfo(unsp_info);
   return true;
 }
 
