From 5110c4743751145c4ae1934cd1d83bc6c55bb43f Mon Sep 17 00:00:00 2001 From: John Abd-El-Malek Date: Sat, 17 May 2014 22:33:34 -0700 Subject: Initial commit. --- fpdfsdk/include/javascript/global.h | 85 +++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 fpdfsdk/include/javascript/global.h (limited to 'fpdfsdk/include/javascript/global.h') diff --git a/fpdfsdk/include/javascript/global.h b/fpdfsdk/include/javascript/global.h new file mode 100644 index 0000000000..7effd574a0 --- /dev/null +++ b/fpdfsdk/include/javascript/global.h @@ -0,0 +1,85 @@ +// 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 _GLOBAL_H_ +#define _GLOBAL_H_ + +class CJS_GlobalData; + +struct js_global_data +{ + js_global_data() + { + nType = 0; + dData = 0; + bData = FALSE; + sData = ""; + bPersistent = FALSE; + bDeleted = FALSE; + } + + ~js_global_data() + { + pData.Reset(); + } + int nType; //0:int 1:bool 2:string 3:obj + double dData; + bool bData; + CFX_ByteString sData; + v8::Persistent pData; + bool bPersistent; + bool bDeleted; +}; + +class global_alternate : public CJS_EmbedObj +{ +public: + global_alternate(CJS_Object* pJSObject); + virtual ~global_alternate(); + +public: + FX_BOOL setPersistent(OBJ_METHOD_PARAMS); + +public: + FX_BOOL QueryProperty(FX_LPCWSTR propname); + FX_BOOL DoProperty(IFXJS_Context* cc, FX_LPCWSTR propname, CJS_PropValue & vp, JS_ErrorString & sError); + FX_BOOL DelProperty(IFXJS_Context* cc, FX_LPCWSTR propname, JS_ErrorString & sError); + + void Initial(CPDFDoc_Environment* pApp); + +private: + void UpdateGlobalPersistentVariables(); + void CommitGlobalPersisitentVariables(); + void DestroyGlobalPersisitentVariables(); + FX_BOOL SetGlobalVariables(FX_LPCSTR propname, int nType, + double dData, bool bData, const CFX_ByteString& sData, JSObject pData, bool bDefaultPersistent); + + void ObjectToArray(v8::Handle pObj, CJS_GlobalVariableArray& array); + void PutObjectProperty(v8::Handle obj, CJS_KeyValue* pData); + +private: + CFX_MapByteStringToPtr m_mapGlobal; + CFX_WideString m_sFilePath; + CJS_GlobalData* m_pGlobalData; + CPDFDoc_Environment* m_pApp; +}; + + +class CJS_Global : public CJS_Object +{ +public: + CJS_Global(JSFXObject pObject) : CJS_Object(pObject) {}; + virtual ~CJS_Global(void){}; + + virtual FX_BOOL InitInstance(IFXJS_Context* cc); + + DECLARE_SPECIAL_JS_CLASS(CJS_Global); + + JS_SPECIAL_STATIC_METHOD(setPersistent, global_alternate, global); + +}; + +#endif //_GLOBAL_H_ -- cgit v1.2.3