blob: 8e9d23c8c4036d74bda8580e99e93b9261631522 [file] [log] [blame]
kumarashishg826308d2023-06-23 13:21:22 +00001// Copyright 2016 The PDFium Authors
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -07002// 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
kumarashishg826308d2023-06-23 13:21:22 +000010#include "core/fxcrt/widestring.h"
Haibo Huang49cc9302020-04-27 16:14:24 -070011#include "fxjs/ijs_runtime.h"
kumarashishg826308d2023-06-23 13:21:22 +000012#include "third_party/abseil-cpp/absl/types/optional.h"
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070013
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070014class CPDF_FormField;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070015
16// Records the details of an event and triggers JS execution for it. There
17// can be more than one of these at any given time, as JS callbacks to C++
18// may trigger new events on top of one another.
19class IJS_EventContext {
20 public:
Haibo Huang49cc9302020-04-27 16:14:24 -070021 virtual ~IJS_EventContext() = default;
22
kumarashishg826308d2023-06-23 13:21:22 +000023 virtual absl::optional<IJS_Runtime::JS_Error> RunScript(
Haibo Huang49cc9302020-04-27 16:14:24 -070024 const WideString& script) = 0;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070025
kumarashishg826308d2023-06-23 13:21:22 +000026 virtual void OnDoc_Open(const WideString& strTargetName) = 0;
27 virtual void OnDoc_WillPrint() = 0;
28 virtual void OnDoc_DidPrint() = 0;
29 virtual void OnDoc_WillSave() = 0;
30 virtual void OnDoc_DidSave() = 0;
31 virtual void OnDoc_WillClose() = 0;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070032
kumarashishg826308d2023-06-23 13:21:22 +000033 virtual void OnPage_Open() = 0;
34 virtual void OnPage_Close() = 0;
35 virtual void OnPage_InView() = 0;
36 virtual void OnPage_OutView() = 0;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070037
38 virtual void OnField_MouseDown(bool bModifier,
39 bool bShift,
40 CPDF_FormField* pTarget) = 0;
41 virtual void OnField_MouseEnter(bool bModifier,
42 bool bShift,
43 CPDF_FormField* pTarget) = 0;
44 virtual void OnField_MouseExit(bool bModifier,
45 bool bShift,
46 CPDF_FormField* pTarget) = 0;
47 virtual void OnField_MouseUp(bool bModifier,
48 bool bShift,
49 CPDF_FormField* pTarget) = 0;
50 virtual void OnField_Focus(bool bModifier,
51 bool bShift,
52 CPDF_FormField* pTarget,
Haibo Huang49cc9302020-04-27 16:14:24 -070053 WideString* Value) = 0;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070054 virtual void OnField_Blur(bool bModifier,
55 bool bShift,
56 CPDF_FormField* pTarget,
Haibo Huang49cc9302020-04-27 16:14:24 -070057 WideString* Value) = 0;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070058 virtual void OnField_Calculate(CPDF_FormField* pSource,
59 CPDF_FormField* pTarget,
Haibo Huang49cc9302020-04-27 16:14:24 -070060 WideString* Value,
61 bool* bRc) = 0;
62 virtual void OnField_Format(CPDF_FormField* pTarget, WideString* Value) = 0;
63 virtual void OnField_Keystroke(WideString* strChange,
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070064 const WideString& strChangeEx,
65 bool KeyDown,
66 bool bModifier,
Haibo Huang49cc9302020-04-27 16:14:24 -070067 int* nSelEnd,
68 int* nSelStart,
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070069 bool bShift,
70 CPDF_FormField* pTarget,
Haibo Huang49cc9302020-04-27 16:14:24 -070071 WideString* Value,
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070072 bool bWillCommit,
73 bool bFieldFull,
Haibo Huang49cc9302020-04-27 16:14:24 -070074 bool* bRc) = 0;
75 virtual void OnField_Validate(WideString* strChange,
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070076 const WideString& strChangeEx,
77 bool bKeyDown,
78 bool bModifier,
79 bool bShift,
80 CPDF_FormField* pTarget,
Haibo Huang49cc9302020-04-27 16:14:24 -070081 WideString* Value,
82 bool* bRc) = 0;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070083
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070084 virtual void OnExternal_Exec() = 0;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070085};
86
87#endif // FXJS_IJS_EVENT_CONTEXT_H_