1 // Copyright 2015 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef TESTING_EMBEDDER_TEST_SUPPORT_H_ 6 #define TESTING_EMBEDDER_TEST_SUPPORT_H_ 7 8 #include <stdlib.h> 9 #include <memory> 10 #include <string> 11 12 #include "public/fpdfview.h" 13 #include "public/fpdf_save.h" 14 15 #ifdef PDF_ENABLE_V8 16 #include "v8/include/v8.h" 17 #endif // PDF_ENABLE_V8 18 19 namespace pdfium { 20 21 // Used with std::unique_ptr to free() objects that can't be deleted. 22 struct FreeDeleter { operatorFreeDeleter23 inline void operator()(void* ptr) const { free(ptr); } 24 }; 25 26 } // namespace pdfium 27 28 // Reads the entire contents of a file into a newly alloc'd buffer. 29 std::unique_ptr<char, pdfium::FreeDeleter> GetFileContents(const char* filename, 30 size_t* retlen); 31 32 // Converts a FPDF_WIDESTRING to a std::wstring. 33 // Deals with differences between UTF16LE and wchar_t. 34 std::wstring GetPlatformWString(const FPDF_WIDESTRING wstr); 35 36 // Returns a newly allocated FPDF_WIDESTRING. 37 // Deals with differences between UTF16LE and wchar_t. 38 std::unique_ptr<unsigned short, pdfium::FreeDeleter> GetFPDFWideString( 39 const std::wstring& wstr); 40 41 #ifdef PDF_ENABLE_V8 42 #ifdef V8_USE_EXTERNAL_STARTUP_DATA 43 bool InitializeV8ForPDFium(const std::string& exe_path, 44 const std::string& bin_dir, 45 v8::StartupData* natives_blob, 46 v8::StartupData* snapshot_blob, 47 v8::Platform** platform); 48 #else // V8_USE_EXTERNAL_STARTUP_DATA 49 bool InitializeV8ForPDFium(v8::Platform** platform); 50 #endif // V8_USE_EXTERNAL_STARTUP_DATA 51 #endif // PDF_ENABLE_V8 52 53 class TestLoader { 54 public: 55 TestLoader(const char* pBuf, size_t len); 56 static int GetBlock(void* param, 57 unsigned long pos, 58 unsigned char* pBuf, 59 unsigned long size); 60 61 private: 62 const char* const m_pBuf; 63 const size_t m_Len; 64 }; 65 66 class TestSaver : public FPDF_FILEWRITE { 67 public: 68 TestSaver(); 69 70 void ClearString(); GetString()71 const std::string& GetString() const { return m_String; } 72 73 private: 74 static int WriteBlockCallback(FPDF_FILEWRITE* pFileWrite, 75 const void* data, 76 unsigned long size); 77 78 std::string m_String; 79 }; 80 81 #endif // TESTING_EMBEDDER_TEST_SUPPORT_H_ 82