blob: 49309003371771579fb04d63b9347d769b24cc30 [file] [log] [blame]
Tom Sepez452b4f32015-10-13 09:27:27 -07001// Copyright 2015 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
Lei Zhangaa8bf7e2015-12-24 19:13:32 -08007#include <memory>
8
dsinclair64376be2016-03-31 20:03:24 -07009#include "fpdfsdk/include/fsdk_mgr.h"
10#include "fpdfsdk/javascript/ijs_context.h"
11#include "fpdfsdk/javascript/ijs_runtime.h"
Tom Sepez452b4f32015-10-13 09:27:27 -070012
13class CJS_ContextStub final : public IJS_Context {
14 public:
15 CJS_ContextStub() {}
16 ~CJS_ContextStub() override {}
17
18 // IJS_Context:
19 FX_BOOL RunScript(const CFX_WideString& script,
Tom Sepez33420902015-10-13 15:00:10 -070020 CFX_WideString* info) override {
Tom Sepez452b4f32015-10-13 09:27:27 -070021 return FALSE;
22 }
23
24 void OnApp_Init() override {}
25 void OnDoc_Open(CPDFSDK_Document* pDoc,
26 const CFX_WideString& strTargetName) override {}
27 void OnDoc_WillPrint(CPDFSDK_Document* pDoc) override {}
28 void OnDoc_DidPrint(CPDFSDK_Document* pDoc) override {}
29 void OnDoc_WillSave(CPDFSDK_Document* pDoc) override {}
30 void OnDoc_DidSave(CPDFSDK_Document* pDoc) override {}
31 void OnDoc_WillClose(CPDFSDK_Document* pDoc) override {}
32 void OnPage_Open(CPDFSDK_Document* pTarget) override {}
33 void OnPage_Close(CPDFSDK_Document* pTarget) override {}
34 void OnPage_InView(CPDFSDK_Document* pTarget) override {}
35 void OnPage_OutView(CPDFSDK_Document* pTarget) override {}
36 void OnField_MouseDown(FX_BOOL bModifier,
37 FX_BOOL bShift,
38 CPDF_FormField* pTarget) override {}
39 void OnField_MouseEnter(FX_BOOL bModifier,
40 FX_BOOL bShift,
41 CPDF_FormField* pTarget) override {}
42 void OnField_MouseExit(FX_BOOL bModifier,
43 FX_BOOL bShift,
44 CPDF_FormField* pTarget) override {}
45 void OnField_MouseUp(FX_BOOL bModifier,
46 FX_BOOL bShift,
47 CPDF_FormField* pTarget) override {}
48 void OnField_Focus(FX_BOOL bModifier,
49 FX_BOOL bShift,
50 CPDF_FormField* pTarget,
51 const CFX_WideString& Value) override {}
52 void OnField_Blur(FX_BOOL bModifier,
53 FX_BOOL bShift,
54 CPDF_FormField* pTarget,
55 const CFX_WideString& Value) override {}
56 void OnField_Calculate(CPDF_FormField* pSource,
57 CPDF_FormField* pTarget,
58 CFX_WideString& Value,
59 FX_BOOL& bRc) override {}
60 void OnField_Format(CPDF_FormField* pTarget,
61 CFX_WideString& Value,
62 FX_BOOL bWillCommit) override {}
63 void OnField_Keystroke(CFX_WideString& strChange,
64 const CFX_WideString& strChangeEx,
65 FX_BOOL KeyDown,
66 FX_BOOL bModifier,
67 int& nSelEnd,
68 int& nSelStart,
69 FX_BOOL bShift,
70 CPDF_FormField* pTarget,
71 CFX_WideString& Value,
72 FX_BOOL bWillCommit,
73 FX_BOOL bFieldFull,
74 FX_BOOL& bRc) override {}
75 void OnField_Validate(CFX_WideString& strChange,
76 const CFX_WideString& strChangeEx,
77 FX_BOOL bKeyDown,
78 FX_BOOL bModifier,
79 FX_BOOL bShift,
80 CPDF_FormField* pTarget,
81 CFX_WideString& Value,
82 FX_BOOL& bRc) override {}
83 void OnScreen_Focus(FX_BOOL bModifier,
84 FX_BOOL bShift,
85 CPDFSDK_Annot* pScreen) override {}
86 void OnScreen_Blur(FX_BOOL bModifier,
87 FX_BOOL bShift,
88 CPDFSDK_Annot* pScreen) override {}
89 void OnScreen_Open(FX_BOOL bModifier,
90 FX_BOOL bShift,
91 CPDFSDK_Annot* pScreen) override {}
92 void OnScreen_Close(FX_BOOL bModifier,
93 FX_BOOL bShift,
94 CPDFSDK_Annot* pScreen) override {}
95 void OnScreen_MouseDown(FX_BOOL bModifier,
96 FX_BOOL bShift,
97 CPDFSDK_Annot* pScreen) override {}
98 void OnScreen_MouseUp(FX_BOOL bModifier,
99 FX_BOOL bShift,
100 CPDFSDK_Annot* pScreen) override {}
101 void OnScreen_MouseEnter(FX_BOOL bModifier,
102 FX_BOOL bShift,
103 CPDFSDK_Annot* pScreen) override {}
104 void OnScreen_MouseExit(FX_BOOL bModifier,
105 FX_BOOL bShift,
106 CPDFSDK_Annot* pScreen) override {}
107 void OnScreen_InView(FX_BOOL bModifier,
108 FX_BOOL bShift,
109 CPDFSDK_Annot* pScreen) override {}
110 void OnScreen_OutView(FX_BOOL bModifier,
111 FX_BOOL bShift,
112 CPDFSDK_Annot* pScreen) override {}
113 void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) override {}
114 void OnLink_MouseUp(CPDFSDK_Document* pTarget) override {}
115 void OnMenu_Exec(CPDFSDK_Document* pTarget, const CFX_WideString&) override {}
116 void OnBatchExec(CPDFSDK_Document* pTarget) override {}
117 void OnConsole_Exec() override {}
118 void OnExternal_Exec() override {}
119 void EnableMessageBox(FX_BOOL bEnable) override {}
120};
121
122class CJS_RuntimeStub final : public IJS_Runtime {
123 public:
124 CJS_RuntimeStub() : m_pDoc(nullptr) {}
125 ~CJS_RuntimeStub() override {}
126
127 IJS_Context* NewContext() override {
128 if (!m_pContext)
129 m_pContext.reset(new CJS_ContextStub());
130 return GetCurrentContext();
131 }
132
133 IJS_Context* GetCurrentContext() override { return m_pContext.get(); }
134 void ReleaseContext(IJS_Context* pContext) override {}
135
136 void SetReaderDocument(CPDFSDK_Document* pReaderDoc) override {
137 m_pDoc = pReaderDoc;
138 }
139 CPDFSDK_Document* GetReaderDocument() override { return m_pDoc; }
140
Tom Sepez51da0932015-11-25 16:05:49 -0800141#ifdef PDF_ENABLE_XFA
dsinclair12a6b0c2016-05-26 11:14:08 -0700142 FX_BOOL GetValueByName(const CFX_ByteStringC&, CFXJSE_Value*) override {
Tom Sepez452b4f32015-10-13 09:27:27 -0700143 return FALSE;
144 }
145
dsinclair12a6b0c2016-05-26 11:14:08 -0700146 FX_BOOL SetValueByName(const CFX_ByteStringC&, CFXJSE_Value*) override {
Tom Sepez452b4f32015-10-13 09:27:27 -0700147 return FALSE;
148 }
Tom Sepez40e9ff32015-11-30 12:39:54 -0800149#endif // PDF_ENABLE_XFA
Tom Sepez452b4f32015-10-13 09:27:27 -0700150
dsinclair884b4f92016-06-06 09:49:32 -0700151 int Execute(const CFX_WideString& script, CFX_WideString* info) override {
Tom Sepez33420902015-10-13 15:00:10 -0700152 return 0;
153 }
154
Tom Sepez452b4f32015-10-13 09:27:27 -0700155 protected:
156 CPDFSDK_Document* m_pDoc;
Lei Zhangaa8bf7e2015-12-24 19:13:32 -0800157 std::unique_ptr<CJS_ContextStub> m_pContext;
Tom Sepez452b4f32015-10-13 09:27:27 -0700158};
159
160// static
Dan Sinclairf766ad22016-03-14 13:51:24 -0400161void IJS_Runtime::Initialize(unsigned int slot, void* isolate) {}
Tom Sepez452b4f32015-10-13 09:27:27 -0700162
163// static
164IJS_Runtime* IJS_Runtime::Create(CPDFDoc_Environment* pEnv) {
165 return new CJS_RuntimeStub;
166}