| // Copyright 2017 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 FXJS_GLOBAL_TIMER_H_ | |
| #define FXJS_GLOBAL_TIMER_H_ | |
| #include <map> | |
| #include "fpdfsdk/cpdfsdk_formfillenvironment.h" | |
| #include "fxjs/cjs_runtime.h" | |
| class CJS_App; | |
| class GlobalTimer { | |
| public: | |
| GlobalTimer(CJS_App* pObj, | |
| CPDFSDK_FormFillEnvironment* pFormFillEnv, | |
| CJS_Runtime* pRuntime, | |
| int nType, | |
| const WideString& script, | |
| uint32_t dwElapse, | |
| uint32_t dwTimeOut); | |
| ~GlobalTimer(); | |
| static void Trigger(int nTimerID); | |
| static void Cancel(int nTimerID); | |
| bool IsOneShot() const { return m_nType == 1; } | |
| uint32_t GetTimeOut() const { return m_dwTimeOut; } | |
| int GetTimerID() const { return m_nTimerID; } | |
| CJS_Runtime* GetRuntime() const { return m_pRuntime.Get(); } | |
| WideString GetJScript() const { return m_swJScript; } | |
| private: | |
| using TimerMap = std::map<uint32_t, GlobalTimer*>; | |
| static TimerMap* GetGlobalTimerMap(); | |
| uint32_t m_nTimerID; | |
| CJS_App* const m_pEmbedApp; | |
| bool m_bProcessing; | |
| // data | |
| const int m_nType; // 0:Interval; 1:TimeOut | |
| const uint32_t m_dwTimeOut; | |
| const WideString m_swJScript; | |
| CJS_Runtime::ObservedPtr m_pRuntime; | |
| CPDFSDK_FormFillEnvironment::ObservedPtr m_pFormFillEnv; | |
| }; | |
| #endif // FXJS_GLOBAL_TIMER_H_ |