• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #include "../../include/javascript/JavaScript.h"
8 #include "../../include/javascript/IJavaScript.h"
9 #include "../../include/javascript/JS_Define.h"
10 #include "../../include/javascript/JS_Object.h"
11 // #include "../../include/javascript/JS_MsgBox.h"
12 // #include "../../include/javascript/JS_ResMgr.h"
13 #include "../../include/javascript/JS_Context.h"
14 
FXJS_MsgBox(CPDFDoc_Environment * pApp,CPDFSDK_PageView * pPageView,FX_LPCWSTR swMsg,FX_LPCWSTR swTitle,FX_UINT nType,FX_UINT nIcon)15 int FXJS_MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, FX_LPCWSTR swMsg, FX_LPCWSTR swTitle, FX_UINT nType, FX_UINT nIcon)
16 {
17 	int nRet = 0;
18 
19 	if(pApp)
20 	{
21 		CPDFSDK_Document* pDoc = pApp->GetCurrentDoc();
22 		if(pDoc)
23 			pDoc->KillFocusAnnot();
24 		nRet = pApp->JS_appAlert(swMsg, swTitle, nType, nIcon);
25 	}
26 
27 	return nRet;
28 }
29 
FXJS_GetPageView(IFXJS_Context * cc)30 CPDFSDK_PageView* FXJS_GetPageView(IFXJS_Context* cc)
31 {
32 	if (CJS_Context* pContext = (CJS_Context *)cc)
33 	{
34 		if (pContext->GetReaderDocument())
35 			return NULL;
36 	}
37 	return NULL;
38 }
39 
40 /* ---------------------------------  CJS_EmbedObj --------------------------------- */
41 
CJS_EmbedObj(CJS_Object * pJSObject)42 CJS_EmbedObj::CJS_EmbedObj(CJS_Object* pJSObject) :
43 	m_pJSObject(pJSObject)
44 {
45 }
46 
~CJS_EmbedObj()47 CJS_EmbedObj::~CJS_EmbedObj()
48 {
49 	m_pJSObject = NULL;
50 
51 }
52 
JSGetPageView(IFXJS_Context * cc)53 CPDFSDK_PageView* CJS_EmbedObj::JSGetPageView(IFXJS_Context* cc)
54 {
55 	return FXJS_GetPageView(cc);
56 }
57 
MsgBox(CPDFDoc_Environment * pApp,CPDFSDK_PageView * pPageView,FX_LPCWSTR swMsg,FX_LPCWSTR swTitle,FX_UINT nType,FX_UINT nIcon)58 int CJS_EmbedObj::MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView,FX_LPCWSTR swMsg,FX_LPCWSTR swTitle,FX_UINT nType,FX_UINT nIcon)
59 {
60 	return FXJS_MsgBox(pApp, pPageView, swMsg, swTitle, nType, nIcon);
61 }
62 
Alert(CJS_Context * pContext,FX_LPCWSTR swMsg)63 void CJS_EmbedObj::Alert(CJS_Context* pContext, FX_LPCWSTR swMsg)
64 {
65 	CJS_Object::Alert(pContext, swMsg);
66 }
67 
BeginTimer(CPDFDoc_Environment * pApp,FX_UINT nElapse)68 CJS_Timer* CJS_EmbedObj::BeginTimer(CPDFDoc_Environment * pApp,FX_UINT nElapse)
69 {
70 	CJS_Timer* pTimer = new CJS_Timer(this,pApp);
71 	pTimer->SetJSTimer(nElapse);
72 
73 	return pTimer;
74 }
75 
EndTimer(CJS_Timer * pTimer)76 void CJS_EmbedObj::EndTimer(CJS_Timer* pTimer)
77 {
78 	ASSERT(pTimer != NULL);
79 	pTimer->KillJSTimer();
80 	delete pTimer;
81 }
82 
IsSafeMode(IFXJS_Context * cc)83 FX_BOOL	CJS_EmbedObj::IsSafeMode(IFXJS_Context* cc)
84 {
85 	ASSERT(cc != NULL);
86 
87 	return TRUE;
88 }
89 
90 /* ---------------------------------  CJS_Object --------------------------------- */
FreeObject(const v8::WeakCallbackData<v8::Object,CJS_Object> & data)91 void  FreeObject(const v8::WeakCallbackData<v8::Object, CJS_Object>& data)
92 {
93 	CJS_Object* pJSObj  = data.GetParameter();
94 	if(pJSObj)
95 	{
96 		pJSObj->ExitInstance();
97 		delete pJSObj;
98 	}
99 	v8::Local<v8::Object> obj = data.GetValue();
100 	JS_FreePrivate(obj);
101 }
102 
CJS_Object(JSFXObject pObject)103 CJS_Object::CJS_Object(JSFXObject pObject) :m_pEmbedObj(NULL)
104 {
105 	v8::Local<v8::Context> context = pObject->CreationContext();
106 	m_pIsolate = context->GetIsolate();
107 	m_pObject.Reset(m_pIsolate, pObject);
108 };
109 
~CJS_Object(void)110 CJS_Object::~CJS_Object(void)
111 {
112 	delete m_pEmbedObj;
113 	m_pEmbedObj = NULL;
114 
115 	m_pObject.Reset();
116 };
117 
MakeWeak()118 void	CJS_Object::MakeWeak()
119 {
120 	m_pObject.SetWeak(this, FreeObject);
121 }
122 
JSGetPageView(IFXJS_Context * cc)123 CPDFSDK_PageView* CJS_Object::JSGetPageView(IFXJS_Context* cc)
124 {
125 	return FXJS_GetPageView(cc);
126 }
127 
MsgBox(CPDFDoc_Environment * pApp,CPDFSDK_PageView * pPageView,FX_LPCWSTR swMsg,FX_LPCWSTR swTitle,FX_UINT nType,FX_UINT nIcon)128 int CJS_Object::MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, FX_LPCWSTR swMsg, FX_LPCWSTR swTitle, FX_UINT nType, FX_UINT nIcon)
129 {
130 	return FXJS_MsgBox(pApp, pPageView, swMsg, swTitle, nType, nIcon);
131 }
132 
Alert(CJS_Context * pContext,FX_LPCWSTR swMsg)133 void CJS_Object::Alert(CJS_Context* pContext, FX_LPCWSTR swMsg)
134 {
135 	ASSERT(pContext != NULL);
136 
137 	if (pContext->IsMsgBoxEnabled())
138 	{
139 		CPDFDoc_Environment* pApp = pContext->GetReaderApp();
140 		if(pApp)
141 			pApp->JS_appAlert(swMsg, NULL, 0, 3);
142 	}
143 }
144 
145 
146