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#ifndef FPDFSDK_INCLUDE_JAVASCRIPT_JS_GLOBALDATA_H_ 8#define FPDFSDK_INCLUDE_JAVASCRIPT_JS_GLOBALDATA_H_ 9 10#include "../../../core/include/fxcrt/fx_basic.h" 11 12#define JS_GLOBALDATA_TYPE_NUMBER 0 13#define JS_GLOBALDATA_TYPE_BOOLEAN 1 14#define JS_GLOBALDATA_TYPE_STRING 2 15#define JS_GLOBALDATA_TYPE_OBJECT 3 16#define JS_GLOBALDATA_TYPE_NULL 4 17 18class CJS_KeyValue; 19class CPDFDoc_Environment; 20 21class CJS_GlobalVariableArray 22{ 23public: 24 CJS_GlobalVariableArray(); 25 virtual ~CJS_GlobalVariableArray(); 26 27 void Add(CJS_KeyValue* p); 28 int Count() const; 29 CJS_KeyValue* GetAt(int index) const; 30 void Copy(const CJS_GlobalVariableArray& array); 31 32 void Empty(); 33 34private: 35 CFX_ArrayTemplate<CJS_KeyValue*> array; 36}; 37 38class CJS_KeyValue 39{ 40public: 41 CJS_KeyValue(){} 42 virtual ~CJS_KeyValue(){} 43 44 CFX_ByteString sKey; 45 int nType; //0:int 1:bool 2:string 3:obj 46 double dData; 47 bool bData; 48 CFX_ByteString sData; 49 CJS_GlobalVariableArray objData; 50}; 51 52class CJS_GlobalData_Element 53{ 54public: 55 CJS_GlobalData_Element(){} 56 virtual ~CJS_GlobalData_Element(){} 57 58 CJS_KeyValue data; 59 FX_BOOL bPersistent; 60}; 61 62class CJS_GlobalData 63{ 64public: 65 CJS_GlobalData(CPDFDoc_Environment* pApp); 66 virtual ~CJS_GlobalData(); 67 68public: 69 void SetGlobalVariableNumber(FX_LPCSTR propname, double dData); 70 void SetGlobalVariableBoolean(FX_LPCSTR propname, bool bData); 71 void SetGlobalVariableString(FX_LPCSTR propname, const CFX_ByteString& sData); 72 void SetGlobalVariableObject(FX_LPCSTR propname, const CJS_GlobalVariableArray& array); 73 void SetGlobalVariableNull(FX_LPCSTR propname); 74 75 FX_BOOL SetGlobalVariablePersistent(FX_LPCSTR propname, FX_BOOL bPersistent); 76 FX_BOOL DeleteGlobalVariable(FX_LPCSTR propname); 77 78 FX_INT32 GetSize() const; 79 CJS_GlobalData_Element* GetAt(int index) const; 80 81private: 82 void LoadGlobalPersistentVariables(); 83 void SaveGlobalPersisitentVariables(); 84 85 CJS_GlobalData_Element* GetGlobalVariable(FX_LPCSTR propname); 86 int FindGlobalVariable(FX_LPCSTR propname); 87 88 void LoadFileBuffer(FX_LPCWSTR sFilePath, FX_LPBYTE& pBuffer, FX_INT32& nLength); 89 void WriteFileBuffer(FX_LPCWSTR sFilePath, FX_LPCSTR pBuffer, FX_INT32 nLength); 90 void MakeByteString(const CFX_ByteString& name, CJS_KeyValue* pData, CFX_BinaryBuf& sData); 91 92private: 93 CFX_ArrayTemplate<CJS_GlobalData_Element*> m_arrayGlobalData; 94 CFX_WideString m_sFilePath; 95}; 96 97#endif // FPDFSDK_INCLUDE_JAVASCRIPT_JS_GLOBALDATA_H_ 98