| Index: fxjs/include/fxjs_v8.h
|
| diff --git a/fxjs/include/fxjs_v8.h b/fxjs/include/fxjs_v8.h
|
| index 52afc491b233ce2a1280174cbbeb5a23a4a3a35d..7c4a9070f82c0e46f50375f58429bd253546ca52 100644
|
| --- a/fxjs/include/fxjs_v8.h
|
| +++ b/fxjs/include/fxjs_v8.h
|
| @@ -125,25 +125,9 @@ class FXJS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
|
| void Free(void* data, size_t length) override;
|
| };
|
|
|
| -using FXJS_CONSTRUCTOR = void (*)(CFXJS_Engine* fxjs,
|
| - v8::Local<v8::Object> obj);
|
| -using FXJS_DESTRUCTOR = void (*)(v8::Local<v8::Object> obj);
|
| -
|
| void FXJS_Initialize(unsigned int embedderDataSlot, v8::Isolate* pIsolate);
|
| void FXJS_Release();
|
|
|
| -class CFXJS_Engine {
|
| - public:
|
| - CFXJS_Engine();
|
| - ~CFXJS_Engine();
|
| -
|
| - protected:
|
| - v8::Isolate* m_isolate;
|
| - v8::Global<v8::Context> m_context;
|
| - std::vector<v8::Global<v8::Object>*> m_StaticObjects;
|
| - std::map<CFX_WideString, v8::Global<v8::Array>> m_ConstArrays;
|
| -};
|
| -
|
| // Gets the global isolate set by FXJS_Initialize(), or makes a new one each
|
| // time if there is no such isolate. Returns true if a new isolate had to be
|
| // created.
|
| @@ -152,140 +136,133 @@ bool FXJS_GetIsolate(v8::Isolate** pResultIsolate);
|
| // Get the global isolate's ref count.
|
| size_t FXJS_GlobalIsolateRefCount();
|
|
|
| -// Always returns a valid, newly-created objDefnID.
|
| -int FXJS_DefineObj(v8::Isolate* pIsolate,
|
| - const wchar_t* sObjName,
|
| - FXJSOBJTYPE eObjType,
|
| - FXJS_CONSTRUCTOR pConstructor,
|
| - FXJS_DESTRUCTOR pDestructor);
|
| +class CFXJS_Engine {
|
| + public:
|
| + CFXJS_Engine();
|
| + ~CFXJS_Engine();
|
| +
|
| + using Constructor = void (*)(CFXJS_Engine* pEngine,
|
| + v8::Local<v8::Object> obj);
|
| + using Destructor = void (*)(CFXJS_Engine* pEngine, v8::Local<v8::Object> obj);
|
|
|
| -void FXJS_DefineObjMethod(v8::Isolate* pIsolate,
|
| - int nObjDefnID,
|
| - const wchar_t* sMethodName,
|
| - v8::FunctionCallback pMethodCall);
|
| -void FXJS_DefineObjProperty(v8::Isolate* pIsolate,
|
| - int nObjDefnID,
|
| - const wchar_t* sPropName,
|
| - v8::AccessorGetterCallback pPropGet,
|
| - v8::AccessorSetterCallback pPropPut);
|
| -void FXJS_DefineObjAllProperties(v8::Isolate* pIsolate,
|
| - int nObjDefnID,
|
| - v8::NamedPropertyQueryCallback pPropQurey,
|
| - v8::NamedPropertyGetterCallback pPropGet,
|
| - v8::NamedPropertySetterCallback pPropPut,
|
| - v8::NamedPropertyDeleterCallback pPropDel);
|
| -void FXJS_DefineObjConst(v8::Isolate* pIsolate,
|
| - int nObjDefnID,
|
| - const wchar_t* sConstName,
|
| - v8::Local<v8::Value> pDefault);
|
| -void FXJS_DefineGlobalMethod(v8::Isolate* pIsolate,
|
| - const wchar_t* sMethodName,
|
| - v8::FunctionCallback pMethodCall);
|
| -void FXJS_DefineGlobalConst(v8::Isolate* pIsolate,
|
| - const wchar_t* sConstName,
|
| - v8::FunctionCallback pConstGetter);
|
| -
|
| -// Called after FXJS_Define* calls made.
|
| -void FXJS_InitializeEngine(
|
| - v8::Isolate* pIsolate,
|
| - CFXJS_Engine* pEngine,
|
| - v8::Global<v8::Context>* pV8PersistentContext,
|
| - std::vector<v8::Global<v8::Object>*>* pStaticObjects);
|
| -void FXJS_ReleaseEngine(v8::Isolate* pIsolate,
|
| - v8::Global<v8::Context>* pV8PersistentContext,
|
| - std::vector<v8::Global<v8::Object>*>* pStaticObjects);
|
| -CFXJS_Engine* FXJS_GetCurrentEngineFromIsolate(v8::Isolate* pIsolate);
|
| + static CFXJS_Engine* CurrentEngineFromIsolate(v8::Isolate* pIsolate);
|
| + static int GetObjDefnID(v8::Local<v8::Object> pObj);
|
|
|
| #ifdef PDF_ENABLE_XFA
|
| -// Called as part of FXJS_InitializeEngine, exposed so PDF can make its
|
| -// own contexts compatible with XFA or vice versa.
|
| -void FXJS_SetEngineForV8Context(v8::Local<v8::Context> v8Context,
|
| - CFXJS_Engine* pEngine);
|
| + // Called as part of FXJS_InitializeEngine, exposed so PDF can make its
|
| + // own contexts compatible with XFA or vice versa.
|
| + static void SetForV8Context(v8::Local<v8::Context> v8Context,
|
| + CFXJS_Engine* pEngine);
|
| #endif // PDF_ENABLE_XFA
|
|
|
| -// Called after FXJS_InitializeEngine call made.
|
| -int FXJS_Execute(v8::Isolate* pIsolate,
|
| - const CFX_WideString& script,
|
| - FXJSErr* perror);
|
| -
|
| -v8::Local<v8::Object> FXJS_NewFxDynamicObj(v8::Isolate* pIsolate,
|
| - CFXJS_Engine* pEngine,
|
| - int nObjDefnID,
|
| - bool bStatic = false);
|
| -v8::Local<v8::Object> FXJS_GetThisObj(v8::Isolate* pIsolate);
|
| -int FXJS_GetObjDefnID(v8::Local<v8::Object> pObj);
|
| -
|
| -void FXJS_SetPrivate(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj,
|
| - void* p);
|
| -void* FXJS_GetPrivate(v8::Isolate* pIsolate, v8::Local<v8::Object> pObj);
|
| -void FXJS_FreePrivate(void* p);
|
| -void FXJS_FreePrivate(v8::Local<v8::Object> pObj);
|
| -void FXJS_Error(v8::Isolate* isolate, const CFX_WideString& message);
|
| -
|
| -v8::Local<v8::String> FXJS_WSToJSString(v8::Isolate* pIsolate,
|
| - const CFX_WideString& wsPropertyName);
|
| -
|
| -std::vector<CFX_WideString> FXJS_GetObjectPropertyNames(
|
| - v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj);
|
| -v8::Local<v8::Value> FXJS_GetObjectProperty(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj,
|
| - const CFX_WideString& PropertyName);
|
| -
|
| -unsigned FXJS_GetArrayLength(v8::Local<v8::Array> pArray);
|
| -v8::Local<v8::Value> FXJS_GetArrayElement(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Array> pArray,
|
| - unsigned index);
|
| -
|
| -void FXJS_PutObjectString(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj,
|
| - const CFX_WideString& wsPropertyName,
|
| - const CFX_WideString& wsValue);
|
| -void FXJS_PutObjectNumber(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj,
|
| - const CFX_WideString& PropertyName,
|
| - int nValue);
|
| -void FXJS_PutObjectNumber(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj,
|
| - const CFX_WideString& PropertyName,
|
| - float fValue);
|
| -void FXJS_PutObjectNumber(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj,
|
| - const CFX_WideString& PropertyName,
|
| - double dValue);
|
| -void FXJS_PutObjectBoolean(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj,
|
| - const CFX_WideString& PropertyName,
|
| - bool bValue);
|
| -void FXJS_PutObjectObject(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj,
|
| - const CFX_WideString& PropertyName,
|
| - v8::Local<v8::Object> pPut);
|
| -void FXJS_PutObjectNull(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Object> pObj,
|
| - const CFX_WideString& PropertyName);
|
| -unsigned FXJS_PutArrayElement(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Array> pArray,
|
| - unsigned index,
|
| - v8::Local<v8::Value> pValue);
|
| -
|
| -v8::Local<v8::Value> FXJS_NewNull(v8::Isolate* pIsolate);
|
| -v8::Local<v8::Array> FXJS_NewArray(v8::Isolate* pIsolate);
|
| -v8::Local<v8::Value> FXJS_NewNumber(v8::Isolate* pIsolate, int number);
|
| -v8::Local<v8::Value> FXJS_NewNumber(v8::Isolate* pIsolate, double number);
|
| -v8::Local<v8::Value> FXJS_NewNumber(v8::Isolate* pIsolate, float number);
|
| -v8::Local<v8::Value> FXJS_NewBoolean(v8::Isolate* pIsolate, bool b);
|
| -v8::Local<v8::Value> FXJS_NewString(v8::Isolate* pIsolate, const wchar_t* str);
|
| -v8::Local<v8::Date> FXJS_NewDate(v8::Isolate* pIsolate, double d);
|
| -
|
| -int FXJS_ToInt32(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue);
|
| -bool FXJS_ToBoolean(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue);
|
| -double FXJS_ToNumber(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue);
|
| -v8::Local<v8::Object> FXJS_ToObject(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Value> pValue);
|
| -CFX_WideString FXJS_ToString(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Value> pValue);
|
| -v8::Local<v8::Array> FXJS_ToArray(v8::Isolate* pIsolate,
|
| - v8::Local<v8::Value> pValue);
|
| + // TODO(tsepez): to constructor.
|
| + void SetIsolate(v8::Isolate* pIsolate) { m_isolate = pIsolate; }
|
| + v8::Isolate* GetIsolate() const { return m_isolate; }
|
| +
|
| + // Always returns a valid, newly-created objDefnID.
|
| + int DefineObj(const wchar_t* sObjName,
|
| + FXJSOBJTYPE eObjType,
|
| + Constructor pConstructor,
|
| + Destructor pDestructor);
|
| +
|
| + void DefineObjMethod(int nObjDefnID,
|
| + const wchar_t* sMethodName,
|
| + v8::FunctionCallback pMethodCall);
|
| + void DefineObjProperty(int nObjDefnID,
|
| + const wchar_t* sPropName,
|
| + v8::AccessorGetterCallback pPropGet,
|
| + v8::AccessorSetterCallback pPropPut);
|
| + void DefineObjAllProperties(int nObjDefnID,
|
| + v8::NamedPropertyQueryCallback pPropQurey,
|
| + v8::NamedPropertyGetterCallback pPropGet,
|
| + v8::NamedPropertySetterCallback pPropPut,
|
| + v8::NamedPropertyDeleterCallback pPropDel);
|
| + void DefineObjConst(int nObjDefnID,
|
| + const wchar_t* sConstName,
|
| + v8::Local<v8::Value> pDefault);
|
| + void DefineGlobalMethod(const wchar_t* sMethodName,
|
| + v8::FunctionCallback pMethodCall);
|
| + void DefineGlobalConst(const wchar_t* sConstName,
|
| + v8::FunctionCallback pConstGetter);
|
| +
|
| + // Called after FXJS_Define* calls made.
|
| + void InitializeEngine();
|
| + void ReleaseEngine();
|
| +
|
| + // Called after FXJS_InitializeEngine call made.
|
| + int Execute(const CFX_WideString& script, FXJSErr* perror);
|
| +
|
| + v8::Local<v8::Context> NewLocalContext();
|
| + v8::Local<v8::Context> GetPersistentContext();
|
| +
|
| + v8::Local<v8::Value> NewNull();
|
| + v8::Local<v8::Array> NewArray();
|
| + v8::Local<v8::Value> NewNumber(int number);
|
| + v8::Local<v8::Value> NewNumber(double number);
|
| + v8::Local<v8::Value> NewNumber(float number);
|
| + v8::Local<v8::Value> NewBoolean(bool b);
|
| + v8::Local<v8::Value> NewString(const wchar_t* str);
|
| + v8::Local<v8::Date> NewDate(double d);
|
| + v8::Local<v8::Object> NewFxDynamicObj(int nObjDefnID, bool bStatic = false);
|
| +
|
| + v8::Local<v8::Object> GetThisObj();
|
| + int ToInt32(v8::Local<v8::Value> pValue);
|
| + bool ToBoolean(v8::Local<v8::Value> pValue);
|
| + double ToNumber(v8::Local<v8::Value> pValue);
|
| + CFX_WideString ToString(v8::Local<v8::Value> pValue);
|
| + v8::Local<v8::Object> ToObject(v8::Local<v8::Value> pValue);
|
| + v8::Local<v8::Array> ToArray(v8::Local<v8::Value> pValue);
|
| +
|
| + unsigned GetArrayLength(v8::Local<v8::Array> pArray);
|
| + v8::Local<v8::Value> GetArrayElement(v8::Local<v8::Array> pArray,
|
| + unsigned index);
|
| + unsigned PutArrayElement(v8::Local<v8::Array> pArray,
|
| + unsigned index,
|
| + v8::Local<v8::Value> pValue);
|
| +
|
| + std::vector<CFX_WideString> GetObjectPropertyNames(
|
| + v8::Local<v8::Object> pObj);
|
| + v8::Local<v8::Value> GetObjectProperty(v8::Local<v8::Object> pObj,
|
| + const CFX_WideString& PropertyName);
|
| +
|
| + void PutObjectString(v8::Local<v8::Object> pObj,
|
| + const CFX_WideString& wsPropertyName,
|
| + const CFX_WideString& wsValue);
|
| + void PutObjectNumber(v8::Local<v8::Object> pObj,
|
| + const CFX_WideString& PropertyName,
|
| + int nValue);
|
| + void PutObjectNumber(v8::Local<v8::Object> pObj,
|
| + const CFX_WideString& PropertyName,
|
| + float fValue);
|
| + void PutObjectNumber(v8::Local<v8::Object> pObj,
|
| + const CFX_WideString& PropertyName,
|
| + double dValue);
|
| + void PutObjectBoolean(v8::Local<v8::Object> pObj,
|
| + const CFX_WideString& PropertyName,
|
| + bool bValue);
|
| + void PutObjectObject(v8::Local<v8::Object> pObj,
|
| + const CFX_WideString& PropertyName,
|
| + v8::Local<v8::Object> pPut);
|
| + void PutObjectNull(v8::Local<v8::Object> pObj,
|
| + const CFX_WideString& PropertyName);
|
| +
|
| + // Native object binding.
|
| + void SetObjectPrivate(v8::Local<v8::Object> pObj, void* p);
|
| + void* GetObjectPrivate(v8::Local<v8::Object> pObj);
|
| + static void FreeObjectPrivate(void* p);
|
| + static void FreeObjectPrivate(v8::Local<v8::Object> pObj);
|
| +
|
| + void SetConstArray(const CFX_WideString& name, v8::Local<v8::Array> array);
|
| + v8::Local<v8::Array> GetConstArray(const CFX_WideString& name);
|
| +
|
| + v8::Local<v8::String> WSToJSString(const CFX_WideString& wsPropertyName);
|
| + void Error(const CFX_WideString& message);
|
| +
|
| + private:
|
| + v8::Isolate* m_isolate;
|
| + v8::Global<v8::Context> m_V8PersistentContext;
|
| + std::vector<v8::Global<v8::Object>*> m_StaticObjects;
|
| + std::map<CFX_WideString, v8::Global<v8::Array>> m_ConstArrays;
|
| +};
|
| +
|
| #endif // FXJS_INCLUDE_FXJS_V8_H_
|
|
|