blob: e7853fba7a690756bae778160914715c1c6aad39 [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/javascript/ijs_context.h"
10#include "fpdfsdk/javascript/ijs_runtime.h"
tsepez36eb4bd2016-10-03 15:24:27 -070011#include "third_party/base/ptr_util.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 {}
dsinclair4526faf2016-10-11 10:54:49 -070025 void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv,
Tom Sepez452b4f32015-10-13 09:27:27 -070026 const CFX_WideString& strTargetName) override {}
dsinclair4526faf2016-10-11 10:54:49 -070027 void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
28 void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
29 void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
30 void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
31 void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
32 void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
33 void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
34 void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
35 void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
Tom Sepez452b4f32015-10-13 09:27:27 -070036 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 {}
dsinclair4526faf2016-10-11 10:54:49 -0700114 void OnLink_MouseUp(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
115 void OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv,
116 const CFX_WideString&) override {}
117 void OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
Tom Sepez452b4f32015-10-13 09:27:27 -0700118 void OnConsole_Exec() override {}
119 void OnExternal_Exec() override {}
Tom Sepez452b4f32015-10-13 09:27:27 -0700120};
121
122class CJS_RuntimeStub final : public IJS_Runtime {
123 public:
dsinclair82e17672016-10-11 12:38:01 -0700124 CJS_RuntimeStub(CPDFSDK_FormFillEnvironment* pFormFillEnv)
125 : m_pFormFillEnv(pFormFillEnv) {}
Tom Sepez452b4f32015-10-13 09:27:27 -0700126 ~CJS_RuntimeStub() override {}
127
128 IJS_Context* NewContext() override {
129 if (!m_pContext)
tsepez36eb4bd2016-10-03 15:24:27 -0700130 m_pContext = pdfium::MakeUnique<CJS_ContextStub>();
Tom Sepez452b4f32015-10-13 09:27:27 -0700131 return GetCurrentContext();
132 }
133
134 IJS_Context* GetCurrentContext() override { return m_pContext.get(); }
135 void ReleaseContext(IJS_Context* pContext) override {}
136
dsinclair82e17672016-10-11 12:38:01 -0700137 CPDFSDK_FormFillEnvironment* GetFormFillEnv() const override {
138 return m_pFormFillEnv;
Tom Sepez452b4f32015-10-13 09:27:27 -0700139 }
Tom Sepez452b4f32015-10-13 09:27:27 -0700140
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
tsepezb4694242016-08-15 16:44:55 -0700151 int ExecuteScript(const CFX_WideString& script,
152 CFX_WideString* info) override {
Tom Sepez33420902015-10-13 15:00:10 -0700153 return 0;
154 }
155
Tom Sepez452b4f32015-10-13 09:27:27 -0700156 protected:
dsinclair82e17672016-10-11 12:38:01 -0700157 CPDFSDK_FormFillEnvironment* m_pFormFillEnv;
Lei Zhangaa8bf7e2015-12-24 19:13:32 -0800158 std::unique_ptr<CJS_ContextStub> m_pContext;
Tom Sepez452b4f32015-10-13 09:27:27 -0700159};
160
161// static
Dan Sinclairf766ad22016-03-14 13:51:24 -0400162void IJS_Runtime::Initialize(unsigned int slot, void* isolate) {}
Tom Sepez452b4f32015-10-13 09:27:27 -0700163
164// static
thestig2d6dda12016-06-28 07:39:09 -0700165void IJS_Runtime::Destroy() {}
166
167// static
dsinclair82e17672016-10-11 12:38:01 -0700168IJS_Runtime* IJS_Runtime::Create(CPDFSDK_FormFillEnvironment* pFormFillEnv) {
169 return new CJS_RuntimeStub(pFormFillEnv);
Tom Sepez452b4f32015-10-13 09:27:27 -0700170}