1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _JS_OBJECT_H_ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _JS_OBJECT_H_ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CJS_Object; 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CJS_Timer; 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CJS_Context; 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CJS_EmbedObj : public CFX_Object 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_EmbedObj(CJS_Object* pJSObject); 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CJS_EmbedObj(); 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void TimerProc(CJS_Timer* pTimer){}; 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_Timer* BeginTimer(CPDFDoc_Environment * pApp, FX_UINT nElapse); 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void EndTimer(CJS_Timer* pTimer); 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_Object* GetJSObject(){return m_pJSObject;}; 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov operator CJS_Object* (){return m_pJSObject;}; 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView * JSGetPageView(IFXJS_Context* cc); 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, FX_LPCWSTR swMsg, FX_LPCWSTR swTitle = NULL, FX_UINT nType = 0, FX_UINT nIcon = 0); 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Alert(CJS_Context* pContext, FX_LPCWSTR swMsg); 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsSafeMode(IFXJS_Context* cc); 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_Object* m_pJSObject; 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CJS_Object : public CFX_Object 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_Object(JSFXObject pObject); 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CJS_Object(void); 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void MakeWeak(); 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL IsType(FX_LPCSTR sClassName){return TRUE;}; 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CFX_ByteString GetClassName(){return "";}; 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL InitInstance(IFXJS_Context* cc){return TRUE;}; 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual FX_BOOL ExitInstance(){return TRUE;}; 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov operator JSFXObject () {return v8::Local<v8::Object>::New(m_pIsolate, m_pObject);} 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov operator CJS_EmbedObj* (){return m_pEmbedObj;}; 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetEmbedObject(CJS_EmbedObj* pObj){m_pEmbedObj = pObj;}; 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_EmbedObj * GetEmbedObject(){return m_pEmbedObj;}; 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDFSDK_PageView * JSGetPageView(IFXJS_Context* cc); 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static int MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, FX_LPCWSTR swMsg, FX_LPCWSTR swTitle = NULL, FX_UINT nType = 0,FX_UINT nIcon = 0); 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static void Alert(CJS_Context* pContext, FX_LPCWSTR swMsg); 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov v8::Isolate* GetIsolate() {return m_pIsolate;} 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected: 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_EmbedObj * m_pEmbedObj; 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov v8::Persistent<v8::Object> m_pObject; 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov v8::Isolate* m_pIsolate; 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct JS_TIMER_MAP 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_UINT nID; 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_Timer * pTimer; 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef CFX_ArrayTemplate<JS_TIMER_MAP*> CTimerMapArray; 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct JS_TIMER_MAPARRAY 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov JS_TIMER_MAPARRAY() 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ~JS_TIMER_MAPARRAY() 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Reset(); 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Reset() 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_Array.GetSize(); i<sz; i++) 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_Array.GetAt(i); 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Array.RemoveAll(); 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAt(FX_UINT nIndex,CJS_Timer * pTimer) 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int i = Find(nIndex); 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (i>=0) 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (JS_TIMER_MAP * pMap = m_Array.GetAt(i)) 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pMap->pTimer = pTimer; 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (JS_TIMER_MAP * pMap = new JS_TIMER_MAP) 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pMap->nID = nIndex; 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pMap->pTimer = pTimer; 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Array.Add(pMap); 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_Timer * GetAt(FX_UINT nIndex) 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int i = Find(nIndex); 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (i>=0) 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (JS_TIMER_MAP * pMap = m_Array.GetAt(i)) 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pMap->pTimer; 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RemoveAt(FX_UINT nIndex) 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int i = Find(nIndex); 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (i>=0) 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_Array.GetAt(i); 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Array.RemoveAt(i); 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //To prevent potential fake memory leak reported by vc6. 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_Array.GetSize() == 0) 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Array.RemoveAll(); 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int Find(FX_UINT nIndex) 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_Array.GetSize(); i<sz; i++) 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (JS_TIMER_MAP * pMap = m_Array.GetAt(i)) 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pMap->nID == nIndex) 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return i; 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CTimerMapArray m_Array; 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic JS_TIMER_MAPARRAY m_sTimeMap; 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CJS_Runtime; 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CJS_Timer 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_Timer(CJS_EmbedObj * pObj,CPDFDoc_Environment* pApp): m_pEmbedObj(pObj), 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nTimerID(0), 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bProcessing(FALSE), 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_dwStartTime(0), 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_dwTimeOut(0), 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_dwElapse(0), 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pRuntime(NULL), 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nType(0), 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pApp(pApp) 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CJS_Timer() 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov KillJSTimer(); 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_UINT SetJSTimer(FX_UINT nElapse) 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_nTimerID)KillJSTimer(); 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_SystemHandler* pHandler = m_pApp->GetSysHandler(); 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nTimerID = pHandler->SetTimer(nElapse,TimerProc); 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_sTimeMap.SetAt(m_nTimerID,this); 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_dwElapse = nElapse; 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_nTimerID; 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void KillJSTimer() 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_nTimerID) 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_SystemHandler* pHandler = m_pApp->GetSysHandler(); 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pHandler->KillTimer(m_nTimerID); 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_sTimeMap.RemoveAt(m_nTimerID); 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nTimerID = 0; 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetType(int nType) 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nType = nType; 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetType() const 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_nType; 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetStartTime(FX_DWORD dwStartTime) 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_dwStartTime = dwStartTime; 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetStartTime() const 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_dwStartTime; 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetTimeOut(FX_DWORD dwTimeOut) 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_dwTimeOut = dwTimeOut; 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD GetTimeOut() const 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_dwTimeOut; 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetRuntime(CJS_Runtime* pRuntime) 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pRuntime = pRuntime; 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_Runtime* GetRuntime() const 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pRuntime; 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetJScript(const CFX_WideString& script) 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_swJScript = script; 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetJScript() const 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_swJScript; 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static void TimerProc(int idEvent) 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CJS_Timer * pTimer = m_sTimeMap.GetAt(idEvent)) 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pTimer->m_bProcessing) 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pTimer->m_bProcessing = TRUE; 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pTimer->m_pEmbedObj) pTimer->m_pEmbedObj->TimerProc(pTimer); 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pTimer->m_bProcessing = FALSE; 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // TRACE(L"BUSY!\n"); 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_UINT m_nTimerID; 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_EmbedObj* m_pEmbedObj; 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bProcessing; 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //data 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_dwStartTime; 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_dwTimeOut; 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD m_dwElapse; 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CJS_Runtime* m_pRuntime; 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString m_swJScript; 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_nType; //0:Interval; 1:TimeOut 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* m_pApp; 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif //_JS_OBJECT_H_ 289