Merge to XFA: pdfium_embeddertests fixes
authorTom Sepez <tsepez@chromium.org>
Fri, 23 Jan 2015 01:36:32 +0000 (17:36 -0800)
committerTom Sepez <tsepez@chromium.org>
Fri, 23 Jan 2015 01:36:32 +0000 (17:36 -0800)
This pulls in:
af9be4f Add pdfium_embeddertests to BUILD.gn
36faa4a Fix build of pdfium_embeddertest under V8_USE_EXTERNAL_STARTUP_DATA.

TBR=thestig@chromium.org

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

BUILD.gn
pdfium.gyp
testing/embedder_test.cpp

index bd3d3bc..87f360d 100644 (file)
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1560,3 +1560,21 @@ test("pdfium_unittests") {
   configs -= [ "//build/config/compiler:chromium_code" ]
   configs += [ ":pdfium_config", "//build/config/compiler:no_chromium_code" ]
 }
+
+test("pdfium_embeddertests") {
+  sources = [
+    "fpdfsdk/src/fpdfdoc_embeddertest.cpp",
+    "fpdfsdk/src/fpdfview_embeddertest.cpp",
+    "testing/embedder_test.cpp",
+    "testing/embedder_test.h",
+    "testing/fx_string_testhelpers.cpp",
+    "testing/fx_string_testhelpers.h",
+  ]
+  deps = [
+    "//testing/gtest",
+    ":pdfium"
+  ]
+  include_dirs = [ "." ]
+  configs -= [ "//build/config/compiler:chromium_code" ]
+  configs += [ ":pdfium_config", "//build/config/compiler:no_chromium_code" ]
+}
index 68ddcec..a3f7215 100644 (file)
       'target_name': 'pdfium_embeddertests',
       'type': 'executable',
       'dependencies': [
-        '<(DEPTH)/testing/gtest.gyp:gtest_main',
         '<(DEPTH)/testing/gtest.gyp:gtest',
         'pdfium',
       ],
index 539f48c..bebe307 100644 (file)
@@ -29,6 +29,8 @@
 
 namespace {
 
+const char* g_exe_path_ = nullptr;
+
 // Reads the entire contents of a file into a newly malloc'd buffer.
 static char* GetFileContents(const char* filename, size_t* retlen) {
   FILE* file = fopen(filename, "rb");
@@ -60,18 +62,13 @@ static char* GetFileContents(const char* filename, size_t* retlen) {
 #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.
-static std::string GetFullPathForSnapshotFile(const Options& options,
+static std::string GetFullPathForSnapshotFile(const std::string& exe_path,
                                               const std::string& filename) {
   std::string result;
-  if (!options.bin_directory.empty()) {
-    result = options.bin_directory;
-    if (*options.bin_directory.rbegin() != PATH_SEPARATOR) {
-      result += PATH_SEPARATOR;
-    }
-  } else if (!options.exe_path.empty()) {
-    size_t last_separator = options.exe_path.rfind(PATH_SEPARATOR);
+  if (!exe_path.empty()) {
+    size_t last_separator = exe_path.rfind(PATH_SEPARATOR);
     if (last_separator != std::string::npos)  {
-      result = options.exe_path.substr(0, last_separator + 1);
+      result = exe_path.substr(0, last_separator + 1);
     }
   }
   result += filename;
@@ -80,10 +77,10 @@ static std::string GetFullPathForSnapshotFile(const Options& options,
 
 // Reads an extenal V8 data file from the |options|-indicated location,
 // returing true on success and false on error.
-static bool GetExternalData(const Options& options,
-                            const std::string& bin_filename,
+static bool GetExternalData(const std::string& exe_path,
+                            const std::string& filename,
                             v8::StartupData* result_data) {
-  std::string full_path = GetFullPathForSnapshotFile(options, bin_filename);
+  std::string full_path = GetFullPathForSnapshotFile(exe_path, filename);
   size_t data_length = 0;
   char* data_buffer = GetFileContents(full_path.c_str(), &data_length);
   if (!data_buffer) {
@@ -177,10 +174,10 @@ void EmbedderTest::SetUp() {
     v8::V8::InitializeICU();
 
 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
-    ASSERT_TRUE(GetExternalData(options, "natives_blob.bin", &natives_));
-    ASSERT_TRUE(GetExternalData(options, "snapshot_blob.bin", &snapshot_));
-    v8::V8::SetNativesDataBlob(&natives);
-    v8::V8::SetSnapshotDataBlob(&snapshot);
+    ASSERT_TRUE(GetExternalData(g_exe_path_, "natives_blob.bin", &natives_));
+    ASSERT_TRUE(GetExternalData(g_exe_path_, "snapshot_blob.bin", &snapshot_));
+    v8::V8::SetNativesDataBlob(&natives_);
+    v8::V8::SetSnapshotDataBlob(&snapshot_);
 #endif  // V8_USE_EXTERNAL_STARTUP_DATA
 
     FPDF_InitLibrary();
@@ -307,3 +304,11 @@ void EmbedderTest::UnloadPage(FPDF_PAGE page, FPDF_FORMHANDLE form) {
   FORM_OnBeforeClosePage(page, form);
   FPDF_ClosePage(page);
 }
+
+// Can't use gtest-provided main since we need to stash the path to the
+// executable in order to find the external V8 binary data files.
+int main(int argc, char** argv) {
+  g_exe_path_ = argv[0];
+  testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}