summaryrefslogtreecommitdiff
path: root/fpdfsdk/javascript/JS_Object.h
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-10-26 15:04:17 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-10-26 19:29:57 +0000
commitd808dfd5ad8c4eae1f2ea58b9b54a7d4e45a649e (patch)
tree26b829d19be342d45fa47accd4a599fb2d5aa711 /fpdfsdk/javascript/JS_Object.h
parent977c2a048e02dd3a9563be0c2c6ee62435e134c1 (diff)
downloadpdfium-d808dfd5ad8c4eae1f2ea58b9b54a7d4e45a649e.tar.xz
Cleanup JS define methods
This CL moves DefineProps, DefineMethods and DefineConsts to the CJS_Object and removes from the subclasses. The JSConstructor and JSDestructor are moved to be templated static methods in JS_Defines. Change-Id: Ibe5ee063a32ae2332b8affc843d97ee6da21f4ee Reviewed-on: https://pdfium-review.googlesource.com/16930 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fpdfsdk/javascript/JS_Object.h')
-rw-r--r--fpdfsdk/javascript/JS_Object.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/fpdfsdk/javascript/JS_Object.h b/fpdfsdk/javascript/JS_Object.h
index e0a96a97cf..20d5203397 100644
--- a/fpdfsdk/javascript/JS_Object.h
+++ b/fpdfsdk/javascript/JS_Object.h
@@ -18,6 +18,26 @@ class CJS_EventContext;
class CJS_Object;
class CPDFSDK_FormFillEnvironment;
+struct JSConstSpec {
+ enum Type { Number = 0, String = 1 };
+
+ const char* pName;
+ Type eType;
+ double number;
+ const char* pStr;
+};
+
+struct JSPropertySpec {
+ const char* pName;
+ v8::AccessorGetterCallback pPropGet;
+ v8::AccessorSetterCallback pPropPut;
+};
+
+struct JSMethodSpec {
+ const char* pName;
+ v8::FunctionCallback pMethodCall;
+};
+
class CJS_EmbedObj {
public:
explicit CJS_EmbedObj(CJS_Object* pJSObject);
@@ -31,6 +51,16 @@ class CJS_EmbedObj {
class CJS_Object {
public:
+ static void DefineConsts(CFXJS_Engine* pEngine,
+ int objId,
+ const JSConstSpec consts[]);
+ static void DefineProps(CFXJS_Engine* pEngine,
+ int objId,
+ const JSPropertySpec props[]);
+ static void DefineMethods(CFXJS_Engine* pEngine,
+ int objId,
+ const JSMethodSpec methods[]);
+
explicit CJS_Object(v8::Local<v8::Object> pObject);
virtual ~CJS_Object();