summaryrefslogtreecommitdiff
path: root/fxjs/JS_Define.h
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-02-05 18:52:09 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-02-05 18:52:09 +0000
commit57e097750846bf3ffc3e4e2ef9e78be8a82c69de (patch)
tree080a0d644b816cc6d2cb0b00f4c9629020894316 /fxjs/JS_Define.h
parent13c4d1b46641fb3041800cad3032e7e60026e3f4 (diff)
downloadpdfium-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.h22
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;