Hook up the default v8::Platform implementation to pdfium 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
diff --git a/AUTHORS b/AUTHORS index 29bd399..f12a529 100644 --- a/AUTHORS +++ b/AUTHORS
@@ -12,6 +12,7 @@ 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>
diff --git a/BUILD.gn b/BUILD.gn index 7f5c821..9ecd708 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -803,6 +803,7 @@ } configs += [ ":pdfium_config", "//build/config/compiler:no_chromium_code" ] include_dirs = [ + "//v8", "//v8/include", ] deps = [ @@ -823,6 +824,7 @@ } configs += [ ":pdfium_config", "//build/config/compiler:no_chromium_code" ] include_dirs = [ + "//v8", "//v8/include", ] deps = [
diff --git a/fpdfsdk/include/javascript/IJavaScript.h b/fpdfsdk/include/javascript/IJavaScript.h index 3087b6a..7633bbb 100644 --- a/fpdfsdk/include/javascript/IJavaScript.h +++ b/fpdfsdk/include/javascript/IJavaScript.h
@@ -7,6 +7,10 @@ #ifndef _IJAVASCRIPT_H_ #define _IJAVASCRIPT_H_ +namespace v8 { +class Platform; +} + class IFXJS_Context { public: @@ -92,7 +96,7 @@ 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 @@ int m_nRef; CJS_GlobalData* m_pGlobalData; FX_INT32 m_nGlobalDataCount; + v8::Platform* m_platform; }; #endif //_IJAVASCRIPT_H_
diff --git a/fpdfsdk/src/javascript/JS_Runtime.cpp b/fpdfsdk/src/javascript/JS_Runtime.cpp index c7a92eb..543540b 100644 --- a/fpdfsdk/src/javascript/JS_Runtime.cpp +++ b/fpdfsdk/src/javascript/JS_Runtime.cpp
@@ -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 @@ if (!m_bInit) { JS_Initial(); + m_platform = v8::platform::CreateDefaultPlatform(); + v8::V8::InitializePlatform(m_platform); m_bInit = TRUE; } @@ -55,6 +59,9 @@ { JS_Release(); ReleaseGlobalData(); + v8::V8::ShutdownPlatform(); + delete m_platform; + m_platform = NULL; m_bInit = FALSE; } }
diff --git a/pdfium.gyp b/pdfium.gyp index 55a7db8..ff61931 100644 --- a/pdfium.gyp +++ b/pdfium.gyp
@@ -750,10 +750,12 @@ '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', @@ -814,6 +816,7 @@ '<(DEPTH)/v8/tools/gyp/v8.gyp:v8', ], 'include_dirs': [ + '<(DEPTH)/v8', '<(DEPTH)/v8/include', ], 'ldflags': [ '-L<(PRODUCT_DIR)',],