Split IPWL_SystemHandler and fxcrt::TimerHandlerIface
Change-Id: I62a69d51d8544cb75da9f5e82a105cfcfab54f58
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/58953
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/cfx_systemhandler.h b/fpdfsdk/cfx_systemhandler.h
index def797e..c72e587 100644
--- a/fpdfsdk/cfx_systemhandler.h
+++ b/fpdfsdk/cfx_systemhandler.h
@@ -9,6 +9,7 @@
#include "core/fxcrt/fx_coordinates.h"
#include "core/fxcrt/fx_system.h"
+#include "core/fxcrt/timerhandler_iface.h"
#include "core/fxcrt/unowned_ptr.h"
#include "fpdfsdk/pwl/ipwl_systemhandler.h"
@@ -16,7 +17,8 @@
class CPDFSDK_FormFillEnvironment;
class CPDFSDK_Widget;
-class CFX_SystemHandler final : public IPWL_SystemHandler {
+class CFX_SystemHandler final : public TimerHandlerIface,
+ public IPWL_SystemHandler {
public:
explicit CFX_SystemHandler(CPDFSDK_FormFillEnvironment* pFormFillEnv);
~CFX_SystemHandler() override;
diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.h b/fpdfsdk/cpdfsdk_formfillenvironment.h
index c4afcac..48a0ec6 100644
--- a/fpdfsdk/cpdfsdk_formfillenvironment.h
+++ b/fpdfsdk/cpdfsdk_formfillenvironment.h
@@ -197,6 +197,7 @@
void JS_docSubmitForm(void* formData, int length, const WideString& URL);
ByteString GetAppName() const { return ByteString(); }
+ TimerHandlerIface* GetTimerHandler() const { return m_pSysHandler.get(); }
IPWL_SystemHandler* GetSysHandler() const { return m_pSysHandler.get(); }
FPDF_FORMFILLINFO* GetFormFillInfo() const { return m_pInfo; }
diff --git a/fpdfsdk/formfiller/cffl_formfiller.cpp b/fpdfsdk/formfiller/cffl_formfiller.cpp
index 44ad7ff..4bc42af 100644
--- a/fpdfsdk/formfiller/cffl_formfiller.cpp
+++ b/fpdfsdk/formfiller/cffl_formfiller.cpp
@@ -365,6 +365,7 @@
dwCreateFlags |= PWS_AUTOFONTSIZE;
cp.dwFlags = dwCreateFlags;
+ cp.pTimerHandler = m_pFormFillEnv->GetTimerHandler();
cp.pSystemHandler = m_pFormFillEnv->GetSysHandler();
return cp;
}
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
index f441d019..0725670 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
@@ -304,5 +304,5 @@
if (!m_pFormFillEnv)
return nullptr;
return pdfium::MakeUnique<CXFA_FWLAdapterTimerMgr>(
- m_pFormFillEnv->GetSysHandler());
+ m_pFormFillEnv->GetTimerHandler());
}
diff --git a/fpdfsdk/pwl/cpwl_caret.cpp b/fpdfsdk/pwl/cpwl_caret.cpp
index 936c1c6..5be6ff0 100644
--- a/fpdfsdk/pwl/cpwl_caret.cpp
+++ b/fpdfsdk/pwl/cpwl_caret.cpp
@@ -85,7 +85,7 @@
m_ptHead = ptHead;
m_ptFoot = ptFoot;
- m_pTimer = pdfium::MakeUnique<CPWL_Timer>(GetSystemHandler(), this,
+ m_pTimer = pdfium::MakeUnique<CPWL_Timer>(GetTimerHandler(), this,
kCaretFlashIntervalMs);
if (!CPWL_Wnd::SetVisible(true))
diff --git a/fpdfsdk/pwl/cpwl_scroll_bar.cpp b/fpdfsdk/pwl/cpwl_scroll_bar.cpp
index e1deb8f..209c465 100644
--- a/fpdfsdk/pwl/cpwl_scroll_bar.cpp
+++ b/fpdfsdk/pwl/cpwl_scroll_bar.cpp
@@ -676,7 +676,7 @@
NotifyScrollWindow();
m_bMinOrMax = true;
- m_pTimer = pdfium::MakeUnique<CPWL_Timer>(GetSystemHandler(), this, 100);
+ m_pTimer = pdfium::MakeUnique<CPWL_Timer>(GetTimerHandler(), this, 100);
}
void CPWL_ScrollBar::OnMinButtonLBUp(const CFX_PointF& point) {}
@@ -690,7 +690,7 @@
NotifyScrollWindow();
m_bMinOrMax = false;
- m_pTimer = pdfium::MakeUnique<CPWL_Timer>(GetSystemHandler(), this, 100);
+ m_pTimer = pdfium::MakeUnique<CPWL_Timer>(GetTimerHandler(), this, 100);
}
void CPWL_ScrollBar::OnMaxButtonLBUp(const CFX_PointF& point) {}
diff --git a/fpdfsdk/pwl/cpwl_timer.cpp b/fpdfsdk/pwl/cpwl_timer.cpp
index 9979138..a501c7f 100644
--- a/fpdfsdk/pwl/cpwl_timer.cpp
+++ b/fpdfsdk/pwl/cpwl_timer.cpp
@@ -18,11 +18,11 @@
} // namespace
-CPWL_Timer::CPWL_Timer(IPWL_SystemHandler* pSystemHandler,
+CPWL_Timer::CPWL_Timer(TimerHandlerIface* pTimerHandler,
CallbackIface* pCallbackIface,
int32_t nInterval)
- : m_nTimerID(pSystemHandler->SetTimer(nInterval, TimerProc)),
- m_pSystemHandler(pSystemHandler),
+ : m_nTimerID(pTimerHandler->SetTimer(nInterval, TimerProc)),
+ m_pTimerHandler(pTimerHandler),
m_pCallbackIface(pCallbackIface) {
ASSERT(m_pCallbackIface);
if (HasValidID())
@@ -31,7 +31,7 @@
CPWL_Timer::~CPWL_Timer() {
if (HasValidID()) {
- m_pSystemHandler->KillTimer(m_nTimerID);
+ m_pTimerHandler->KillTimer(m_nTimerID);
GetPWLTimeMap().erase(m_nTimerID);
}
}
diff --git a/fpdfsdk/pwl/cpwl_timer.h b/fpdfsdk/pwl/cpwl_timer.h
index 8d1a093..2258674 100644
--- a/fpdfsdk/pwl/cpwl_timer.h
+++ b/fpdfsdk/pwl/cpwl_timer.h
@@ -7,8 +7,8 @@
#ifndef FPDFSDK_PWL_CPWL_TIMER_H_
#define FPDFSDK_PWL_CPWL_TIMER_H_
+#include "core/fxcrt/timerhandler_iface.h"
#include "core/fxcrt/unowned_ptr.h"
-#include "fpdfsdk/pwl/ipwl_systemhandler.h"
class CPWL_TimerHandler;
@@ -20,7 +20,7 @@
virtual void OnTimerFired() = 0;
};
- CPWL_Timer(IPWL_SystemHandler* pSystemHandler,
+ CPWL_Timer(TimerHandlerIface* pTimerHandler,
CallbackIface* pCallbackIface,
int32_t nInterval);
~CPWL_Timer();
@@ -29,11 +29,11 @@
static void TimerProc(int32_t idEvent);
bool HasValidID() const {
- return m_nTimerID != IPWL_SystemHandler::kInvalidTimerID;
+ return m_nTimerID != TimerHandlerIface::kInvalidTimerID;
}
const int32_t m_nTimerID;
- UnownedPtr<IPWL_SystemHandler> const m_pSystemHandler;
+ UnownedPtr<TimerHandlerIface> const m_pTimerHandler;
UnownedPtr<CallbackIface> const m_pCallbackIface;
};
diff --git a/fpdfsdk/pwl/cpwl_wnd.h b/fpdfsdk/pwl/cpwl_wnd.h
index da6db99..45e6955 100644
--- a/fpdfsdk/pwl/cpwl_wnd.h
+++ b/fpdfsdk/pwl/cpwl_wnd.h
@@ -114,6 +114,7 @@
~CreateParams();
CFX_FloatRect rcRectWnd; // required
+ UnownedPtr<TimerHandlerIface> pTimerHandler; // required
UnownedPtr<IPWL_SystemHandler> pSystemHandler; // required
UnownedPtr<IPVT_FontMap> pFontMap; // required
ObservedPtr<ProviderIface> pProvider; // required
@@ -270,6 +271,9 @@
bool IsNotifying() const { return m_bNotifying; }
bool IsValid() const { return m_bCreated; }
CreateParams* GetCreationParams() { return &m_CreationParams; }
+ TimerHandlerIface* GetTimerHandler() const {
+ return m_CreationParams.pTimerHandler.Get();
+ }
IPWL_SystemHandler* GetSystemHandler() const {
return m_CreationParams.pSystemHandler.Get();
}
diff --git a/fpdfsdk/pwl/ipwl_systemhandler.h b/fpdfsdk/pwl/ipwl_systemhandler.h
index 017bffe..8a14d8e 100644
--- a/fpdfsdk/pwl/ipwl_systemhandler.h
+++ b/fpdfsdk/pwl/ipwl_systemhandler.h
@@ -11,11 +11,10 @@
#include "core/fxcrt/fx_coordinates.h"
#include "core/fxcrt/fx_system.h"
-#include "core/fxcrt/timerhandler_iface.h"
class CFFL_FormFiller;
-class IPWL_SystemHandler : public TimerHandlerIface {
+class IPWL_SystemHandler {
public:
class PerWindowData {
public:
@@ -23,7 +22,7 @@
virtual std::unique_ptr<PerWindowData> Clone() const = 0;
};
- ~IPWL_SystemHandler() override = default;
+ virtual ~IPWL_SystemHandler() = default;
virtual void InvalidateRect(PerWindowData* pWidgetData,
const CFX_FloatRect& rect) = 0;
diff --git a/fxjs/cjs_runtime.cpp b/fxjs/cjs_runtime.cpp
index 1cded27..4cb37dd 100644
--- a/fxjs/cjs_runtime.cpp
+++ b/fxjs/cjs_runtime.cpp
@@ -143,7 +143,7 @@
}
TimerHandlerIface* CJS_Runtime::GetTimerHandler() const {
- return m_pFormFillEnv ? m_pFormFillEnv->GetSysHandler() : nullptr;
+ return m_pFormFillEnv ? m_pFormFillEnv->GetTimerHandler() : nullptr;
}
void CJS_Runtime::SetFormFillEnvToDocument() {
diff --git a/fxjs/global_timer.cpp b/fxjs/global_timer.cpp
index 75c0a42..b3049a0 100644
--- a/fxjs/global_timer.cpp
+++ b/fxjs/global_timer.cpp
@@ -84,5 +84,5 @@
}
bool GlobalTimer::HasValidID() const {
- return m_nTimerID != IPWL_SystemHandler::kInvalidTimerID;
+ return m_nTimerID != TimerHandlerIface::kInvalidTimerID;
}