|  | // 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 "core/fxcrt/unowned_ptr.h" | 
|  | #include "fxjs/cjs_runtime.h" | 
|  |  | 
|  | class CJS_App; | 
|  |  | 
|  | class GlobalTimer { | 
|  | public: | 
|  | enum class Type : bool { | 
|  | kRepeating = false, | 
|  | kOneShot = true, | 
|  | }; | 
|  |  | 
|  | GlobalTimer(CJS_App* pObj, | 
|  | CJS_Runtime* pRuntime, | 
|  | Type nType, | 
|  | const WideString& script, | 
|  | uint32_t dwElapse, | 
|  | uint32_t dwTimeOut); | 
|  | ~GlobalTimer(); | 
|  |  | 
|  | static void Trigger(int32_t nTimerID); | 
|  | static void Cancel(int32_t nTimerID); | 
|  |  | 
|  | bool IsOneShot() const { return m_nType == Type::kOneShot; } | 
|  | uint32_t GetTimeOut() const { return m_dwTimeOut; } | 
|  | int32_t GetTimerID() const { return m_nTimerID; } | 
|  | CJS_Runtime* GetRuntime() const { return m_pRuntime.Get(); } | 
|  | WideString GetJScript() const { return m_swJScript; } | 
|  |  | 
|  | private: | 
|  | bool HasValidID() const; | 
|  |  | 
|  | const Type m_nType; | 
|  | bool m_bProcessing = false; | 
|  | const int32_t m_nTimerID; | 
|  | const uint32_t m_dwTimeOut; | 
|  | const WideString m_swJScript; | 
|  | ObservedPtr<CJS_Runtime> m_pRuntime; | 
|  | UnownedPtr<CJS_App> const m_pEmbedApp; | 
|  | }; | 
|  |  | 
|  | #endif  // FXJS_GLOBAL_TIMER_H_ |