From d831dc7147e9895185740f551fed7abe246e2adf Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Mon, 19 Oct 2015 16:04:22 -0700 Subject: Merge to XFA: Consolidate test support code. Original Review URL: https://codereview.chromium.org/1416713002 . (cherry picked from commit 6d34d056a7188b7ae9800fe3ceb68645e0442879) Conflicts: BUILD.gn samples/BUILD.gn samples/pdfium_test.cc samples/samples.gyp R=thestig@chromium.org Review URL: https://codereview.chromium.org/1413593003 . --- samples/BUILD.gn | 6 ++- samples/pdfium_test.cc | 116 ++++--------------------------------------------- samples/samples.gyp | 4 ++ 3 files changed, 17 insertions(+), 109 deletions(-) (limited to 'samples') diff --git a/samples/BUILD.gn b/samples/BUILD.gn index f3bcbda418..2039d2f4dd 100644 --- a/samples/BUILD.gn +++ b/samples/BUILD.gn @@ -5,6 +5,7 @@ import("../pdfium.gni") group("samples") { + testonly = true deps = [ ":pdfium_test", ] @@ -25,12 +26,14 @@ config("pdfium_samples_config") { } executable("pdfium_test") { + testonly = true sources = [ "image_diff_png.cc", "pdfium_test.cc", ] deps = [ - "//third_party/pdfium", + "//third_party/pdfium:pdfium", + "//third_party/pdfium:test_support", ] if (pdf_enable_v8) { deps += [ @@ -45,6 +48,7 @@ executable("pdfium_test") { } executable("pdfium_diff") { + testonly = true sources = [ "image_diff.cc", "image_diff_png.cc", diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc index 0525f24067..19b6b4642e 100644 --- a/samples/pdfium_test.cc +++ b/samples/pdfium_test.cc @@ -19,7 +19,9 @@ #include "../public/fpdf_formfill.h" #include "../public/fpdf_text.h" #include "../public/fpdfview.h" +#include "../testing/test_support.h" #include "image_diff_png.h" + #ifdef PDF_ENABLE_V8 #include "v8/include/libplatform/libplatform.h" #include "v8/include/v8.h" @@ -27,9 +29,6 @@ #ifdef _WIN32 #define snprintf _snprintf -#define PATH_SEPARATOR '\\' -#else -#define PATH_SEPARATOR '/' #endif enum OutputFormat { @@ -52,76 +51,6 @@ struct Options { std::string font_directory; }; -// 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"); - if (!file) { - fprintf(stderr, "Failed to open: %s\n", filename); - return nullptr; - } - (void)fseek(file, 0, SEEK_END); - size_t file_length = ftell(file); - if (!file_length) { - (void)fclose(file); - return nullptr; - } - (void)fseek(file, 0, SEEK_SET); - char* buffer = static_cast(malloc(file_length)); - if (!buffer) { - (void)fclose(file); - return nullptr; - } - size_t bytes_read = fread(buffer, 1, file_length, file); - (void)fclose(file); - if (bytes_read != file_length) { - fprintf(stderr, "Failed to read: %s\n", filename); - free(buffer); - return nullptr; - } - *retlen = bytes_read; - 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. -static std::string GetFullPathForSnapshotFile(const Options& options, - 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 (last_separator != std::string::npos) { - result = options.exe_path.substr(0, last_separator + 1); - } - } - result += filename; - return result; -} - -// 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, - v8::StartupData* result_data) { - std::string full_path = GetFullPathForSnapshotFile(options, bin_filename); - size_t data_length = 0; - char* data_buffer = GetFileContents(full_path.c_str(), &data_length); - if (!data_buffer) { - return false; - } - result_data->data = const_cast(data_buffer); - result_data->raw_size = data_length; - return true; -} -#endif // V8_USE_EXTERNAL_STARTUP_DATA -#endif // PDF_ENABLE_V8 - static bool CheckDimensions(int stride, int width, int height) { if (stride < 0 || width < 0 || height < 0) return false; @@ -407,28 +336,6 @@ bool ParseCommandLine(const std::vector& args, return true; } -class TestLoader { - public: - TestLoader(const char* pBuf, size_t len); - - const char* m_pBuf; - size_t m_Len; -}; - -TestLoader::TestLoader(const char* pBuf, size_t len) - : m_pBuf(pBuf), m_Len(len) { -} - -int GetBlock(void* param, - unsigned long pos, - unsigned char* pBuf, - unsigned long size) { - TestLoader* pLoader = static_cast(param); - if (pos + size < pos || pos + size > pLoader->m_Len) return 0; - memcpy(pBuf, pLoader->m_pBuf + pos, size); - return 1; -} - FPDF_BOOL Is_Data_Avail(FX_FILEAVAIL* pThis, size_t offset, size_t size) { return true; } @@ -452,11 +359,10 @@ void RenderPdf(const std::string& name, const char* pBuf, size_t len, form_callbacks.m_pJsPlatform = &platform_callbacks; TestLoader loader(pBuf, len); - FPDF_FILEACCESS file_access; memset(&file_access, '\0', sizeof(file_access)); file_access.m_FileLen = static_cast(len); - file_access.m_GetBlock = GetBlock; + file_access.m_GetBlock = TestLoader::GetBlock; file_access.m_Param = &loader; FX_FILEAVAIL file_avail; @@ -611,20 +517,14 @@ int main(int argc, const char* argv[]) { } #ifdef PDF_ENABLE_V8 - v8::V8::InitializeICU(); - v8::Platform* platform = v8::platform::CreateDefaultPlatform(); - v8::V8::InitializePlatform(platform); - v8::V8::Initialize(); - + v8::Platform* platform; #ifdef V8_USE_EXTERNAL_STARTUP_DATA v8::StartupData natives; v8::StartupData snapshot; - if (!GetExternalData(options, "natives_blob.bin", &natives) || - !GetExternalData(options, "snapshot_blob.bin", &snapshot)) { - return 1; - } - v8::V8::SetNativesDataBlob(&natives); - v8::V8::SetSnapshotDataBlob(&snapshot); + InitializeV8ForPDFium(options.exe_path, options.bin_directory, &natives, + &snapshot, &platform); +#else // V8_USE_EXTERNAL_STARTUP_DATA + InitializeV8ForPDFium(&platform); #endif // V8_USE_EXTERNAL_STARTUP_DATA #endif // PDF_ENABLE_V8 diff --git a/samples/samples.gyp b/samples/samples.gyp index e39af20882..0044c5c030 100644 --- a/samples/samples.gyp +++ b/samples/samples.gyp @@ -35,6 +35,10 @@ { 'target_name': 'pdfium_test', 'type': 'executable', + 'dependencies': [ + '../pdfium.gyp:pdfium', + '../pdfium.gyp:test_support', + ], 'sources': [ 'pdfium_test.cc', 'image_diff_png.cc', -- cgit v1.2.3