| OLD | NEW | 
|    1 // Copyright 2014 PDFium Authors. All rights reserved. |    1 // Copyright 2014 PDFium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4   |    4   | 
|    5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |    5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
|    6  |    6  | 
|    7 #ifndef _JS_DEFINE_H_ |    7 #ifndef _JS_DEFINE_H_ | 
|    8 #define _JS_DEFINE_H_ |    8 #define _JS_DEFINE_H_ | 
|    9  |    9  | 
|   10 typedef v8::Value                       JSValue; |   10 typedef v8::Value                       JSValue; | 
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  196                 return ;\ |  196                 return ;\ | 
|  197         }\ |  197         }\ | 
|  198 } |  198 } | 
|  199  |  199  | 
|  200 /* ===================================== JS CLASS ==============================
     ================= */ |  200 /* ===================================== JS CLASS ==============================
     ================= */ | 
|  201  |  201  | 
|  202 #define DECLARE_JS_CLASS(js_class_name) \ |  202 #define DECLARE_JS_CLASS(js_class_name) \ | 
|  203         static JSBool JSConstructor(IFXJS_Context* cc, JSFXObject obj,JSFXObject
      global);\ |  203         static JSBool JSConstructor(IFXJS_Context* cc, JSFXObject obj,JSFXObject
      global);\ | 
|  204         static JSBool JSDestructor(JSFXObject obj);\ |  204         static JSBool JSDestructor(JSFXObject obj);\ | 
|  205         static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ |  205         static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ | 
|  206         static void GetConsts(JSConstSpec*& pConsts, int& nSize);\ |  | 
|  207         static void GetProperties(JSPropertySpec*& pProperties, int& nSize);\ |  | 
|  208         static void GetMethods(JSMethodSpec*& pMethods, int& nSize);\ |  | 
|  209         static JSConstSpec JS_Class_Consts[];\ |  206         static JSConstSpec JS_Class_Consts[];\ | 
|  210         static JSPropertySpec JS_Class_Properties[];\ |  207         static JSPropertySpec JS_Class_Properties[];\ | 
|  211         static JSMethodSpec     JS_Class_Methods[];\ |  208         static JSMethodSpec     JS_Class_Methods[];\ | 
|  212         static const wchar_t* m_pClassName |  209         static const wchar_t* m_pClassName | 
|  213  |  210  | 
|  214 #define IMPLEMENT_JS_CLASS_RICH(js_class_name, class_alternate, class_name) \ |  211 #define IMPLEMENT_JS_CLASS_RICH(js_class_name, class_alternate, class_name) \ | 
|  215 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name);\ |  212 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name);\ | 
|  216 JSBool js_class_name::JSConstructor(IFXJS_Context* cc, JSFXObject obj, JSFXObjec
     t global)\ |  213 JSBool js_class_name::JSConstructor(IFXJS_Context* cc, JSFXObject obj, JSFXObjec
     t global)\ | 
|  217 {\ |  214 {\ | 
|  218         CJS_Object* pObj = FX_NEW js_class_name(obj);\ |  215         CJS_Object* pObj = FX_NEW js_class_name(obj);\ | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
|  241                         if (JS_DefineObjProperty(pRuntime, nObjDefnID, JS_Class_
     Properties[j].pName, JS_Class_Properties[j].pPropGet, JS_Class_Properties[j].pPr
     opPut) < 0) return -1;\ |  238                         if (JS_DefineObjProperty(pRuntime, nObjDefnID, JS_Class_
     Properties[j].pName, JS_Class_Properties[j].pPropGet, JS_Class_Properties[j].pPr
     opPut) < 0) return -1;\ | 
|  242                 }\ |  239                 }\ | 
|  243                 for (int k=0, szk=sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-
     1; k<szk; k++)\ |  240                 for (int k=0, szk=sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-
     1; k<szk; k++)\ | 
