Index: fpdfsdk/jsapi/include/fxjs_v8.h |
diff --git a/fpdfsdk/jsapi/include/fxjs_v8.h b/fpdfsdk/jsapi/include/fxjs_v8.h |
index 6606df4d265f5f367b75fa933c70d407118ae570..b7244b8b5651648a01795c8b32fc4bde3b956603 100644 |
--- a/fpdfsdk/jsapi/include/fxjs_v8.h |
+++ b/fpdfsdk/jsapi/include/fxjs_v8.h |
@@ -20,8 +20,7 @@ |
#include <vector> |
#include "core/fxcrt/include/fx_string.h" |
- |
-class CFXJS_ObjDefinition; |
+#include "fxjse/include/fxjs_perisolatedata.h" |
// FXJS_V8 places no restrictions on these two classes; it merely passes them |
// on to caller-provided methods. |
@@ -34,92 +33,12 @@ class IJS_Runtime; // A native runtime, typically owns the v8::Context. |
class CFXJSE_RuntimeData; |
#endif // PDF_ENABLE_XFA |
-enum FXJSOBJTYPE { |
- FXJSOBJTYPE_DYNAMIC = 0, // Created by native method and returned to JS. |
- FXJSOBJTYPE_STATIC, // Created by init and hung off of global object. |
- FXJSOBJTYPE_GLOBAL, // The global object itself (may only appear once). |
-}; |
- |
struct FXJSErr { |
const wchar_t* message; |
const wchar_t* srcline; |
unsigned linnum; |
}; |
-// Global weak map to save dynamic objects. |
-class V8TemplateMapTraits : public v8::StdMapTraits<void*, v8::Object> { |
- public: |
- typedef v8::GlobalValueMap<void*, v8::Object, V8TemplateMapTraits> MapType; |
- typedef void WeakCallbackDataType; |
- |
- static WeakCallbackDataType* WeakCallbackParameter( |
- MapType* map, |
- void* key, |
- const v8::Local<v8::Object>& value) { |
- return key; |
- } |
- static MapType* MapFromWeakCallbackInfo( |
- const v8::WeakCallbackInfo<WeakCallbackDataType>&); |
- |
- static void* KeyFromWeakCallbackInfo( |
- const v8::WeakCallbackInfo<WeakCallbackDataType>& data) { |
- return data.GetParameter(); |
- } |
- static const v8::PersistentContainerCallbackType kCallbackType = |
- v8::kWeakWithInternalFields; |
- static void DisposeWeak( |
- const v8::WeakCallbackInfo<WeakCallbackDataType>& data) {} |
- static void OnWeakCallback( |
- const v8::WeakCallbackInfo<WeakCallbackDataType>& data) {} |
- static void Dispose(v8::Isolate* isolate, |
- v8::Global<v8::Object> value, |
- void* key); |
- static void DisposeCallbackData(WeakCallbackDataType* callbackData) {} |
-}; |
- |
-class V8TemplateMap { |
- public: |
- typedef v8::GlobalValueMap<void*, v8::Object, V8TemplateMapTraits> MapType; |
- |
- void set(void* key, v8::Local<v8::Object> handle) { |
- ASSERT(!m_map.Contains(key)); |
- m_map.Set(key, handle); |
- } |
- explicit V8TemplateMap(v8::Isolate* isolate) : m_map(isolate) {} |
- friend class V8TemplateMapTraits; |
- |
- private: |
- MapType m_map; |
-}; |
- |
-class FXJS_PerIsolateData { |
- public: |
- static void SetUp(v8::Isolate* pIsolate); |
- static FXJS_PerIsolateData* Get(v8::Isolate* pIsolate); |
- void CreateDynamicObjsMap(v8::Isolate* pIsolate) { |
- if (!m_pDynamicObjsMap) |
- m_pDynamicObjsMap = new V8TemplateMap(pIsolate); |
- } |
- void ReleaseDynamicObjsMap() { |
- delete m_pDynamicObjsMap; |
- m_pDynamicObjsMap = nullptr; |
- } |
- |
- std::vector<CFXJS_ObjDefinition*> m_ObjectDefnArray; |
-#ifdef PDF_ENABLE_XFA |
- CFXJSE_RuntimeData* m_pFXJSERuntimeData; |
-#endif // PDF_ENABLE_XFA |
- V8TemplateMap* m_pDynamicObjsMap; |
- |
- protected: |
-#ifndef PDF_ENABLE_XFA |
- FXJS_PerIsolateData() : m_pDynamicObjsMap(nullptr) {} |
-#else // PDF_ENABLE_XFA |
- FXJS_PerIsolateData() |
- : m_pFXJSERuntimeData(nullptr), m_pDynamicObjsMap(nullptr) {} |
-#endif // PDF_ENABLE_XFA |
-}; |
- |
extern const wchar_t kFXJSValueNameString[]; |
extern const wchar_t kFXJSValueNameNumber[]; |
extern const wchar_t kFXJSValueNameBoolean[]; |
@@ -135,9 +54,6 @@ class FXJS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { |
void Free(void* data, size_t length) override; |
}; |
-using FXJS_CONSTRUCTOR = void (*)(IJS_Runtime* cc, v8::Local<v8::Object> obj); |
-using FXJS_DESTRUCTOR = void (*)(v8::Local<v8::Object> obj); |
- |
// Call before making FXJS_PrepareIsolate call. |
void FXJS_Initialize(unsigned int embedderDataSlot, v8::Isolate* pIsolate); |
void FXJS_Release(); |