1 // Copyright 2016 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 FXJS_IJS_EVENT_CONTEXT_H_
8 #define FXJS_IJS_EVENT_CONTEXT_H_
9 
10 #include "core/fxcrt/fx_string.h"
11 #include "core/fxcrt/fx_system.h"
12 
13 class CPDF_Bookmark;
14 class CPDF_FormField;
15 class CPDFSDK_Annot;
16 class CPDFSDK_FormFillEnvironment;
17 
18 // Records the details of an event and triggers JS execution for it. There
19 // can be more than one of these at any given time, as JS callbacks to C++
20 // may trigger new events on top of one another.
21 class IJS_EventContext {
22  public:
23   virtual bool RunScript(const WideString& script, WideString* info) = 0;
24 
25   virtual void OnApp_Init() = 0;
26 
27   virtual void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv,
28                           const WideString& strTargetName) = 0;
29   virtual void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
30   virtual void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
31   virtual void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
32   virtual void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
33   virtual void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
34 
35   virtual void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
36   virtual void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
37   virtual void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
38   virtual void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
39 
40   virtual void OnField_MouseDown(bool bModifier,
41                                  bool bShift,
42                                  CPDF_FormField* pTarget) = 0;
43   virtual void OnField_MouseEnter(bool bModifier,
44                                   bool bShift,
45                                   CPDF_FormField* pTarget) = 0;
46   virtual void OnField_MouseExit(bool bModifier,
47                                  bool bShift,
48                                  CPDF_FormField* pTarget) = 0;
49   virtual void OnField_MouseUp(bool bModifier,
50                                bool bShift,
51                                CPDF_FormField* pTarget) = 0;
52   virtual void OnField_Focus(bool bModifier,
53                              bool bShift,
54                              CPDF_FormField* pTarget,
55                              const WideString& Value) = 0;
56   virtual void OnField_Blur(bool bModifier,
57                             bool bShift,
58                             CPDF_FormField* pTarget,
59                             const WideString& Value) = 0;
60 
61   virtual void OnField_Calculate(CPDF_FormField* pSource,
62                                  CPDF_FormField* pTarget,
63                                  WideString& Value,
64                                  bool& bRc) = 0;
65   virtual void OnField_Format(CPDF_FormField* pTarget,
66                               WideString& Value,
67                               bool bWillCommit) = 0;
68   virtual void OnField_Keystroke(WideString& strChange,
69                                  const WideString& strChangeEx,
70                                  bool KeyDown,
71                                  bool bModifier,
72                                  int& nSelEnd,
73                                  int& nSelStart,
74                                  bool bShift,
75                                  CPDF_FormField* pTarget,
76                                  WideString& Value,
77                                  bool bWillCommit,
78                                  bool bFieldFull,
79                                  bool& bRc) = 0;
80   virtual void OnField_Validate(WideString& strChange,
81                                 const WideString& strChangeEx,
82                                 bool bKeyDown,
83                                 bool bModifier,
84                                 bool bShift,
85                                 CPDF_FormField* pTarget,
86                                 WideString& Value,
87                                 bool& bRc) = 0;
88 
89   virtual void OnScreen_Focus(bool bModifier,
90                               bool bShift,
91                               CPDFSDK_Annot* pScreen) = 0;
92   virtual void OnScreen_Blur(bool bModifier,
93                              bool bShift,
94                              CPDFSDK_Annot* pScreen) = 0;
95   virtual void OnScreen_Open(bool bModifier,
96                              bool bShift,
97                              CPDFSDK_Annot* pScreen) = 0;
98   virtual void OnScreen_Close(bool bModifier,
99                               bool bShift,
100                               CPDFSDK_Annot* pScreen) = 0;
101   virtual void OnScreen_MouseDown(bool bModifier,
102                                   bool bShift,
103                                   CPDFSDK_Annot* pScreen) = 0;
104   virtual void OnScreen_MouseUp(bool bModifier,
105                                 bool bShift,
106                                 CPDFSDK_Annot* pScreen) = 0;
107   virtual void OnScreen_MouseEnter(bool bModifier,
108                                    bool bShift,
109                                    CPDFSDK_Annot* pScreen) = 0;
110   virtual void OnScreen_MouseExit(bool bModifier,
111                                   bool bShift,
112                                   CPDFSDK_Annot* pScreen) = 0;
113   virtual void OnScreen_InView(bool bModifier,
114                                bool bShift,
115                                CPDFSDK_Annot* pScreen) = 0;
116   virtual void OnScreen_OutView(bool bModifier,
117                                 bool bShift,
118                                 CPDFSDK_Annot* pScreen) = 0;
119 
120   virtual void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) = 0;
121   virtual void OnLink_MouseUp(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
122 
123   virtual void OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv,
124                            const WideString&) = 0;
125   virtual void OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
126   virtual void OnConsole_Exec() = 0;
127   virtual void OnExternal_Exec() = 0;
128 
129  protected:
~IJS_EventContext()130   virtual ~IJS_EventContext() {}
131 };
132 
133 #endif  // FXJS_IJS_EVENT_CONTEXT_H_
134