1 // Copyright 2014 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 FXJSE_CONTEXT_H_
8 #define FXJSE_CONTEXT_H_
9 class CFXJSE_Class;
10 class CFXJSE_Value;
11 class CFXJSE_Context {
12  protected:
CFXJSE_Context(v8::Isolate * pIsolate)13   CFXJSE_Context(v8::Isolate* pIsolate) : m_pIsolate(pIsolate) {}
14 
15  public:
16   static CFXJSE_Context* Create(v8::Isolate* pIsolate,
17                                 const FXJSE_CLASS* lpGlobalClass = NULL,
18                                 void* lpGlobalObject = NULL);
19   ~CFXJSE_Context();
GetRuntime(void)20   V8_INLINE v8::Isolate* GetRuntime(void) { return m_pIsolate; }
21   void GetGlobalObject(CFXJSE_Value* pValue);
22   FX_BOOL ExecuteScript(const FX_CHAR* szScript,
23                         CFXJSE_Value* lpRetValue,
24                         CFXJSE_Value* lpNewThisObject = NULL);
25 
26  protected:
27   CFXJSE_Context();
28   CFXJSE_Context(const CFXJSE_Context&);
29   CFXJSE_Context& operator=(const CFXJSE_Context&);
30 
31  protected:
32   v8::Global<v8::Context> m_hContext;
33   v8::Isolate* m_pIsolate;
34   CFX_ArrayTemplate<CFXJSE_Class*> m_rgClasses;
35   friend class CFXJSE_Class;
36   friend class CFXJSE_ScopeUtil_IsolateHandleContext;
37   friend class CFXJSE_ScopeUtil_IsolateHandleRootOrNormalContext;
38 };
39 v8::Local<v8::Object> FXJSE_CreateReturnValue(v8::Isolate* pIsolate,
40                                               v8::TryCatch& trycatch);
41 #endif
42