| Index: testing/embedder_test.cpp
|
| diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
|
| index 59190a7751de2cca2e9b9f19294688cb0248e0a1..f9b636a6018a4602b21ddb28c2f3b38507b57419 100644
|
| --- a/testing/embedder_test.cpp
|
| +++ b/testing/embedder_test.cpp
|
| @@ -25,7 +25,16 @@
|
| #endif // PDF_ENABLE_V8
|
|
|
| namespace {
|
| -const char* g_exe_path_ = nullptr;
|
| +
|
| +const char* g_exe_path = nullptr;
|
| +
|
| +#ifdef PDF_ENABLE_V8
|
| +#ifdef V8_USE_EXTERNAL_STARTUP_DATA
|
| +v8::StartupData* g_v8_natives = nullptr;
|
| +v8::StartupData* g_v8_snapshot = nullptr;
|
| +#endif // V8_USE_EXTERNAL_STARTUP_DATA
|
| +#endif // PDF_ENABLE_V8
|
| +
|
| } // namespace
|
|
|
| FPDF_BOOL Is_Data_Avail(FX_FILEAVAIL* pThis, size_t offset, size_t size) {
|
| @@ -50,10 +59,17 @@ EmbedderTest::EmbedderTest()
|
|
|
| #ifdef PDF_ENABLE_V8
|
| #ifdef V8_USE_EXTERNAL_STARTUP_DATA
|
| - InitializeV8ForPDFium(g_exe_path_, std::string(), &natives_, &snapshot_,
|
| - &platform_);
|
| + if (g_v8_natives && g_v8_snapshot) {
|
| + InitializeV8ForPDFium(g_exe_path, std::string(), nullptr, nullptr,
|
| + &platform_);
|
| + } else {
|
| + g_v8_natives = new v8::StartupData;
|
| + g_v8_snapshot = new v8::StartupData;
|
| + InitializeV8ForPDFium(g_exe_path, std::string(), g_v8_natives,
|
| + g_v8_snapshot, &platform_);
|
| + }
|
| #else
|
| - InitializeV8ForPDFium(g_exe_path_, &platform_);
|
| + InitializeV8ForPDFium(g_exe_path, &platform_);
|
| #endif // V8_USE_EXTERNAL_STARTUP_DATA
|
| #endif // FPDF_ENABLE_V8
|
| }
|
| @@ -319,8 +335,19 @@ FPDF_PAGE EmbedderTest::GetPageTrampoline(FPDF_FORMFILLINFO* info,
|
| // 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];
|
| + g_exe_path = argv[0];
|
| testing::InitGoogleTest(&argc, argv);
|
| testing::InitGoogleMock(&argc, argv);
|
| - return RUN_ALL_TESTS();
|
| + int ret_val = RUN_ALL_TESTS();
|
| +
|
| +#ifdef PDF_ENABLE_V8
|
| +#ifdef V8_USE_EXTERNAL_STARTUP_DATA
|
| + if (g_v8_natives)
|
| + free(const_cast<char*>(g_v8_natives->data));
|
| + if (g_v8_snapshot)
|
| + free(const_cast<char*>(g_v8_snapshot->data));
|
| +#endif // V8_USE_EXTERNAL_STARTUP_DATA
|
| +#endif // PDF_ENABLE_V8
|
| +
|
| + return ret_val;
|
| }
|
|
|