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 FXJS_CFXJSE_CLASS_H_
8 #define FXJS_CFXJSE_CLASS_H_
9 
10 #include "core/fxcrt/unowned_ptr.h"
11 #include "fxjs/fxjse.h"
12 #include "v8/include/v8.h"
13 
14 class CFXJSE_Context;
15 class CFXJSE_Value;
16 
17 class CFXJSE_Class {
18  public:
19   static CFXJSE_Class* Create(CFXJSE_Context* pContext,
20                               const FXJSE_CLASS_DESCRIPTOR* lpClassDefintion,
21                               bool bIsJSGlobal);
22 
23   static void SetUpNamedPropHandler(
24       v8::Isolate* pIsolate,
25       v8::Local<v8::ObjectTemplate>& hObjectTemplate,
26       const FXJSE_CLASS_DESCRIPTOR* lpClassDefinition);
27 
28   explicit CFXJSE_Class(CFXJSE_Context* lpContext);
29   ~CFXJSE_Class();
30 
GetContext()31   CFXJSE_Context* GetContext() const { return m_pContext.Get(); }
GetTemplate()32   v8::Global<v8::FunctionTemplate>& GetTemplate() { return m_hTemplate; }
33 
34  protected:
35   ByteString m_szClassName;
36   UnownedPtr<const FXJSE_CLASS_DESCRIPTOR> m_lpClassDefinition;
37   UnownedPtr<CFXJSE_Context> m_pContext;
38   v8::Global<v8::FunctionTemplate> m_hTemplate;
39   friend class CFXJSE_Context;
40   friend class CFXJSE_Value;
41 };
42 
43 #endif  // FXJS_CFXJSE_CLASS_H_
44