| 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();
|
|
|