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_CLASS_H_ 8 #define FXJSE_CLASS_H_ 9 class CFXJSE_Context; 10 class CFXJSE_Value; 11 class CFXJSE_Class { 12 protected: CFXJSE_Class(CFXJSE_Context * lpContext)13 CFXJSE_Class(CFXJSE_Context* lpContext) 14 : m_lpClassDefinition(nullptr), m_pContext(lpContext) {} 15 16 public: GetContext()17 inline CFXJSE_Context* GetContext() { return m_pContext; } GetTemplate()18 inline v8::Global<v8::FunctionTemplate>& GetTemplate() { return m_hTemplate; } 19 20 public: 21 static CFXJSE_Class* Create(CFXJSE_Context* pContext, 22 const FXJSE_CLASS* lpClassDefintion, 23 FX_BOOL bIsJSGlobal = FALSE); 24 static CFXJSE_Class* GetClassFromContext(CFXJSE_Context* pContext, 25 const CFX_ByteStringC& szName); 26 static void SetUpDynPropHandler(CFXJSE_Context* pContext, 27 CFXJSE_Value* pValue, 28 const FXJSE_CLASS* lpClassDefinition); 29 static void SetUpNamedPropHandler( 30 v8::Isolate* pIsolate, 31 v8::Local<v8::ObjectTemplate>& hObjectTemplate, 32 const FXJSE_CLASS* lpClassDefinition); 33 34 protected: 35 CFX_ByteString m_szClassName; 36 const FXJSE_CLASS* m_lpClassDefinition; 37 CFXJSE_Context* m_pContext; 38 v8::Global<v8::FunctionTemplate> m_hTemplate; 39 friend class CFXJSE_Context; 40 friend class CFXJSE_Value; 41 }; 42 struct CFXJSE_ArgumentsImpl { 43 const v8::FunctionCallbackInfo<v8::Value>* m_pInfo; 44 CFXJSE_Value* m_pRetValue; 45 }; 46 #endif 47