1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2017 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef FXJS_GLOBAL_TIMER_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FXJS_GLOBAL_TIMER_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/unowned_ptr.h" 11*3ac0a46fSAndroid Build Coastguard Worker #include "fxjs/cjs_runtime.h" 12*3ac0a46fSAndroid Build Coastguard Worker 13*3ac0a46fSAndroid Build Coastguard Worker class CJS_App; 14*3ac0a46fSAndroid Build Coastguard Worker 15*3ac0a46fSAndroid Build Coastguard Worker class GlobalTimer { 16*3ac0a46fSAndroid Build Coastguard Worker public: 17*3ac0a46fSAndroid Build Coastguard Worker enum class Type : bool { 18*3ac0a46fSAndroid Build Coastguard Worker kRepeating = false, 19*3ac0a46fSAndroid Build Coastguard Worker kOneShot = true, 20*3ac0a46fSAndroid Build Coastguard Worker }; 21*3ac0a46fSAndroid Build Coastguard Worker 22*3ac0a46fSAndroid Build Coastguard Worker GlobalTimer(CJS_App* pObj, 23*3ac0a46fSAndroid Build Coastguard Worker CJS_Runtime* pRuntime, 24*3ac0a46fSAndroid Build Coastguard Worker Type nType, 25*3ac0a46fSAndroid Build Coastguard Worker const WideString& script, 26*3ac0a46fSAndroid Build Coastguard Worker uint32_t dwElapse, 27*3ac0a46fSAndroid Build Coastguard Worker uint32_t dwTimeOut); 28*3ac0a46fSAndroid Build Coastguard Worker ~GlobalTimer(); 29*3ac0a46fSAndroid Build Coastguard Worker 30*3ac0a46fSAndroid Build Coastguard Worker static void Trigger(int32_t nTimerID); 31*3ac0a46fSAndroid Build Coastguard Worker static void Cancel(int32_t nTimerID); 32*3ac0a46fSAndroid Build Coastguard Worker IsOneShot()33*3ac0a46fSAndroid Build Coastguard Worker bool IsOneShot() const { return m_nType == Type::kOneShot; } GetTimeOut()34*3ac0a46fSAndroid Build Coastguard Worker uint32_t GetTimeOut() const { return m_dwTimeOut; } GetTimerID()35*3ac0a46fSAndroid Build Coastguard Worker int32_t GetTimerID() const { return m_nTimerID; } GetRuntime()36*3ac0a46fSAndroid Build Coastguard Worker CJS_Runtime* GetRuntime() const { return m_pRuntime.Get(); } GetJScript()37*3ac0a46fSAndroid Build Coastguard Worker WideString GetJScript() const { return m_swJScript; } 38*3ac0a46fSAndroid Build Coastguard Worker 39*3ac0a46fSAndroid Build Coastguard Worker private: 40*3ac0a46fSAndroid Build Coastguard Worker bool HasValidID() const; 41*3ac0a46fSAndroid Build Coastguard Worker 42*3ac0a46fSAndroid Build Coastguard Worker const Type m_nType; 43*3ac0a46fSAndroid Build Coastguard Worker bool m_bProcessing = false; 44*3ac0a46fSAndroid Build Coastguard Worker const int32_t m_nTimerID; 45*3ac0a46fSAndroid Build Coastguard Worker const uint32_t m_dwTimeOut; 46*3ac0a46fSAndroid Build Coastguard Worker const WideString m_swJScript; 47*3ac0a46fSAndroid Build Coastguard Worker ObservedPtr<CJS_Runtime> m_pRuntime; 48*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<CJS_App> const m_pEmbedApp; 49*3ac0a46fSAndroid Build Coastguard Worker }; 50*3ac0a46fSAndroid Build Coastguard Worker 51*3ac0a46fSAndroid Build Coastguard Worker #endif // FXJS_GLOBAL_TIMER_H_ 52