Refactor fxjs_v8 and add embeddertests for it.
[pdfium.git] / fpdfsdk / src / javascript / app.cpp
index 8d895ab..a679451 100644 (file)
 
 static v8::Isolate* GetIsolate(IFXJS_Context* cc) {
   CJS_Context* pContext = (CJS_Context*)cc;
-  ASSERT(pContext != NULL);
-
   CJS_Runtime* pRuntime = pContext->GetJSRuntime();
-  ASSERT(pRuntime != NULL);
-
   return pRuntime->GetIsolate();
 }
 
-/* ---------------------------- TimerObj ---------------------------- */
-
 BEGIN_JS_STATIC_CONST(CJS_TimerObj)
 END_JS_STATIC_CONST()
 
@@ -53,18 +47,13 @@ CJS_Timer* TimerObj::GetTimer() const {
   return m_pTimer;
 }
 
-#define JS_STR_VIEWERTYPE_READER L"Reader"
-#define JS_STR_VIEWERTYPE_STANDARD L"Exchange"
+#define JS_STR_VIEWERTYPE L"pdfium"
 #define JS_STR_VIEWERVARIATION L"Full"
 #define JS_STR_PLATFORM L"WIN"
 #define JS_STR_LANGUANGE L"ENU"
-#define JS_STR_VIEWERVERSION 8
+#define JS_NUM_VIEWERVERSION 8
 #define JS_NUM_FORMSVERSION 7
 
-#define JS_FILEPATH_MAXLEN 2000
-
-/* ---------------------------- app ---------------------------- */
-
 BEGIN_JS_STATIC_CONST(CJS_App)
 END_JS_STATIC_CONST()
 
