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#ifndef _IJAVASCRIPT_H_
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _IJAVASCRIPT_H_
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass IFXJS_Context
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				Compile(const CFX_WideString& script, CFX_WideString& info) = 0;
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				RunScript(const CFX_WideString& script, CFX_WideString& info) = 0;
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnApp_Init() = 0;
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDoc_Open(CPDFSDK_Document* pDoc, const CFX_WideString& strTargetName) = 0;
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDoc_WillPrint(CPDFSDK_Document* pDoc) = 0;
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDoc_DidPrint(CPDFSDK_Document* pDoc) = 0;
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDoc_WillSave(CPDFSDK_Document* pDoc) = 0;
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDoc_DidSave(CPDFSDK_Document* pDoc) = 0;
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDoc_WillClose(CPDFSDK_Document* pDoc) = 0;
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnPage_Open(CPDFSDK_Document* pTarget) = 0;
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnPage_Close(CPDFSDK_Document* pTarget) = 0;
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnPage_InView(CPDFSDK_Document* pTarget) = 0;
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnPage_OutView(CPDFSDK_Document* pTarget) = 0;
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget) = 0;
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget) = 0;
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget) = 0;
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget) = 0;
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, const CFX_WideString& Value) = 0;
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, const CFX_WideString& Value) = 0;
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_Calculate(CPDF_FormField* pSource, CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL& bRc) = 0;
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_Format(int nCommitKey, CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL bWillCommit) = 0;
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_Keystroke(int nCommitKey, CFX_WideString& strChange, const CFX_WideString& strChangeEx,
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov									FX_BOOL KeyDown, FX_BOOL bModifier, int &nSelEnd,int &nSelStart, FX_BOOL bShift,
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov									CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL bWillCommit,
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov									FX_BOOL bFieldFull, FX_BOOL &bRc) = 0;
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnField_Validate(CFX_WideString& strChange, const CFX_WideString& strChangeEx, FX_BOOL bKeyDown,
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov									FX_BOOL bModifier, FX_BOOL bShift, CPDF_FormField* pTarget, CFX_WideString& Value, FX_BOOL& bRc) = 0;
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_Focus(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_Blur(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_Open(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_Close(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_MouseDown(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_MouseUp(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_MouseEnter(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_MouseExit(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_InView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnScreen_OutView(FX_BOOL bModifier, FX_BOOL bShift, CPDFSDK_Annot* pScreen) = 0;
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) = 0;
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnLink_MouseUp(CPDFSDK_Document* pTarget) = 0;
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnMenu_Exec(CPDFSDK_Document* pTarget, const CFX_WideString &) = 0;
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnBatchExec(CPDFSDK_Document* pTarget) = 0;
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnConsole_Exec() = 0;
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnExternal_Exec() = 0;
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				EnableMessageBox(FX_BOOL bEnable) = 0;
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass IFXJS_Runtime
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual IFXJS_Context*		NewContext() = 0;
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				ReleaseContext(IFXJS_Context * pContext) = 0;
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual IFXJS_Context*		GetCurrentContext() = 0;
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				SetReaderDocument(CPDFSDK_Document* pReaderDoc) = 0;
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual	CPDFSDK_Document*	GetReaderDocument() = 0;
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				GetObjectNames(CFX_WideStringArray& array) = 0;
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				GetObjectConsts(const CFX_WideString& swObjName, CFX_WideStringArray& array) = 0;
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				GetObjectProps(const CFX_WideString& swObjName, CFX_WideStringArray& array) = 0;
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				GetObjectMethods(const CFX_WideString& swObjName, CFX_WideStringArray& array) = 0;
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				Exit() = 0;
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				Enter() = 0;
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				IsEntered() = 0;
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFDoc_Environment;
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CJS_GlobalData;
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CJS_RuntimeFactory
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_RuntimeFactory():m_bInit(FALSE),m_nRef(0),m_pGlobalData(NULL),m_nGlobalDataCount(0) {}
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	~CJS_RuntimeFactory();
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	IFXJS_Runtime*					NewJSRuntime(CPDFDoc_Environment* pApp);
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	void							DeleteJSRuntime(IFXJS_Runtime* pRuntime);
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	void							AddRef();
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	void							Release();
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_GlobalData*					NewGlobalData(CPDFDoc_Environment* pApp);
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	void							ReleaseGlobalData();
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate:
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_BOOL m_bInit;
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int m_nRef;
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_GlobalData*					m_pGlobalData;
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_INT32						m_nGlobalDataCount;
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif //_IJAVASCRIPT_H_
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
113