|  244                 {\ |  241                 {\ | 
|  245                         if (JS_DefineObjMethod(pRuntime, nObjDefnID,JS_Class_Met
     hods[k].pName, JS_Class_Methods[k].pMethodCall, JS_Class_Methods[k].nParamNum) <
      0) return -1;\ |  242                         if (JS_DefineObjMethod(pRuntime, nObjDefnID,JS_Class_Met
     hods[k].pName, JS_Class_Methods[k].pMethodCall, JS_Class_Methods[k].nParamNum) <
      0) return -1;\ | 
|  246                 }\ |  243                 }\ | 
|  247                 return nObjDefnID;\ |  244                 return nObjDefnID;\ | 
|  248         }\ |  245         }\ | 
|  249         return -1;\ |  246         return -1;\ | 
|  250 }\ |  247 }\ | 
|  251 void js_class_name::GetConsts(JSConstSpec*& pConsts, int& nSize)\ |  | 
|  252 {\ |  | 
|  253         pConsts = JS_Class_Consts;\ |  | 
|  254         nSize = sizeof(JS_Class_Consts) / sizeof(JSConstSpec) - 1;\ |  | 
|  255 }\ |  | 
|  256 void js_class_name::GetProperties(JSPropertySpec*& pProperties, int& nSize)\ |  | 
|  257 {\ |  | 
|  258         pProperties = JS_Class_Properties;\ |  | 
|  259         nSize = sizeof(JS_Class_Properties) / sizeof(JSPropertySpec) - 1;\ |  | 
|  260 }\ |  | 
|  261 void js_class_name::GetMethods(JSMethodSpec*& pMethods, int& nSize)\ |  | 
|  262 {\ |  | 
|  263         pMethods = JS_Class_Methods;\ |  | 
|  264         nSize = sizeof(JS_Class_Methods) / sizeof(JSMethodSpec) - 1;\ |  | 
|  265 } |  | 
|  266  |  248  | 
|  267 #define IMPLEMENT_JS_CLASS(js_class_name, class_name) IMPLEMENT_JS_CLASS_RICH(js
     _class_name, class_name, class_name) |  249 #define IMPLEMENT_JS_CLASS(js_class_name, class_name) IMPLEMENT_JS_CLASS_RICH(js
     _class_name, class_name, class_name) | 
|  268  |  250  | 
|  269 /* ======================================== CONST CLASS ========================
     ==================== */ |  251 /* ======================================== CONST CLASS ========================
     ==================== */ | 
|  270  |  252  | 
|  271 #define DECLARE_JS_CLASS_CONST() \ |  253 #define DECLARE_JS_CLASS_CONST() \ | 
|  272         static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ |  254         static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ | 
|  273         static void GetConsts(JSConstSpec*& pConsts, int& nSize);\ |  | 
|  274         static JSConstSpec JS_Class_Consts[];\ |  255         static JSConstSpec JS_Class_Consts[];\ | 
|  275         static const wchar_t* m_pClassName |  256         static const wchar_t* m_pClassName | 
|  276  |  257  | 
|  277 #define IMPLEMENT_JS_CLASS_CONST(js_class_name, class_name) \ |  258 #define IMPLEMENT_JS_CLASS_CONST(js_class_name, class_name) \ | 
|  278 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name);\ |  259 const wchar_t* js_class_name::m_pClassName = JS_WIDESTRING(class_name);\ | 
|  279 int js_class_name::Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType)\ |  260 int js_class_name::Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType)\ | 
|  280 {\ |  261 {\ | 
|  281         int nObjDefnID = JS_DefineObj(pRuntime, js_class_name::m_pClassName, eOb
     jType, NULL, NULL, 0);\ |  262         int nObjDefnID = JS_DefineObj(pRuntime, js_class_name::m_pClassName, eOb
     jType, NULL, NULL, 0);\ | 
|  282         if (nObjDefnID >=0)\ |  263         if (nObjDefnID >=0)\ | 
|  283         {\ |  264         {\ | 
|  284                 for (int i=0, sz=sizeof(JS_Class_Consts)/sizeof(JSConstSpec)-1; 
     i<sz; i++)\ |  265                 for (int i=0, sz=sizeof(JS_Class_Consts)/sizeof(JSConstSpec)-1; 
     i<sz; i++)\ | 
|  285                 {\ |  266                 {\ | 
|  286                         if (JS_Class_Consts[i].t == 0)\ |  267                         if (JS_Class_Consts[i].t == 0)\ | 
|  287                         {\ |  268                         {\ | 
|  288                                 if (JS_DefineObjConst(pRuntime, nObjDefnID, JS_C
     lass_Consts[i].pName, JS_NewNumber(pRuntime,JS_Class_Consts[i].number)) < 0) ret
     urn -1;\ |  269                                 if (JS_DefineObjConst(pRuntime, nObjDefnID, JS_C
     lass_Consts[i].pName, JS_NewNumber(pRuntime,JS_Class_Consts[i].number)) < 0) ret
     urn -1;\ | 
|  289                         }\ |  270                         }\ | 
|  290                         else\ |  271                         else\ | 
|  291                         {\ |  272                         {\ | 
|  292                         if (JS_DefineObjConst(pRuntime, nObjDefnID, JS_Class_Con
     sts[i].pName, JS_NewString(pRuntime,JS_Class_Consts[i].string)) < 0) return -1;\ |  273                         if (JS_DefineObjConst(pRuntime, nObjDefnID, JS_Class_Con
     sts[i].pName, JS_NewString(pRuntime,JS_Class_Consts[i].string)) < 0) return -1;\ | 
|  293                         }\ |  274                         }\ | 
|  294                 }\ |  275                 }\ | 
|  295                 return nObjDefnID;\ |  276                 return nObjDefnID;\ | 
|  296         }\ |  277         }\ | 
|  297         return -1;\ |  278         return -1;\ | 
|  298 }\ |  | 
|  299 void js_class_name::GetConsts(JSConstSpec*& pConsts, int& nSize)\ |  | 
|  300 {\ |  | 
|  301         pConsts = JS_Class_Consts;\ |  | 
|  302         nSize = sizeof(JS_Class_Consts)/sizeof(JSConstSpec)-1;\ |  | 
|  303 } |  279 } | 
|  304  |  280  | 
|  305 /* ===================================== SPECIAL JS CLASS ======================
     ========================= */ |  281 /* ===================================== SPECIAL JS CLASS ======================
     ========================= */ | 
