Hook up the default v8::Platform implementation to pdfium
authorJochen Eisinger <jochen@chromium.org>
Thu, 17 Jul 2014 06:46:45 +0000 (08:46 +0200)
committerJochen Eisinger <jochen@chromium.org>
Thu, 17 Jul 2014 06:46:45 +0000 (08:46 +0200)
It remains to call the PumpMessageLoop() method at a regular interval,
however, since nothing posts to the loop yet, that shouldn't be a
problem.

BUG=25
R=jam@chromium.org

Review URL: https://codereview.chromium.org/374123002

AUTHORS
BUILD.gn
fpdfsdk/include/javascript/IJavaScript.h
fpdfsdk/src/javascript/JS_Runtime.cpp
pdfium.gyp

diff --git a/AUTHORS b/AUTHORS
index 29bd399..f12a529 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -12,6 +12,7 @@ Andrey Khalyavin <halyavin@chromium.org>
 Brett Wilson <brettw@chromium.org>
 Chris Palmer <palmer@chromium.org>
 Finnur Thorarinsson <finnur@chromium.org>
+Jochen Eisinger <jochen@chromium.org>
 John Abd-El-Malek <jam@chromium.org>
 Julien Tinnes <jln@chromium.org>
 Kostya Serebryany <kcc@chromium.org>
index 7f5c821..9ecd708 100644 (file)
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -803,6 +803,7 @@ static_library("javascript") {
   }
   configs += [ ":pdfium_config", "//build/config/compiler:no_chromium_code" ]
   include_dirs = [
+    "//v8",
     "//v8/include",
   ]
   deps = [
@@ -823,6 +824,7 @@ static_library("jsapi") {
   }
   configs += [ ":pdfium_config", "//build/config/compiler:no_chromium_code" ]
   include_dirs = [
+    "//v8",
     "//v8/include",
   ]
   deps = [
index 3087b6a..7633bbb 100644 (file)
@@ -7,6 +7,10 @@
 #ifndef _IJAVASCRIPT_H_
 #define _IJAVASCRIPT_H_
 
+namespace v8 {
+class Platform;
+}
+
 class IFXJS_Context  
 {
 public:
@@ -92,7 +96,7 @@ class CJS_GlobalData;
 class CJS_RuntimeFactory
 {
 public:
-       CJS_RuntimeFactory():m_bInit(FALSE),m_nRef(0),m_pGlobalData(NULL),m_nGlobalDataCount(0) {}
+       CJS_RuntimeFactory():m_bInit(FALSE),m_nRef(0),m_pGlobalData(NULL),m_nGlobalDataCount(0),m_platform(NULL) {}
        ~CJS_RuntimeFactory();
        IFXJS_Runtime*                                  NewJSRuntime(CPDFDoc_Environment* pApp);
        void                                                    DeleteJSRuntime(IFXJS_Runtime* pRuntime);
@@ -106,6 +110,7 @@ private:
        int m_nRef;
        CJS_GlobalData*                                 m_pGlobalData;
        FX_INT32                                                m_nGlobalDataCount;
+        v8::Platform*                                          m_platform;
 };
 
 #endif //_IJAVASCRIPT_H_
index c7a92eb..543540b 100644 (file)
@@ -27,6 +27,8 @@
 #include "../../include/javascript/global.h"
 #include "../../include/javascript/console.h"
 
+#include <libplatform/libplatform.h>
+
 CJS_RuntimeFactory::~CJS_RuntimeFactory()
 {
 }
@@ -36,6 +38,8 @@ IFXJS_Runtime*                                        CJS_RuntimeFactory::NewJSRuntime(CPDFDoc_Environment* pApp)
        if (!m_bInit)
        {
                JS_Initial();
+                m_platform = v8::platform::CreateDefaultPlatform();
+                v8::V8::InitializePlatform(m_platform);
                
                m_bInit = TRUE;
        }
@@ -55,6 +59,9 @@ void                                                  CJS_RuntimeFactory::Release()
                {
                        JS_Release();
                        ReleaseGlobalData();
+                        v8::V8::ShutdownPlatform();
+                        delete m_platform;
+                        m_platform = NULL;
                        m_bInit = FALSE;
                }
        }
index 55a7db8..ff61931 100644 (file)
       'target_name': 'javascript',
       'type': 'static_library',
         'include_dirs': [
+          '<(DEPTH)/v8',
           '<(DEPTH)/v8/include',
         ],
       'dependencies': [
         '<(DEPTH)/v8/tools/gyp/v8.gyp:v8',
+        '<(DEPTH)/v8/tools/gyp/v8.gyp:v8_libplatform',
       ],
       'export_dependent_settings': [
         '<(DEPTH)/v8/tools/gyp/v8.gyp:v8',
         '<(DEPTH)/v8/tools/gyp/v8.gyp:v8',
       ],
       'include_dirs': [
+        '<(DEPTH)/v8',
         '<(DEPTH)/v8/include',
       ],
       'ldflags': [ '-L<(PRODUCT_DIR)',],