Home | History | Annotate | Download | only in fxjs
      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 
     31   CFXJSE_Context* GetContext() const { return m_pContext.Get(); }
     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