@@ -133,13 +122,15 @@ FX_BOOL app::activeDocs(IFXJS_Context* cc,
   if (CPDFSDK_Document* pDoc = pApp->GetSDKDocument()) {
     CJS_Document* pJSDocument = NULL;
     if (pDoc == pCurDoc) {
-      JSFXObject pObj = JS_GetThisObj(*pRuntime);
-      if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"Document"))
+      v8::Local<v8::Object> pObj = JS_GetThisObj(pRuntime->GetIsolate());
+      if (JS_GetObjDefnID(pObj) ==
+          JS_GetObjDefnID(pRuntime->GetIsolate(), L"Document"))
         pJSDocument =
             (CJS_Document*)JS_GetPrivate(pRuntime->GetIsolate(), pObj);
     } else {
-      JSFXObject pObj = JS_NewFxDynamicObj(
-          *pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Document"));
+      v8::Local<v8::Object> pObj = JS_NewFxDynamicObj(
+          pRuntime->GetIsolate(), pContext,
+          JS_GetObjDefnID(pRuntime->GetIsolate(), L"Document"));
       pJSDocument = (CJS_Document*)JS_GetPrivate(pRuntime->GetIsolate(), pObj);
       ASSERT(pJSDocument != NULL);
     }
@@ -188,7 +179,7 @@ FX_BOOL app::viewerType(IFXJS_Context* cc,
                         CJS_PropValue& vp,
                         CFX_WideString& sError) {
   if (vp.IsGetting()) {
-    vp << L"unknown";
+    vp << JS_STR_VIEWERTYPE;
     return TRUE;
   }
 
@@ -210,7 +201,7 @@ FX_BOOL app::viewerVersion(IFXJS_Context* cc,
                            CJS_PropValue& vp,
                            CFX_WideString& sError) {
   if (vp.IsGetting()) {
-    vp << JS_STR_VIEWERVERSION;
+    vp << JS_NUM_VIEWERVERSION;
     return TRUE;
   }
 
@@ -279,7 +270,7 @@ FX_BOOL app::alert(IFXJS_Context* cc,
 
   if (iSize == 1) {
     if (params[0].GetType() == VT_object) {
-      JSObject pObj = params[0].ToV8Object();
+      v8::Local<v8::Object> pObj = params[0].ToV8Object();
       {
         v8::Local<v8::Value> pValue =
             JS_GetObjectElement(isolate, pObj, L"cMsg");
@@ -424,8 +415,9 @@ FX_BOOL app::setInterval(IFXJS_Context* cc,
   //   pTimer->SetStartTime(GetTickCount());
   pTimer->SetJSTimer(dwInterval);
 
-  JSFXObject pRetObj = JS_NewFxDynamicObj(
-      *pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"TimerObj"));
+  v8::Local<v8::Object> pRetObj =
+      JS_NewFxDynamicObj(pRuntime->GetIsolate(), pContext,
+                         JS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj"));
 
   CJS_TimerObj* pJS_TimerObj =
       (CJS_TimerObj*)JS_GetPrivate(pRuntime->GetIsolate(), pRetObj);
@@ -476,8 +468,9 @@ FX_BOOL app::setTimeOut(IFXJS_Context* cc,
   pTimer->SetTimeOut(dwTimeOut);
   pTimer->SetJSTimer(dwTimeOut);
 
-  JSFXObject pRetObj = JS_NewFxDynamicObj(
-      *pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"TimerObj"));
+  v8::Local<v8::Object> pRetObj =
+      JS_NewFxDynamicObj(pRuntime->GetIsolate(), pContext,
+                         JS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj"));
 
   CJS_TimerObj* pJS_TimerObj =
       (CJS_TimerObj*)JS_GetPrivate(pRuntime->GetIsolate(), pRetObj);
@@ -508,9 +501,10 @@ FX_BOOL app::clearTimeOut(IFXJS_Context* cc,
   }
 
   if (params[0].GetType() == VT_fxobject) {
-    JSFXObject pObj = params[0].ToV8Object();
+    v8::Local<v8::Object> pObj = params[0].ToV8Object();
     {
-      if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"TimerObj")) {
+      if (JS_GetObjDefnID(pObj) ==
+          JS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj")) {
         if (CJS_Object* pJSObj = params[0].ToCJSObject()) {
           if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) {
             if (CJS_Timer* pTimer = pTimerObj->GetTimer()) {
@@ -550,9 +544,10 @@ FX_BOOL app::clearInterval(IFXJS_Context* cc,
   }
 
   if (params[0].GetType() == VT_fxobject) {
-    JSFXObject pObj = params[0].ToV8Object();
+    v8::Local<v8::Object> pObj = params[0].ToV8Object();
     {
-      if (JS_GetObjDefnID(pObj) == JS_GetObjDefnID(*pRuntime, L"TimerObj")) {
+      if (JS_GetObjDefnID(pObj) ==
+          JS_GetObjDefnID(pRuntime->GetIsolate(), L"TimerObj")) {
         if (CJS_Object* pJSObj = params[0].ToCJSObject()) {
           if (TimerObj* pTimerObj = (TimerObj*)pJSObj->GetEmbedObject()) {
             if (CJS_Timer* pTimer = pTimerObj->GetTimer()) {
@@ -647,7 +642,7 @@ FX_BOOL app::mailMsg(IFXJS_Context* cc,
     return FALSE;
 
   if (params[0].GetType() == VT_object) {
-    JSObject pObj = params[0].ToV8Object();
+    v8::Local<v8::Object> pObj = params[0].ToV8Object();
 
     v8::Local<v8::Value> pValue = JS_GetObjectElement(isolate, pObj, L"bUI");
     bUI = CJS_Value(isolate, pValue, GET_VALUE_TYPE(pValue)).ToBool();
@@ -785,7 +780,7 @@ FX_BOOL app::response(IFXJS_Context* cc,
 
   int iLength = params.size();
   if (iLength > 0 && params[0].GetType() == VT_object) {
-    JSObject pObj = params[0].ToV8Object();
+    v8::Local<v8::Object> pObj = params[0].ToV8Object();
     v8::Local<v8::Value> pValue =
         JS_GetObjectElement(isolate, pObj, L"cQuestion");
     swQuestion =