From 1b1bb499613adc8b051ed602b04bea8758e582e6 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Thu, 22 Jan 2015 17:36:32 -0800 Subject: Merge to XFA: pdfium_embeddertests fixes 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 | 18 ++++++++++++++++++ pdfium.gyp | 1 - testing/embedder_test.cpp | 37 +++++++++++++++++++++---------------- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index bd3d3bc104..87f360d2b5 100644 --- 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" ] +} diff --git a/pdfium.gyp b/pdfium.gyp index 68ddcecbc7..a3f72156ff 100644 --- a/pdfium.gyp +++ b/pdfium.gyp @@ -913,7 +913,6 @@ 'target_name': 'pdfium_embeddertests', 'type': 'executable', 'dependencies': [ - '<(DEPTH)/testing/gtest.gyp:gtest_main', '<(DEPTH)/testing/gtest.gyp:gtest', 'pdfium', ], diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp index 539f48cff5..bebe307cf3 100644 --- a/testing/embedder_test.cpp +++ b/testing/embedder_test.cpp @@ -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(); +} -- cgit v1.2.3