1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2016 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef FXJS_IJS_EVENT_CONTEXT_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FXJS_IJS_EVENT_CONTEXT_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/widestring.h" 11*3ac0a46fSAndroid Build Coastguard Worker #include "fxjs/ijs_runtime.h" 12*3ac0a46fSAndroid Build Coastguard Worker #include "third_party/abseil-cpp/absl/types/optional.h" 13*3ac0a46fSAndroid Build Coastguard Worker 14*3ac0a46fSAndroid Build Coastguard Worker class CPDF_FormField; 15*3ac0a46fSAndroid Build Coastguard Worker 16*3ac0a46fSAndroid Build Coastguard Worker // Records the details of an event and triggers JS execution for it. There 17*3ac0a46fSAndroid Build Coastguard Worker // can be more than one of these at any given time, as JS callbacks to C++ 18*3ac0a46fSAndroid Build Coastguard Worker // may trigger new events on top of one another. 19*3ac0a46fSAndroid Build Coastguard Worker class IJS_EventContext { 20*3ac0a46fSAndroid Build Coastguard Worker public: 21*3ac0a46fSAndroid Build Coastguard Worker virtual ~IJS_EventContext() = default; 22*3ac0a46fSAndroid Build Coastguard Worker 23*3ac0a46fSAndroid Build Coastguard Worker virtual absl::optional<IJS_Runtime::JS_Error> RunScript( 24*3ac0a46fSAndroid Build Coastguard Worker const WideString& script) = 0; 25*3ac0a46fSAndroid Build Coastguard Worker 26*3ac0a46fSAndroid Build Coastguard Worker virtual void OnDoc_Open(const WideString& strTargetName) = 0; 27*3ac0a46fSAndroid Build Coastguard Worker virtual void OnDoc_WillPrint() = 0; 28*3ac0a46fSAndroid Build Coastguard Worker virtual void OnDoc_DidPrint() = 0; 29*3ac0a46fSAndroid Build Coastguard Worker virtual void OnDoc_WillSave() = 0; 30*3ac0a46fSAndroid Build Coastguard Worker virtual void OnDoc_DidSave() = 0; 31*3ac0a46fSAndroid Build Coastguard Worker virtual void OnDoc_WillClose() = 0; 32*3ac0a46fSAndroid Build Coastguard Worker 33*3ac0a46fSAndroid Build Coastguard Worker virtual void OnPage_Open() = 0; 34*3ac0a46fSAndroid Build Coastguard Worker virtual void OnPage_Close() = 0; 35*3ac0a46fSAndroid Build Coastguard Worker virtual void OnPage_InView() = 0; 36*3ac0a46fSAndroid Build Coastguard Worker virtual void OnPage_OutView() = 0; 37*3ac0a46fSAndroid Build Coastguard Worker 38*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_MouseDown(bool bModifier, 39*3ac0a46fSAndroid Build Coastguard Worker bool bShift, 40*3ac0a46fSAndroid Build Coastguard Worker CPDF_FormField* pTarget) = 0; 41*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_MouseEnter(bool bModifier, 42*3ac0a46fSAndroid Build Coastguard Worker bool bShift, 43*3ac0a46fSAndroid Build Coastguard Worker CPDF_FormField* pTarget) = 0; 44*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_MouseExit(bool bModifier, 45*3ac0a46fSAndroid Build Coastguard Worker bool bShift, 46*3ac0a46fSAndroid Build Coastguard Worker CPDF_FormField* pTarget) = 0; 47*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_MouseUp(bool bModifier, 48*3ac0a46fSAndroid Build Coastguard Worker bool bShift, 49*3ac0a46fSAndroid Build Coastguard Worker CPDF_FormField* pTarget) = 0; 50*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_Focus(bool bModifier, 51*3ac0a46fSAndroid Build Coastguard Worker bool bShift, 52*3ac0a46fSAndroid Build Coastguard Worker CPDF_FormField* pTarget, 53*3ac0a46fSAndroid Build Coastguard Worker WideString* Value) = 0; 54*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_Blur(bool bModifier, 55*3ac0a46fSAndroid Build Coastguard Worker bool bShift, 56*3ac0a46fSAndroid Build Coastguard Worker CPDF_FormField* pTarget, 57*3ac0a46fSAndroid Build Coastguard Worker WideString* Value) = 0; 58*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_Calculate(CPDF_FormField* pSource, 59*3ac0a46fSAndroid Build Coastguard Worker CPDF_FormField* pTarget, 60*3ac0a46fSAndroid Build Coastguard Worker WideString* Value, 61*3ac0a46fSAndroid Build Coastguard Worker bool* bRc) = 0; 62*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_Format(CPDF_FormField* pTarget, WideString* Value) = 0; 63*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_Keystroke(WideString* strChange, 64*3ac0a46fSAndroid Build Coastguard Worker const WideString& strChangeEx, 65*3ac0a46fSAndroid Build Coastguard Worker bool KeyDown, 66*3ac0a46fSAndroid Build Coastguard Worker bool bModifier, 67*3ac0a46fSAndroid Build Coastguard Worker int* nSelEnd, 68*3ac0a46fSAndroid Build Coastguard Worker int* nSelStart, 69*3ac0a46fSAndroid Build Coastguard Worker bool bShift, 70*3ac0a46fSAndroid Build Coastguard Worker CPDF_FormField* pTarget, 71*3ac0a46fSAndroid Build Coastguard Worker WideString* Value, 72*3ac0a46fSAndroid Build Coastguard Worker bool bWillCommit, 73*3ac0a46fSAndroid Build Coastguard Worker bool bFieldFull, 74*3ac0a46fSAndroid Build Coastguard Worker bool* bRc) = 0; 75*3ac0a46fSAndroid Build Coastguard Worker virtual void OnField_Validate(WideString* strChange, 76*3ac0a46fSAndroid Build Coastguard Worker const WideString& strChangeEx, 77*3ac0a46fSAndroid Build Coastguard Worker bool bKeyDown, 78*3ac0a46fSAndroid Build Coastguard Worker bool bModifier, 79*3ac0a46fSAndroid Build Coastguard Worker bool bShift, 80*3ac0a46fSAndroid Build Coastguard Worker CPDF_FormField* pTarget, 81*3ac0a46fSAndroid Build Coastguard Worker WideString* Value, 82*3ac0a46fSAndroid Build Coastguard Worker bool* bRc) = 0; 83*3ac0a46fSAndroid Build Coastguard Worker 84*3ac0a46fSAndroid Build Coastguard Worker virtual void OnExternal_Exec() = 0; 85*3ac0a46fSAndroid Build Coastguard Worker }; 86*3ac0a46fSAndroid Build Coastguard Worker 87*3ac0a46fSAndroid Build Coastguard Worker #endif // FXJS_IJS_EVENT_CONTEXT_H_ 88