| Index: fpdfsdk/include/javascript/JS_Object.h
|
| diff --git a/fpdfsdk/include/javascript/JS_Object.h b/fpdfsdk/include/javascript/JS_Object.h
|
| index a6dac5d2a3f5b157468644e47a6ff7a86f6a06eb..e4fe494cf43dd63728eefb32a58acc94344ca561 100644
|
| --- a/fpdfsdk/include/javascript/JS_Object.h
|
| +++ b/fpdfsdk/include/javascript/JS_Object.h
|
| @@ -1,7 +1,7 @@
|
| // Copyright 2014 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 _JS_OBJECT_H_
|
| @@ -11,279 +11,227 @@ class CJS_Object;
|
| class CJS_Timer;
|
| class CJS_Context;
|
|
|
| -class CJS_EmbedObj : public CFX_Object
|
| -{
|
| -public:
|
| - CJS_EmbedObj(CJS_Object* pJSObject);
|
| - virtual ~CJS_EmbedObj();
|
| -
|
| - virtual void TimerProc(CJS_Timer* pTimer){};
|
| +class CJS_EmbedObj : public CFX_Object {
|
| + public:
|
| + CJS_EmbedObj(CJS_Object* pJSObject);
|
| + virtual ~CJS_EmbedObj();
|
|
|
| - CJS_Timer* BeginTimer(CPDFDoc_Environment * pApp, FX_UINT nElapse);
|
| - void EndTimer(CJS_Timer* pTimer);
|
| + virtual void TimerProc(CJS_Timer* pTimer){};
|
|
|
| - CJS_Object* GetJSObject(){return m_pJSObject;};
|
| - operator CJS_Object* (){return m_pJSObject;};
|
| + CJS_Timer* BeginTimer(CPDFDoc_Environment* pApp, FX_UINT nElapse);
|
| + void EndTimer(CJS_Timer* pTimer);
|
|
|
| - CPDFSDK_PageView * JSGetPageView(IFXJS_Context* cc);
|
| - int MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, FX_LPCWSTR swMsg, FX_LPCWSTR swTitle = NULL, FX_UINT nType = 0, FX_UINT nIcon = 0);
|
| - void Alert(CJS_Context* pContext, FX_LPCWSTR swMsg);
|
| - FX_BOOL IsSafeMode(IFXJS_Context* cc);
|
| + CJS_Object* GetJSObject() { return m_pJSObject; };
|
| + operator CJS_Object*() { return m_pJSObject; };
|
|
|
| -protected:
|
| + CPDFSDK_PageView* JSGetPageView(IFXJS_Context* cc);
|
| + int MsgBox(CPDFDoc_Environment* pApp,
|
| + CPDFSDK_PageView* pPageView,
|
| + FX_LPCWSTR swMsg,
|
| + FX_LPCWSTR swTitle = NULL,
|
| + FX_UINT nType = 0,
|
| + FX_UINT nIcon = 0);
|
| + void Alert(CJS_Context* pContext, FX_LPCWSTR swMsg);
|
| + FX_BOOL IsSafeMode(IFXJS_Context* cc);
|
|
|
| - CJS_Object* m_pJSObject;
|
| + protected:
|
| + CJS_Object* m_pJSObject;
|
| };
|
|
|
| -class CJS_Object : public CFX_Object
|
| -{
|
| -public:
|
| - CJS_Object(JSFXObject pObject);
|
| - virtual ~CJS_Object(void);
|
| -
|
| - void MakeWeak();
|
| +class CJS_Object : public CFX_Object {
|
| + public:
|
| + CJS_Object(JSFXObject pObject);
|
| + virtual ~CJS_Object(void);
|
| +
|
| + void MakeWeak();
|
| +
|
| + virtual FX_BOOL IsType(FX_LPCSTR sClassName) { return TRUE; };
|
| + virtual CFX_ByteString GetClassName() { return ""; };
|
|
|
| - virtual FX_BOOL IsType(FX_LPCSTR sClassName){return TRUE;};
|
| - virtual CFX_ByteString GetClassName(){return "";};
|
| + virtual FX_BOOL InitInstance(IFXJS_Context* cc) { return TRUE; };
|
| + virtual FX_BOOL ExitInstance() { return TRUE; };
|
|
|
| - virtual FX_BOOL InitInstance(IFXJS_Context* cc){return TRUE;};
|
| - virtual FX_BOOL ExitInstance(){return TRUE;};
|
| + operator JSFXObject() {
|
| + return v8::Local<v8::Object>::New(m_pIsolate, m_pObject);
|
| + }
|
| + operator CJS_EmbedObj*() { return m_pEmbedObj; };
|
|
|
| - operator JSFXObject () {return v8::Local<v8::Object>::New(m_pIsolate, m_pObject);}
|
| - operator CJS_EmbedObj* (){return m_pEmbedObj;};
|
| + void SetEmbedObject(CJS_EmbedObj* pObj) { m_pEmbedObj = pObj; };
|
| + CJS_EmbedObj* GetEmbedObject() { return m_pEmbedObj; };
|
|
|
| - void SetEmbedObject(CJS_EmbedObj* pObj){m_pEmbedObj = pObj;};
|
| - CJS_EmbedObj * GetEmbedObject(){return m_pEmbedObj;};
|
| + static CPDFSDK_PageView* JSGetPageView(IFXJS_Context* cc);
|
| + static int MsgBox(CPDFDoc_Environment* pApp,
|
| + CPDFSDK_PageView* pPageView,
|
| + FX_LPCWSTR swMsg,
|
| + FX_LPCWSTR swTitle = NULL,
|
| + FX_UINT nType = 0,
|
| + FX_UINT nIcon = 0);
|
| + static void Alert(CJS_Context* pContext, FX_LPCWSTR swMsg);
|
|
|
| - static CPDFSDK_PageView * JSGetPageView(IFXJS_Context* cc);
|
| - static int MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, FX_LPCWSTR swMsg, FX_LPCWSTR swTitle = NULL, FX_UINT nType = 0,FX_UINT nIcon = 0);
|
| - static void Alert(CJS_Context* pContext, FX_LPCWSTR swMsg);
|
| + v8::Isolate* GetIsolate() { return m_pIsolate; }
|
|
|
| - v8::Isolate* GetIsolate() {return m_pIsolate;}
|
| -protected:
|
| - CJS_EmbedObj * m_pEmbedObj;
|
| - v8::Persistent<v8::Object> m_pObject;
|
| - v8::Isolate* m_pIsolate;
|
| + protected:
|
| + CJS_EmbedObj* m_pEmbedObj;
|
| + v8::Persistent<v8::Object> m_pObject;
|
| + v8::Isolate* m_pIsolate;
|
| };
|
|
|
| -struct JS_TIMER_MAP
|
| -{
|
| - FX_UINT nID;
|
| - CJS_Timer * pTimer;
|
| +struct JS_TIMER_MAP {
|
| + FX_UINT nID;
|
| + CJS_Timer* pTimer;
|
| };
|
|
|
| -typedef CFX_ArrayTemplate<JS_TIMER_MAP*> CTimerMapArray;
|
| -
|
| -struct JS_TIMER_MAPARRAY
|
| -{
|
| -public:
|
| - JS_TIMER_MAPARRAY()
|
| - {
|
| - }
|
| -
|
| - ~JS_TIMER_MAPARRAY()
|
| - {
|
| - Reset();
|
| - }
|
| -
|
| - void Reset()
|
| - {
|
| - for (int i=0,sz=m_Array.GetSize(); i<sz; i++)
|
| - delete m_Array.GetAt(i);
|
| -
|
| - m_Array.RemoveAll();
|
| - }
|
| -
|
| - void SetAt(FX_UINT nIndex,CJS_Timer * pTimer)
|
| - {
|
| - int i = Find(nIndex);
|
| -
|
| - if (i>=0)
|
| - {
|
| - if (JS_TIMER_MAP * pMap = m_Array.GetAt(i))
|
| - pMap->pTimer = pTimer;
|
| - }
|
| - else
|
| - {
|
| - if (JS_TIMER_MAP * pMap = new JS_TIMER_MAP)
|
| - {
|
| - pMap->nID = nIndex;
|
| - pMap->pTimer = pTimer;
|
| - m_Array.Add(pMap);
|
| - }
|
| - }
|
| - }
|
| -
|
| - CJS_Timer * GetAt(FX_UINT nIndex)
|
| - {
|
| - int i = Find(nIndex);
|
| -
|
| - if (i>=0)
|
| - {
|
| - if (JS_TIMER_MAP * pMap = m_Array.GetAt(i))
|
| - return pMap->pTimer;
|
| - }
|
| - return NULL;
|
| - }
|
| -
|
| - void RemoveAt(FX_UINT nIndex)
|
| - {
|
| - int i = Find(nIndex);
|
| -
|
| - if (i>=0)
|
| - {
|
| - delete m_Array.GetAt(i);
|
| - m_Array.RemoveAt(i);
|
| - }
|
| - //To prevent potential fake memory leak reported by vc6.
|
| - if(m_Array.GetSize() == 0)
|
| - m_Array.RemoveAll();
|
| - }
|
| -
|
| - int Find(FX_UINT nIndex)
|
| - {
|
| - for (int i=0,sz=m_Array.GetSize(); i<sz; i++)
|
| - {
|
| - if (JS_TIMER_MAP * pMap = m_Array.GetAt(i))
|
| - {
|
| - if (pMap->nID == nIndex)
|
| - return i;
|
| - }
|
| - }
|
| -
|
| - return -1;
|
| - }
|
| -
|
| - CTimerMapArray m_Array;
|
| +typedef CFX_ArrayTemplate<JS_TIMER_MAP*> CTimerMapArray;
|
| +
|
| +struct JS_TIMER_MAPARRAY {
|
| + public:
|
| + JS_TIMER_MAPARRAY() {}
|
| +
|
| + ~JS_TIMER_MAPARRAY() { Reset(); }
|
| +
|
| + void Reset() {
|
| + for (int i = 0, sz = m_Array.GetSize(); i < sz; i++)
|
| + delete m_Array.GetAt(i);
|
| +
|
| + m_Array.RemoveAll();
|
| + }
|
| +
|
| + void SetAt(FX_UINT nIndex, CJS_Timer* pTimer) {
|
| + int i = Find(nIndex);
|
| +
|
| + if (i >= 0) {
|
| + if (JS_TIMER_MAP* pMap = m_Array.GetAt(i))
|
| + pMap->pTimer = pTimer;
|
| + } else {
|
| + if (JS_TIMER_MAP* pMap = new JS_TIMER_MAP) {
|
| + pMap->nID = nIndex;
|
| + pMap->pTimer = pTimer;
|
| + m_Array.Add(pMap);
|
| + }
|
| + }
|
| + }
|
| +
|
| + CJS_Timer* GetAt(FX_UINT nIndex) {
|
| + int i = Find(nIndex);
|
| +
|
| + if (i >= 0) {
|
| + if (JS_TIMER_MAP* pMap = m_Array.GetAt(i))
|
| + return pMap->pTimer;
|
| + }
|
| + return NULL;
|
| + }
|
| +
|
| + void RemoveAt(FX_UINT nIndex) {
|
| + int i = Find(nIndex);
|
| +
|
| + if (i >= 0) {
|
| + delete m_Array.GetAt(i);
|
| + m_Array.RemoveAt(i);
|
| + }
|
| + // To prevent potential fake memory leak reported by vc6.
|
| + if (m_Array.GetSize() == 0)
|
| + m_Array.RemoveAll();
|
| + }
|
| +
|
| + int Find(FX_UINT nIndex) {
|
| + for (int i = 0, sz = m_Array.GetSize(); i < sz; i++) {
|
| + if (JS_TIMER_MAP* pMap = m_Array.GetAt(i)) {
|
| + if (pMap->nID == nIndex)
|
| + return i;
|
| + }
|
| + }
|
| +
|
| + return -1;
|
| + }
|
| +
|
| + CTimerMapArray m_Array;
|
| };
|
|
|
| -static JS_TIMER_MAPARRAY m_sTimeMap;
|
| +static JS_TIMER_MAPARRAY m_sTimeMap;
|
|
|
| class CJS_Runtime;
|
|
|
| -class CJS_Timer
|
| -{
|
| -public:
|
| - CJS_Timer(CJS_EmbedObj * pObj,CPDFDoc_Environment* pApp):
|
| - m_nTimerID(0),
|
| - m_pEmbedObj(pObj),
|
| - m_bProcessing(FALSE),
|
| - m_dwStartTime(0),
|
| - m_dwTimeOut(0),
|
| - m_dwElapse(0),
|
| - m_pRuntime(NULL),
|
| - m_nType(0),
|
| - m_pApp(pApp)
|
| - {
|
| - }
|
| -
|
| - virtual ~CJS_Timer()
|
| - {
|
| - KillJSTimer();
|
| - }
|
| -
|
| -public:
|
| - FX_UINT SetJSTimer(FX_UINT nElapse)
|
| - {
|
| - if (m_nTimerID)KillJSTimer();
|
| - IFX_SystemHandler* pHandler = m_pApp->GetSysHandler();
|
| - m_nTimerID = pHandler->SetTimer(nElapse,TimerProc);
|
| - m_sTimeMap.SetAt(m_nTimerID,this);
|
| - m_dwElapse = nElapse;
|
| - return m_nTimerID;
|
| - };
|
| -
|
| - void KillJSTimer()
|
| - {
|
| - if (m_nTimerID)
|
| - {
|
| - IFX_SystemHandler* pHandler = m_pApp->GetSysHandler();
|
| - pHandler->KillTimer(m_nTimerID);
|
| - m_sTimeMap.RemoveAt(m_nTimerID);
|
| - m_nTimerID = 0;
|
| - }
|
| - };
|
| -
|
| - void SetType(int nType)
|
| - {
|
| - m_nType = nType;
|
| - }
|
| -
|
| - int GetType() const
|
| - {
|
| - return m_nType;
|
| - }
|
| -
|
| - void SetStartTime(FX_DWORD dwStartTime)
|
| - {
|
| - m_dwStartTime = dwStartTime;
|
| - }
|
| -
|
| - FX_DWORD GetStartTime() const
|
| - {
|
| - return m_dwStartTime;
|
| - }
|
| -
|
| - void SetTimeOut(FX_DWORD dwTimeOut)
|
| - {
|
| - m_dwTimeOut = dwTimeOut;
|
| - }
|
| -
|
| - FX_DWORD GetTimeOut() const
|
| - {
|
| - return m_dwTimeOut;
|
| - }
|
| -
|
| - void SetRuntime(CJS_Runtime* pRuntime)
|
| - {
|
| - m_pRuntime = pRuntime;
|
| - }
|
| -
|
| - CJS_Runtime* GetRuntime() const
|
| - {
|
| - return m_pRuntime;
|
| - }
|
| -
|
| - void SetJScript(const CFX_WideString& script)
|
| - {
|
| - m_swJScript = script;
|
| - }
|
| -
|
| - CFX_WideString GetJScript() const
|
| - {
|
| - return m_swJScript;
|
| - }
|
| -
|
| - static void TimerProc(int idEvent)
|
| - {
|
| - if (CJS_Timer * pTimer = m_sTimeMap.GetAt(idEvent))
|
| - {
|
| - if (!pTimer->m_bProcessing)
|
| - {
|
| - pTimer->m_bProcessing = TRUE;
|
| - if (pTimer->m_pEmbedObj) pTimer->m_pEmbedObj->TimerProc(pTimer);
|
| - pTimer->m_bProcessing = FALSE;
|
| - }
|
| - else
|
| - {
|
| - // TRACE(L"BUSY!\n");
|
| - }
|
| - }
|
| - };
|
| -
|
| -private:
|
| - FX_UINT m_nTimerID;
|
| - CJS_EmbedObj* m_pEmbedObj;
|
| - FX_BOOL m_bProcessing;
|
| -
|
| - //data
|
| - FX_DWORD m_dwStartTime;
|
| - FX_DWORD m_dwTimeOut;
|
| - FX_DWORD m_dwElapse;
|
| - CJS_Runtime* m_pRuntime;
|
| - CFX_WideString m_swJScript;
|
| - int m_nType; //0:Interval; 1:TimeOut
|
| -
|
| - CPDFDoc_Environment* m_pApp;
|
| +class CJS_Timer {
|
| + public:
|
| + CJS_Timer(CJS_EmbedObj* pObj, CPDFDoc_Environment* pApp)
|
| + : m_nTimerID(0),
|
| + m_pEmbedObj(pObj),
|
| + m_bProcessing(FALSE),
|
| + m_dwStartTime(0),
|
| + m_dwTimeOut(0),
|
| + m_dwElapse(0),
|
| + m_pRuntime(NULL),
|
| + m_nType(0),
|
| + m_pApp(pApp) {}
|
| +
|
| + virtual ~CJS_Timer() { KillJSTimer(); }
|
| +
|
| + public:
|
| + FX_UINT SetJSTimer(FX_UINT nElapse) {
|
| + if (m_nTimerID)
|
| + KillJSTimer();
|
| + IFX_SystemHandler* pHandler = m_pApp->GetSysHandler();
|
| + m_nTimerID = pHandler->SetTimer(nElapse, TimerProc);
|
| + m_sTimeMap.SetAt(m_nTimerID, this);
|
| + m_dwElapse = nElapse;
|
| + return m_nTimerID;
|
| + };
|
| +
|
| + void KillJSTimer() {
|
| + if (m_nTimerID) {
|
| + IFX_SystemHandler* pHandler = m_pApp->GetSysHandler();
|
| + pHandler->KillTimer(m_nTimerID);
|
| + m_sTimeMap.RemoveAt(m_nTimerID);
|
| + m_nTimerID = 0;
|
| + }
|
| + };
|
| +
|
| + void SetType(int nType) { m_nType = nType; }
|
| +
|
| + int GetType() const { return m_nType; }
|
| +
|
| + void SetStartTime(FX_DWORD dwStartTime) { m_dwStartTime = dwStartTime; }
|
| +
|
| + FX_DWORD GetStartTime() const { return m_dwStartTime; }
|
| +
|
| + void SetTimeOut(FX_DWORD dwTimeOut) { m_dwTimeOut = dwTimeOut; }
|
| +
|
| + FX_DWORD GetTimeOut() const { return m_dwTimeOut; }
|
| +
|
| + void SetRuntime(CJS_Runtime* pRuntime) { m_pRuntime = pRuntime; }
|
| +
|
| + CJS_Runtime* GetRuntime() const { return m_pRuntime; }
|
| +
|
| + void SetJScript(const CFX_WideString& script) { m_swJScript = script; }
|
| +
|
| + CFX_WideString GetJScript() const { return m_swJScript; }
|
| +
|
| + static void TimerProc(int idEvent) {
|
| + if (CJS_Timer* pTimer = m_sTimeMap.GetAt(idEvent)) {
|
| + if (!pTimer->m_bProcessing) {
|
| + pTimer->m_bProcessing = TRUE;
|
| + if (pTimer->m_pEmbedObj)
|
| + pTimer->m_pEmbedObj->TimerProc(pTimer);
|
| + pTimer->m_bProcessing = FALSE;
|
| + } else {
|
| + // TRACE(L"BUSY!\n");
|
| + }
|
| + }
|
| + };
|
| +
|
| + private:
|
| + FX_UINT m_nTimerID;
|
| + CJS_EmbedObj* m_pEmbedObj;
|
| + FX_BOOL m_bProcessing;
|
| +
|
| + // data
|
| + FX_DWORD m_dwStartTime;
|
| + FX_DWORD m_dwTimeOut;
|
| + FX_DWORD m_dwElapse;
|
| + CJS_Runtime* m_pRuntime;
|
| + CFX_WideString m_swJScript;
|
| + int m_nType; // 0:Interval; 1:TimeOut
|
| +
|
| + CPDFDoc_Environment* m_pApp;
|
| };
|
| -#endif //_JS_OBJECT_H_
|
| +#endif //_JS_OBJECT_H_
|
|
|