|  306  |  282  | 
|  307 #define DECLARE_SPECIAL_JS_CLASS(js_class_name) \ |  283 #define DECLARE_SPECIAL_JS_CLASS(js_class_name) \ | 
|  308         static JSBool JSConstructor(IFXJS_Context* cc, JSFXObject obj, JSFXObjec
     t global);\ |  284         static JSBool JSConstructor(IFXJS_Context* cc, JSFXObject obj, JSFXObjec
     t global);\ | 
|  309         static JSBool JSDestructor(JSFXObject obj);\ |  285         static JSBool JSDestructor(JSFXObject obj);\ | 
|  310         static void GetConsts(JSConstSpec*& pConsts, int& nSize);\ |  | 
|  311         static void GetProperties(JSPropertySpec*& pProperties, int& nSize);\ |  | 
|  312         static void GetMethods(JSMethodSpec*& pMethods, int& nSize);\ |  | 
|  313         static JSConstSpec JS_Class_Consts[];\ |  286         static JSConstSpec JS_Class_Consts[];\ | 
|  314         static JSPropertySpec JS_Class_Properties[];\ |  287         static JSPropertySpec JS_Class_Properties[];\ | 
|  315         static JSMethodSpec     JS_Class_Methods[];\ |  288         static JSMethodSpec     JS_Class_Methods[];\ | 
|  316         static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ |  289         static int Init(IJS_Runtime* pRuntime, FXJSOBJTYPE eObjType);\ | 
|  317         static const wchar_t* m_pClassName;\ |  290         static const wchar_t* m_pClassName;\ | 
|  318         static void queryprop_##js_class_name##_static(JS_PROPQUERY_ARGS);\ |  291         static void queryprop_##js_class_name##_static(JS_PROPQUERY_ARGS);\ | 
|  319         static void getprop_##js_class_name##_static(JS_NAMED_PROPGET_ARGS);\ |  292         static void getprop_##js_class_name##_static(JS_NAMED_PROPGET_ARGS);\ | 
|  320         static void putprop_##js_class_name##_static(JS_NAMED_PROPPUT_ARGS);\ |  293         static void putprop_##js_class_name##_static(JS_NAMED_PROPPUT_ARGS);\ | 
|  321         static void delprop_##js_class_name##_static(JS_PROPDEL_ARGS) |  294         static void delprop_##js_class_name##_static(JS_PROPDEL_ARGS) | 
|  322  |  295  | 
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  479                 for (int k=0, szk=sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-
     1; k<szk; k++)\ |  452                 for (int k=0, szk=sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-
     1; k<szk; k++)\ | 
