diff options
Diffstat (limited to 'fpdfsdk/jsapi')
-rw-r--r-- | fpdfsdk/jsapi/fxjs_v8.cpp | 18 | ||||
-rw-r--r-- | fpdfsdk/jsapi/include/fxjs_v8.h | 20 |
2 files changed, 27 insertions, 11 deletions
diff --git a/fpdfsdk/jsapi/fxjs_v8.cpp b/fpdfsdk/jsapi/fxjs_v8.cpp index 790d10b602..c63ef7ae89 100644 --- a/fpdfsdk/jsapi/fxjs_v8.cpp +++ b/fpdfsdk/jsapi/fxjs_v8.cpp @@ -190,6 +190,17 @@ size_t FXJS_GlobalIsolateRefCount() { return g_isolate_ref_count; } +V8TemplateMap::V8TemplateMap(v8::Isolate* isolate) : m_map(isolate) {} + +V8TemplateMap::~V8TemplateMap() {} + +void V8TemplateMap::set(void* key, v8::Local<v8::Object> handle) { + ASSERT(!m_map.Contains(key)); + m_map.Set(key, handle); +} + +FXJS_PerIsolateData::~FXJS_PerIsolateData() {} + // static void FXJS_PerIsolateData::SetUp(v8::Isolate* pIsolate) { if (!pIsolate->GetData(g_embedderDataSlot)) @@ -202,6 +213,13 @@ FXJS_PerIsolateData* FXJS_PerIsolateData::Get(v8::Isolate* pIsolate) { pIsolate->GetData(g_embedderDataSlot)); } +#ifndef PDF_ENABLE_XFA +FXJS_PerIsolateData::FXJS_PerIsolateData() : m_pDynamicObjsMap(nullptr) {} +#else // PDF_ENABLE_XFA +FXJS_PerIsolateData::FXJS_PerIsolateData() + : m_pFXJSERuntimeData(nullptr), m_pDynamicObjsMap(nullptr) {} +#endif // PDF_ENABLE_XFA + int FXJS_DefineObj(v8::Isolate* pIsolate, const wchar_t* sObjName, FXJSOBJTYPE eObjType, diff --git a/fpdfsdk/jsapi/include/fxjs_v8.h b/fpdfsdk/jsapi/include/fxjs_v8.h index 60389d2e1a..3ae1d5e0ca 100644 --- a/fpdfsdk/jsapi/include/fxjs_v8.h +++ b/fpdfsdk/jsapi/include/fxjs_v8.h @@ -81,11 +81,11 @@ 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) {} + explicit V8TemplateMap(v8::Isolate* isolate); + ~V8TemplateMap(); + + void set(void* key, v8::Local<v8::Object> handle); + friend class V8TemplateMapTraits; private: @@ -94,8 +94,11 @@ class V8TemplateMap { class FXJS_PerIsolateData { public: + ~FXJS_PerIsolateData(); + 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); @@ -112,12 +115,7 @@ class FXJS_PerIsolateData { 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 + FXJS_PerIsolateData(); }; extern const wchar_t kFXJSValueNameString[]; |