1 // 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 
7 #include <memory>
8 
9 #include "fpdfsdk/javascript/ijs_event_context.h"
10 #include "fpdfsdk/javascript/ijs_runtime.h"
11 #include "third_party/base/ptr_util.h"
12 
13 class CJS_EventContextStub final : public IJS_EventContext {
14  public:
CJS_EventContextStub()15   CJS_EventContextStub() {}
~CJS_EventContextStub()16   ~CJS_EventContextStub() override {}
17 
18   // IJS_EventContext:
RunScript(const CFX_WideString & script,CFX_WideString * info)19   bool RunScript(const CFX_WideString& script, CFX_WideString* info) override {
20     return false;
21   }
22 
OnApp_Init()23   void OnApp_Init() override {}
OnDoc_Open(CPDFSDK_FormFillEnvironment * pFormFillEnv,const CFX_WideString & strTargetName)24   void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv,
25                   const CFX_WideString& strTargetName) override {}
OnDoc_WillPrint(CPDFSDK_FormFillEnvironment * pFormFillEnv)26   void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnDoc_DidPrint(CPDFSDK_FormFillEnvironment * pFormFillEnv)27   void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnDoc_WillSave(CPDFSDK_FormFillEnvironment * pFormFillEnv)28   void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnDoc_DidSave(CPDFSDK_FormFillEnvironment * pFormFillEnv)29   void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnDoc_WillClose(CPDFSDK_FormFillEnvironment * pFormFillEnv)30   void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnPage_Open(CPDFSDK_FormFillEnvironment * pFormFillEnv)31   void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnPage_Close(CPDFSDK_FormFillEnvironment * pFormFillEnv)32   void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnPage_InView(CPDFSDK_FormFillEnvironment * pFormFillEnv)33   void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnPage_OutView(CPDFSDK_FormFillEnvironment * pFormFillEnv)34   void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnField_MouseDown(bool bModifier,bool bShift,CPDF_FormField * pTarget)35   void OnField_MouseDown(bool bModifier,
36                          bool bShift,
37                          CPDF_FormField* pTarget) override {}
OnField_MouseEnter(bool bModifier,bool bShift,CPDF_FormField * pTarget)38   void OnField_MouseEnter(bool bModifier,
39                           bool bShift,
40                           CPDF_FormField* pTarget) override {}
OnField_MouseExit(bool bModifier,bool bShift,CPDF_FormField * pTarget)41   void OnField_MouseExit(bool bModifier,
42                          bool bShift,
43                          CPDF_FormField* pTarget) override {}
OnField_MouseUp(bool bModifier,bool bShift,CPDF_FormField * pTarget)44   void OnField_MouseUp(bool bModifier,
45                        bool bShift,
46                        CPDF_FormField* pTarget) override {}
OnField_Focus(bool bModifier,bool bShift,CPDF_FormField * pTarget,const CFX_WideString & Value)47   void OnField_Focus(bool bModifier,
48                      bool bShift,
49                      CPDF_FormField* pTarget,
50                      const CFX_WideString& Value) override {}
OnField_Blur(bool bModifier,bool bShift,CPDF_FormField * pTarget,const CFX_WideString & Value)51   void OnField_Blur(bool bModifier,
52                     bool bShift,
53                     CPDF_FormField* pTarget,
54                     const CFX_WideString& Value) override {}
OnField_Calculate(CPDF_FormField * pSource,CPDF_FormField * pTarget,CFX_WideString & Value,bool & bRc)55   void OnField_Calculate(CPDF_FormField* pSource,
56                          CPDF_FormField* pTarget,
57                          CFX_WideString& Value,
58                          bool& bRc) override {}
OnField_Format(CPDF_FormField * pTarget,CFX_WideString & Value,bool bWillCommit)59   void OnField_Format(CPDF_FormField* pTarget,
60                       CFX_WideString& Value,
61                       bool bWillCommit) override {}
OnField_Keystroke(CFX_WideString & strChange,const CFX_WideString & strChangeEx,bool KeyDown,bool bModifier,int & nSelEnd,int & nSelStart,bool bShift,CPDF_FormField * pTarget,CFX_WideString & Value,bool bWillCommit,bool bFieldFull,bool & bRc)62   void OnField_Keystroke(CFX_WideString& strChange,
63                          const CFX_WideString& strChangeEx,
64                          bool KeyDown,
65                          bool bModifier,
66                          int& nSelEnd,
67                          int& nSelStart,
68                          bool bShift,
69                          CPDF_FormField* pTarget,
70                          CFX_WideString& Value,
71                          bool bWillCommit,
72                          bool bFieldFull,
73                          bool& bRc) override {}
OnField_Validate(CFX_WideString & strChange,const CFX_WideString & strChangeEx,bool bKeyDown,bool bModifier,bool bShift,CPDF_FormField * pTarget,CFX_WideString & Value,bool & bRc)74   void OnField_Validate(CFX_WideString& strChange,
75                         const CFX_WideString& strChangeEx,
76                         bool bKeyDown,
77                         bool bModifier,
78                         bool bShift,
79                         CPDF_FormField* pTarget,
80                         CFX_WideString& Value,
81                         bool& bRc) override {}
OnScreen_Focus(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)82   void OnScreen_Focus(bool bModifier,
83                       bool bShift,
84                       CPDFSDK_Annot* pScreen) override {}
OnScreen_Blur(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)85   void OnScreen_Blur(bool bModifier,
86                      bool bShift,
87                      CPDFSDK_Annot* pScreen) override {}
OnScreen_Open(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)88   void OnScreen_Open(bool bModifier,
89                      bool bShift,
90                      CPDFSDK_Annot* pScreen) override {}
OnScreen_Close(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)91   void OnScreen_Close(bool bModifier,
92                       bool bShift,
93                       CPDFSDK_Annot* pScreen) override {}
OnScreen_MouseDown(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)94   void OnScreen_MouseDown(bool bModifier,
95                           bool bShift,
96                           CPDFSDK_Annot* pScreen) override {}
OnScreen_MouseUp(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)97   void OnScreen_MouseUp(bool bModifier,
98                         bool bShift,
99                         CPDFSDK_Annot* pScreen) override {}
OnScreen_MouseEnter(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)100   void OnScreen_MouseEnter(bool bModifier,
101                            bool bShift,
102                            CPDFSDK_Annot* pScreen) override {}
OnScreen_MouseExit(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)103   void OnScreen_MouseExit(bool bModifier,
104                           bool bShift,
105                           CPDFSDK_Annot* pScreen) override {}
OnScreen_InView(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)106   void OnScreen_InView(bool bModifier,
107                        bool bShift,
108                        CPDFSDK_Annot* pScreen) override {}
OnScreen_OutView(bool bModifier,bool bShift,CPDFSDK_Annot * pScreen)109   void OnScreen_OutView(bool bModifier,
110                         bool bShift,
111                         CPDFSDK_Annot* pScreen) override {}
OnBookmark_MouseUp(CPDF_Bookmark * pBookMark)112   void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) override {}
OnLink_MouseUp(CPDFSDK_FormFillEnvironment * pFormFillEnv)113   void OnLink_MouseUp(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnMenu_Exec(CPDFSDK_FormFillEnvironment * pFormFillEnv,const CFX_WideString &)114   void OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv,
115                    const CFX_WideString&) override {}
OnBatchExec(CPDFSDK_FormFillEnvironment * pFormFillEnv)116   void OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
OnConsole_Exec()117   void OnConsole_Exec() override {}
OnExternal_Exec()118   void OnExternal_Exec() override {}
119 };
120 
121 class CJS_RuntimeStub final : public IJS_Runtime {
122  public:
CJS_RuntimeStub(CPDFSDK_FormFillEnvironment * pFormFillEnv)123   explicit CJS_RuntimeStub(CPDFSDK_FormFillEnvironment* pFormFillEnv)
124       : m_pFormFillEnv(pFormFillEnv) {}
~CJS_RuntimeStub()125   ~CJS_RuntimeStub() override {}
126 
NewEventContext()127   IJS_EventContext* NewEventContext() override {
128     if (!m_pContext)
129       m_pContext = pdfium::MakeUnique<CJS_EventContextStub>();
130     return m_pContext.get();
131   }
132 
ReleaseEventContext(IJS_EventContext * pContext)133   void ReleaseEventContext(IJS_EventContext* pContext) override {}
134 
GetFormFillEnv() const135   CPDFSDK_FormFillEnvironment* GetFormFillEnv() const override {
136     return m_pFormFillEnv;
137   }
138 
139 #ifdef PDF_ENABLE_XFA
GetValueByName(const CFX_ByteStringC &,CFXJSE_Value *)140   bool GetValueByName(const CFX_ByteStringC&, CFXJSE_Value*) override {
141     return false;
142   }
143 
SetValueByName(const CFX_ByteStringC &,CFXJSE_Value *)144   bool SetValueByName(const CFX_ByteStringC&, CFXJSE_Value*) override {
145     return false;
146   }
147 #endif  // PDF_ENABLE_XFA
148 
ExecuteScript(const CFX_WideString & script,CFX_WideString * info)149   int ExecuteScript(const CFX_WideString& script,
150                     CFX_WideString* info) override {
151     return 0;
152   }
153 
154  protected:
155   CPDFSDK_FormFillEnvironment* m_pFormFillEnv;
156   std::unique_ptr<CJS_EventContextStub> m_pContext;
157 };
158 
159 // static
Initialize(unsigned int slot,void * isolate)160 void IJS_Runtime::Initialize(unsigned int slot, void* isolate) {}
161 
162 // static
Destroy()163 void IJS_Runtime::Destroy() {}
164 
165 // static
Create(CPDFSDK_FormFillEnvironment * pFormFillEnv)166 IJS_Runtime* IJS_Runtime::Create(CPDFSDK_FormFillEnvironment* pFormFillEnv) {
167   return new CJS_RuntimeStub(pFormFillEnv);
168 }
169