blob: 4083f86e8799b981612a1fb3cae485f64450c1d0 [file] [log] [blame]
dsinclair64376be2016-03-31 20:03:24 -07001// Copyright 2016 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#ifndef FPDFSDK_JAVASCRIPT_IJS_RUNTIME_H_
8#define FPDFSDK_JAVASCRIPT_IJS_RUNTIME_H_
9
10#include "core/fxcrt/include/fx_string.h"
11#include "core/fxcrt/include/fx_system.h"
12
13#ifdef PDF_ENABLE_XFA
dsinclair8bd9ce02016-06-09 13:24:34 -070014#include "fxjse/include/fxjse.h"
dsinclair64376be2016-03-31 20:03:24 -070015#endif // PDF_ENABLE_XFA
16
17class CPDFDoc_Environment;
18class CPDFSDK_Document;
19class IJS_Context;
20
21// Owns the FJXS objects needed to actually execute JS.
22class IJS_Runtime {
23 public:
24 static void Initialize(unsigned int slot, void* isolate);
25 static IJS_Runtime* Create(CPDFDoc_Environment* pEnv);
26 virtual ~IJS_Runtime() {}
27
28 virtual IJS_Context* NewContext() = 0;
29 virtual void ReleaseContext(IJS_Context* pContext) = 0;
30 virtual IJS_Context* GetCurrentContext() = 0;
31 virtual void SetReaderDocument(CPDFSDK_Document* pReaderDoc) = 0;
32 virtual CPDFSDK_Document* GetReaderDocument() = 0;
dsinclair884b4f92016-06-06 09:49:32 -070033 virtual int Execute(const CFX_WideString& script, CFX_WideString* info) = 0;
dsinclair64376be2016-03-31 20:03:24 -070034
35#ifdef PDF_ENABLE_XFA
dsinclair12a6b0c2016-05-26 11:14:08 -070036 virtual FX_BOOL GetValueByName(const CFX_ByteStringC& utf8Name,
37 CFXJSE_Value* pValue) = 0;
38 virtual FX_BOOL SetValueByName(const CFX_ByteStringC& utf8Name,
39 CFXJSE_Value* pValue) = 0;
dsinclair64376be2016-03-31 20:03:24 -070040#endif // PDF_ENABLE_XFA
41
42 protected:
43 IJS_Runtime() {}
44};
45
46#endif // FPDFSDK_JAVASCRIPT_IJS_RUNTIME_H_