diff options
author | Tom Sepez <tsepez@chromium.org> | 2018-02-05 18:52:09 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-02-05 18:52:09 +0000 |
commit | 57e097750846bf3ffc3e4e2ef9e78be8a82c69de (patch) | |
tree | 080a0d644b816cc6d2cb0b00f4c9629020894316 /fxjs/JS_Define.h | |
parent | 13c4d1b46641fb3041800cad3032e7e60026e3f4 (diff) | |
download | pdfium-57e097750846bf3ffc3e4e2ef9e78be8a82c69de.tar.xz |
Use unique pointer in CFXJS_PerObjectData.
Also use the actual type information, not void* and remove casts.
Template function not required to wrap virtual dtors.
Change-Id: I9397cae136c3c395a368a1ef0ce8162d9b586076
Reviewed-on: https://pdfium-review.googlesource.com/25290
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'fxjs/JS_Define.h')
-rw-r--r-- | fxjs/JS_Define.h | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/fxjs/JS_Define.h b/fxjs/JS_Define.h index f45738e847..1c2410f18f 100644 --- a/fxjs/JS_Define.h +++ b/fxjs/JS_Define.h @@ -7,6 +7,7 @@ #ifndef FXJS_JS_DEFINE_H_ #define FXJS_JS_DEFINE_H_ +#include <utility> #include <vector> #include "fxjs/cjs_object.h" @@ -49,16 +50,14 @@ std::vector<v8::Local<v8::Value>> ExpandKeywordParams( template <class T, class A> static void JSConstructor(CFXJS_Engine* pEngine, v8::Local<v8::Object> obj) { - CJS_Object* pObj = new T(obj); - pObj->SetEmbedObject(pdfium::MakeUnique<A>(pObj)); - pEngine->SetObjectPrivate(obj, pObj); + auto pObj = pdfium::MakeUnique<T>(obj); + pObj->SetEmbedObject(pdfium::MakeUnique<A>(pObj.get())); pObj->InitInstance(static_cast<CJS_Runtime*>(pEngine)); + pEngine->SetObjectPrivate(obj, std::move(pObj)); } -template <class T> -static void JSDestructor(CFXJS_Engine* pEngine, v8::Local<v8::Object> obj) { - delete static_cast<T*>(pEngine->GetObjectPrivate(obj)); -} +// CJS_Object has vitual dtor, template not required. +void JSDestructor(CFXJS_Engine* pEngine, v8::Local<v8::Object> obj); template <class C, CJS_Return (C::*M)(CJS_Runtime*)> void JSPropGetter(const char* prop_name_string, @@ -70,8 +69,7 @@ void JSPropGetter(const char* prop_name_string, if (!pRuntime) return; - CJS_Object* pJSObj = - static_cast<CJS_Object*>(pRuntime->GetObjectPrivate(info.Holder())); + CJS_Object* pJSObj = pRuntime->GetObjectPrivate(info.Holder()); if (!pJSObj) return; @@ -98,8 +96,7 @@ void JSPropSetter(const char* prop_name_string, if (!pRuntime) return; - CJS_Object* pJSObj = - static_cast<CJS_Object*>(pRuntime->GetObjectPrivate(info.Holder())); + CJS_Object* pJSObj = pRuntime->GetObjectPrivate(info.Holder()); if (!pJSObj) return; @@ -122,8 +119,7 @@ void JSMethod(const char* method_name_string, if (!pRuntime) return; - CJS_Object* pJSObj = - static_cast<CJS_Object*>(pRuntime->GetObjectPrivate(info.Holder())); + CJS_Object* pJSObj = pRuntime->GetObjectPrivate(info.Holder()); if (!pJSObj) return; |