|  480                 {\ |  453                 {\ | 
|  481                         if (JS_DefineObjMethod(pRuntime, nObjDefnID,JS_Class_Met
     hods[k].pName,JS_Class_Methods[k].pMethodCall,JS_Class_Methods[k].nParamNum)<0)r
     eturn -1;\ |  454                         if (JS_DefineObjMethod(pRuntime, nObjDefnID,JS_Class_Met
     hods[k].pName,JS_Class_Methods[k].pMethodCall,JS_Class_Methods[k].nParamNum)<0)r
     eturn -1;\ | 
|  482                 }\ |  455                 }\ | 
|  483                 if (JS_DefineObjAllProperties(pRuntime, nObjDefnID, js_class_nam
     e::queryprop_##js_class_name##_static, js_class_name::getprop_##js_class_name##_
     static,js_class_name::putprop_##js_class_name##_static,js_class_name::delprop_##
     js_class_name##_static)<0) return -1;\ |  456                 if (JS_DefineObjAllProperties(pRuntime, nObjDefnID, js_class_nam
     e::queryprop_##js_class_name##_static, js_class_name::getprop_##js_class_name##_
     static,js_class_name::putprop_##js_class_name##_static,js_class_name::delprop_##
     js_class_name##_static)<0) return -1;\ | 
|  484 \ |  457 \ | 
|  485                 return nObjDefnID;\ |  458                 return nObjDefnID;\ | 
|  486         }\ |  459         }\ | 
|  487 \ |  460 \ | 
|  488         return -1;\ |  461         return -1;\ | 
|  489 }\ |  | 
|  490 void js_class_name::GetConsts(JSConstSpec*& pConsts, int& nSize)\ |  | 
|  491 {\ |  | 
|  492         pConsts = JS_Class_Consts;\ |  | 
|  493         nSize = sizeof(JS_Class_Consts)/sizeof(JSConstSpec)-1;\ |  | 
|  494 }\ |  | 
|  495 void js_class_name::GetProperties(JSPropertySpec*& pProperties, int& nSize)\ |  | 
|  496 {\ |  | 
|  497         pProperties = JS_Class_Properties;\ |  | 
|  498         nSize = sizeof(JS_Class_Properties)/sizeof(JSPropertySpec)-1;\ |  | 
|  499 }\ |  | 
|  500 void js_class_name::GetMethods(JSMethodSpec*& pMethods, int& nSize)\ |  | 
|  501 {\ |  | 
|  502         pMethods = JS_Class_Methods;\ |  | 
|  503         nSize = sizeof(JS_Class_Methods)/sizeof(JSMethodSpec)-1;\ |  | 
|  504 } |  462 } | 
|  505  |  463  | 
|  506 #define JS_SPECIAL_STATIC_METHOD(method_name, class_alternate, class_name)\ |  464 #define JS_SPECIAL_STATIC_METHOD(method_name, class_alternate, class_name)\ | 
|  507         static void method_name##_static(const v8::FunctionCallbackInfo<v8::Valu
     e>& info)\ |  465         static void method_name##_static(const v8::FunctionCallbackInfo<v8::Valu
     e>& info)\ | 
|  508 {\ |  466 {\ | 
|  509         v8::Isolate* isolate = info.GetIsolate();\ |  467         v8::Isolate* isolate = info.GetIsolate();\ | 
|  510         v8::Local<v8::Context> context = isolate->GetCurrentContext();\ |  468         v8::Local<v8::Context> context = isolate->GetCurrentContext();\ | 
|  511         IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)isolate->GetData(2);\ |  469         IFXJS_Runtime* pRuntime = (IFXJS_Runtime*)isolate->GetData(2);\ | 
|  512         if (pRuntime == NULL) return;\ |  470         if (pRuntime == NULL) return;\ | 
|  513         IFXJS_Context* cc = pRuntime->GetCurrentContext();\ |  471         IFXJS_Context* cc = pRuntime->GetCurrentContext();\ | 
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  621 #define VALUE_NAME_NULL                 L"null" |  579 #define VALUE_NAME_NULL                 L"null" | 
|  622 #define VALUE_NAME_UNDEFINED    L"undefined" |  580 #define VALUE_NAME_UNDEFINED    L"undefined" | 
|  623  |  581  | 
|  624 #define CLASSNAME_ARRAY                 L"Array" |  582 #define CLASSNAME_ARRAY                 L"Array" | 
|  625 #define CLASSNAME_DATE                  L"Date" |  583 #define CLASSNAME_DATE                  L"Date" | 
|  626 #define CLASSNAME_STRING                L"v8::String" |  584 #define CLASSNAME_STRING                L"v8::String" | 
|  627  |  585  | 
|  628 FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p); |  586 FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p); | 
|  629  |  587  | 
|  630 #endif //_JS_DEFINE_H_ |  588 #endif //_JS_DEFINE_H_ | 
| OLD | NEW |