diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
index 349cc5d..f441d019 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
@@ -303,5 +303,6 @@
 std::unique_ptr<IFWL_AdapterTimerMgr> CPDFXFA_Context::NewTimerMgr() {
   if (!m_pFormFillEnv)
     return nullptr;
-  return pdfium::MakeUnique<CXFA_FWLAdapterTimerMgr>(m_pFormFillEnv.Get());
+  return pdfium::MakeUnique<CXFA_FWLAdapterTimerMgr>(
+      m_pFormFillEnv->GetSysHandler());
 }
diff --git a/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp b/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp
index 6b17955..769401e 100644
--- a/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp
+++ b/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.cpp
@@ -10,7 +10,8 @@
 #include <utility>
 #include <vector>
 
-#include "fpdfsdk/cpdfsdk_formfillenvironment.h"
+#include "third_party/base/ptr_util.h"
+#include "third_party/base/stl_util.h"
 
 namespace {
 
@@ -42,10 +43,9 @@
 
 }  // namespace
 
-
 CXFA_FWLAdapterTimerMgr::CXFA_FWLAdapterTimerMgr(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv)
-    : m_pFormFillEnv(pFormFillEnv) {}
+    TimerHandlerIface* pTimerHandler)
+    : m_pTimerHandler(pTimerHandler) {}
 
 CXFA_FWLAdapterTimerMgr::~CXFA_FWLAdapterTimerMgr() = default;
 
@@ -55,22 +55,22 @@
   if (!g_TimerArray)
     g_TimerArray = new std::vector<std::unique_ptr<CFWL_TimerInfo>>;
 
-  if (!m_pFormFillEnv)
+  if (!m_pTimerHandler)
     return nullptr;
 
-  int32_t id_event = m_pFormFillEnv->SetTimer(dwElapse, TimerProc);
+  int32_t id_event = m_pTimerHandler->SetTimer(dwElapse, TimerProc);
   g_TimerArray->push_back(
       pdfium::MakeUnique<CFWL_FWLAdapterTimerInfo>(this, id_event, pTimer));
   return g_TimerArray->back().get();
 }
 
 void CXFA_FWLAdapterTimerMgr::Stop(CFWL_TimerInfo* pTimerInfo) {
-  if (!pTimerInfo || !m_pFormFillEnv)
+  if (!pTimerInfo || !m_pTimerHandler)
     return;
 
   CFWL_FWLAdapterTimerInfo* pInfo =
       static_cast<CFWL_FWLAdapterTimerInfo*>(pTimerInfo);
-  m_pFormFillEnv->KillTimer(pInfo->idEvent);
+  m_pTimerHandler->KillTimer(pInfo->idEvent);
   if (!g_TimerArray)
     return;
 
diff --git a/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.h b/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.h
index bb5afb8..3c477b8 100644
--- a/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.h
+++ b/fpdfsdk/fpdfxfa/cxfa_fwladaptertimermgr.h
@@ -9,14 +9,14 @@
 
 #include <vector>
 
+#include "core/fxcrt/timerhandler_iface.h"
 #include "core/fxcrt/unowned_ptr.h"
-#include "fpdfsdk/fpdfxfa/cpdfxfa_context.h"
 #include "xfa/fwl/cfwl_timerinfo.h"
 #include "xfa/fwl/ifwl_adaptertimermgr.h"
 
 class CXFA_FWLAdapterTimerMgr final : public IFWL_AdapterTimerMgr {
  public:
-  explicit CXFA_FWLAdapterTimerMgr(CPDFSDK_FormFillEnvironment* pFormFillEnv);
+  explicit CXFA_FWLAdapterTimerMgr(TimerHandlerIface* pTimerHandler);
   ~CXFA_FWLAdapterTimerMgr() override;
 
   CFWL_TimerInfo* Start(CFWL_Timer* pTimer,
@@ -25,7 +25,7 @@
   void Stop(CFWL_TimerInfo* pTimerInfo) override;
 
  private:
-  UnownedPtr<CPDFSDK_FormFillEnvironment> const m_pFormFillEnv;
+  UnownedPtr<TimerHandlerIface> const m_pTimerHandler;
 };
 
 #endif  // FPDFSDK_FPDFXFA_CXFA_FWLADAPTERTIMERMGR_H_
