Merge to XFA: Allow compiling PDFium without V8.

Original Review URL: https://codereview.chromium.org/1395733006 .
(cherry picked from commit f1c713663192368d26031a4caed1f9705f4510af)

Conflicts:
  BUILD.gn
  fpdfsdk/src/fpdfview.cpp
  fpdfsdk/src/javascript/JS_Runtime.cpp
  pdfium.gyp
  samples/BUILD.gn
  samples/samples.gyp

BUG=pdfium:211
R=thestig@chromium.org

Review URL: https://codereview.chromium.org/1393833006 .
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index 1a3c4c6..0aacd48 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -17,8 +17,11 @@
 #include "../public/fpdf_text.h"
 #include "../public/fpdfview.h"
 #include "testing/gmock/include/gmock/gmock.h"
+
+#ifdef PDF_ENABLE_V8
 #include "v8/include/libplatform/libplatform.h"
 #include "v8/include/v8.h"
+#endif  // PDF_ENABLE_V8
 
 #ifdef _WIN32
 #define snprintf _snprintf
@@ -59,6 +62,7 @@
   return buffer;
 }
 
+#ifdef PDF_ENABLE_V8
 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
 // Returns the full path for an external V8 data file based on either
 // the currect exectuable path or an explicit override.
@@ -91,7 +95,7 @@
   return true;
 }
 #endif  // V8_USE_EXTERNAL_STARTUP_DATA
-
+#endif  // PDF_ENABLE_V8
 }  // namespace
 
 class TestLoader {
@@ -141,6 +145,7 @@
 }
 
 void EmbedderTest::SetUp() {
+#ifdef PDF_ENABLE_V8
   v8::V8::InitializeICU();
 
   platform_ = v8::platform::CreateDefaultPlatform();
@@ -158,12 +163,13 @@
   v8::V8::SetNativesDataBlob(&natives_);
   v8::V8::SetSnapshotDataBlob(&snapshot_);
 #endif  // V8_USE_EXTERNAL_STARTUP_DATA
+#endif  // FPDF_ENABLE_V8
 
   FPDF_LIBRARY_CONFIG config;
   config.version = 2;
   config.m_pUserFontPaths = nullptr;
-  config.m_pIsolate = external_isolate_;
   config.m_v8EmbedderSlot = 0;
+  config.m_pIsolate = external_isolate_;
   FPDF_InitLibraryWithConfig(&config);
 
   UNSUPPORT_INFO* info = static_cast<UNSUPPORT_INFO*>(this);
@@ -185,8 +191,12 @@
   }
   FPDFAvail_Destroy(avail_);
   FPDF_DestroyLibrary();
+
+#ifdef PDF_ENABLE_V8
   v8::V8::ShutdownPlatform();
   delete platform_;
+#endif  // PDF_ENABLE_V8
+
   delete loader_;
   free(file_contents_);
 }
diff --git a/testing/embedder_test.h b/testing/embedder_test.h
index f6842d2..fb3ea42 100644
--- a/testing/embedder_test.h
+++ b/testing/embedder_test.h
@@ -14,7 +14,10 @@
 #include "../public/fpdfview.h"
 #include "../third_party/base/nonstd_unique_ptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
+
+#ifdef PDF_ENABLE_V8
 #include "v8/include/v8.h"
+#endif  // PDF_ENABLE_v8
 
 class TestLoader;
 
@@ -61,8 +64,12 @@
   void SetUp() override;
   void TearDown() override;
 
+#ifdef PDF_ENABLE_V8
   // Call before SetUp to pass shared isolate, otherwise PDFium creates one.
-  void SetExternalIsolate(v8::Isolate* isolate) { external_isolate_ = isolate; }
+  void SetExternalIsolate(void* isolate) {
+    external_isolate_ = static_cast<v8::Isolate*>(isolate);
+  }
+#endif  // PDF_ENABLE_V8
 
   void SetDelegate(Delegate* delegate) {
     delegate_ = delegate ? delegate : default_delegate_.get();
@@ -105,10 +112,12 @@
   FX_DOWNLOADHINTS hints_;
   FPDF_FILEACCESS file_access_;
   FX_FILEAVAIL file_avail_;
+#ifdef PDF_ENABLE_V8
   v8::Platform* platform_;
   v8::StartupData natives_;
   v8::StartupData snapshot_;
-  v8::Isolate* external_isolate_;
+#endif  // PDF_ENABLE_V8
+  void* external_isolate_;
   TestLoader* loader_;
   size_t file_length_;
   char* file_contents_;