blob: d4e9000cfd98ee4939ad092031302e2f80e53fd9 [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
14#include "xfa/fxjse/include/fxjse.h"
15#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;
33 virtual int Execute(IJS_Context* cc,
34 const wchar_t* script,
35 CFX_WideString* info) = 0;
36
37#ifdef PDF_ENABLE_XFA
38 virtual FX_BOOL GetHValueByName(const CFX_ByteStringC& utf8Name,
39 FXJSE_HVALUE hValue) = 0;
40 virtual FX_BOOL SetHValueByName(const CFX_ByteStringC& utf8Name,
41 FXJSE_HVALUE hValue) = 0;
42#endif // PDF_ENABLE_XFA
43
44 protected:
45 IJS_Runtime() {}
46};
47
48#endif // FPDFSDK_JAVASCRIPT_IJS_RUNTIME_H_