blob: 34ad8e1f0a343624bf037900c8e9c2939b18e5f3 [file] [log] [blame]
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07001// 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
Bruce Dawsonb4649dc2015-01-05 13:26:17 -080015JS_TIMER_MAPARRAY& GetTimeMap()
16{
17 // Leak the timer array at shutdown.
18 static auto* timeMap = new JS_TIMER_MAPARRAY;
19 return *timeMap;
20}
21
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070022int FXJS_MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, FX_LPCWSTR swMsg, FX_LPCWSTR swTitle, FX_UINT nType, FX_UINT nIcon)
23{
24 int nRet = 0;
25
Bo Xufdc00a72014-10-28 23:03:33 -070026 if (pApp)
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070027 {
28 CPDFSDK_Document* pDoc = pApp->GetCurrentDoc();
29 if(pDoc)
30 pDoc->KillFocusAnnot();
31 nRet = pApp->JS_appAlert(swMsg, swTitle, nType, nIcon);
32 }
33
34 return nRet;
35}
36
37CPDFSDK_PageView* FXJS_GetPageView(IFXJS_Context* cc)
38{
39 if (CJS_Context* pContext = (CJS_Context *)cc)
40 {
41 if (pContext->GetReaderDocument())
42 return NULL;
43 }
44 return NULL;
45}
46
47/* --------------------------------- CJS_EmbedObj --------------------------------- */
48
49CJS_EmbedObj::CJS_EmbedObj(CJS_Object* pJSObject) :
50 m_pJSObject(pJSObject)
51{
52}
53
54CJS_EmbedObj::~CJS_EmbedObj()
55{
56 m_pJSObject = NULL;
57
58}
59
60CPDFSDK_PageView* CJS_EmbedObj::JSGetPageView(IFXJS_Context* cc)
61{
62 return FXJS_GetPageView(cc);
63}
64
65int CJS_EmbedObj::MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView,FX_LPCWSTR swMsg,FX_LPCWSTR swTitle,FX_UINT nType,FX_UINT nIcon)
66{
67 return FXJS_MsgBox(pApp, pPageView, swMsg, swTitle, nType, nIcon);
68}
69
70void CJS_EmbedObj::Alert(CJS_Context* pContext, FX_LPCWSTR swMsg)
71{
72 CJS_Object::Alert(pContext, swMsg);
73}
74
Bo Xufdc00a72014-10-28 23:03:33 -070075CJS_Timer* CJS_EmbedObj::BeginTimer(CPDFDoc_Environment* pApp, FX_UINT nElapse)
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070076{
77 CJS_Timer* pTimer = new CJS_Timer(this,pApp);
78 pTimer->SetJSTimer(nElapse);
79
80 return pTimer;
81}
82
83void CJS_EmbedObj::EndTimer(CJS_Timer* pTimer)
84{
85 ASSERT(pTimer != NULL);
86 pTimer->KillJSTimer();
87 delete pTimer;
88}
89
90FX_BOOL CJS_EmbedObj::IsSafeMode(IFXJS_Context* cc)
91{
92 ASSERT(cc != NULL);
93
94 return TRUE;
95}
96
97/* --------------------------------- CJS_Object --------------------------------- */
98void FreeObject(const v8::WeakCallbackData<v8::Object, CJS_Object>& data)
99{
100 CJS_Object* pJSObj = data.GetParameter();
101 if(pJSObj)
102 {
103 pJSObj->ExitInstance();
104 delete pJSObj;
105 }
106 v8::Local<v8::Object> obj = data.GetValue();
107 JS_FreePrivate(obj);
108}
109
110CJS_Object::CJS_Object(JSFXObject pObject) :m_pEmbedObj(NULL)
111{
112 v8::Local<v8::Context> context = pObject->CreationContext();
113 m_pIsolate = context->GetIsolate();
114 m_pObject.Reset(m_pIsolate, pObject);
115};
116
117CJS_Object::~CJS_Object(void)
118{
119 delete m_pEmbedObj;
120 m_pEmbedObj = NULL;
121
122 m_pObject.Reset();
123};
124
125void CJS_Object::MakeWeak()
126{
127 m_pObject.SetWeak(this, FreeObject);
128}
129
130CPDFSDK_PageView* CJS_Object::JSGetPageView(IFXJS_Context* cc)
131{
132 return FXJS_GetPageView(cc);
133}
134
135int CJS_Object::MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, FX_LPCWSTR swMsg, FX_LPCWSTR swTitle, FX_UINT nType, FX_UINT nIcon)
136{
137 return FXJS_MsgBox(pApp, pPageView, swMsg, swTitle, nType, nIcon);
138}
139
140void CJS_Object::Alert(CJS_Context* pContext, FX_LPCWSTR swMsg)
141{
142 ASSERT(pContext != NULL);
143
144 if (pContext->IsMsgBoxEnabled())
145 {
146 CPDFDoc_Environment* pApp = pContext->GetReaderApp();
147 if(pApp)
148 pApp->JS_appAlert(swMsg, NULL, 0, 3);
149 }
150}
151
152