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