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)',],