• 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 #ifndef _GLOBAL_H_
8 #define _GLOBAL_H_
9 
10 class CJS_GlobalData;
11 
12 struct js_global_data
13 {
js_global_datajs_global_data14 	js_global_data()
15 	{
16 		nType = 0;
17 		dData = 0;
18 		bData = FALSE;
19 		sData = "";
20 		bPersistent = FALSE;
21 		bDeleted = FALSE;
22 	}
23 
~js_global_datajs_global_data24 	~js_global_data()
25 	{
26 		pData.Reset();
27 	}
28 	int					nType; //0:int 1:bool 2:string 3:obj
29 	double				dData;
30 	bool				bData;
31 	CFX_ByteString		sData;
32 	v8::Persistent<v8::Object>  pData;
33 	bool				bPersistent;
34 	bool				bDeleted;
35 };
36 
37 class global_alternate : public CJS_EmbedObj
38 {
39 public:
40 	global_alternate(CJS_Object* pJSObject);
41 	virtual ~global_alternate();
42 
43 public:
44 	FX_BOOL						setPersistent(OBJ_METHOD_PARAMS);
45 
46 public:
47 	FX_BOOL						QueryProperty(FX_LPCWSTR propname);
48 	FX_BOOL						DoProperty(IFXJS_Context* cc, FX_LPCWSTR propname, CJS_PropValue & vp, JS_ErrorString & sError);
49 	FX_BOOL						DelProperty(IFXJS_Context* cc, FX_LPCWSTR propname, JS_ErrorString & sError);
50 
51 	void						Initial(CPDFDoc_Environment* pApp);
52 
53 private:
54 	void						UpdateGlobalPersistentVariables();
55 	void						CommitGlobalPersisitentVariables();
56 	void						DestroyGlobalPersisitentVariables();
57 	FX_BOOL						SetGlobalVariables(FX_LPCSTR propname, int nType,
58 									double dData, bool bData, const CFX_ByteString& sData, JSObject pData, bool bDefaultPersistent);
59 
60 	void						ObjectToArray(v8::Handle<v8::Object> pObj, CJS_GlobalVariableArray& array);
61 	void						PutObjectProperty(v8::Handle<v8::Object> obj, CJS_KeyValue* pData);
62 
63 private:
64 	CFX_MapByteStringToPtr		m_mapGlobal;
65 	CFX_WideString				m_sFilePath;
66 	CJS_GlobalData*				m_pGlobalData;
67 	CPDFDoc_Environment*				m_pApp;
68 };
69 
70 
71 class CJS_Global : public CJS_Object
72 {
73 public:
CJS_Global(JSFXObject pObject)74 	CJS_Global(JSFXObject pObject) : CJS_Object(pObject) {};
~CJS_Global(void)75 	virtual ~CJS_Global(void){};
76 
77 	virtual FX_BOOL	InitInstance(IFXJS_Context* cc);
78 
79 	DECLARE_SPECIAL_JS_CLASS(CJS_Global);
80 
81 	JS_SPECIAL_STATIC_METHOD(setPersistent, global_alternate, global);
82 
83 };
84 
85 #endif //_GLOBAL_H_
86