| OLD | NEW |
| 1 // Copyright 2015 PDFium Authors. All rights reserved. | 1 // Copyright 2015 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "testing/embedder_test.h" | 5 #include "testing/embedder_test.h" |
| 6 | 6 |
| 7 #include <limits.h> | 7 #include <limits.h> |
| 8 | 8 |
| 9 #include <list> | 9 #include <list> |
| 10 #include <string> | 10 #include <string> |
| 11 #include <utility> | 11 #include <utility> |
| 12 #include <vector> | 12 #include <vector> |
| 13 | 13 |
| 14 #include "public/fpdf_dataavail.h" | 14 #include "public/fpdf_dataavail.h" |
| 15 #include "public/fpdf_edit.h" | 15 #include "public/fpdf_edit.h" |
| 16 #include "public/fpdf_text.h" | 16 #include "public/fpdf_text.h" |
| 17 #include "public/fpdfview.h" | 17 #include "public/fpdfview.h" |
| 18 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
| 19 #include "testing/test_support.h" | 19 #include "testing/test_support.h" |
| 20 #include "testing/utils/path_service.h" | 20 #include "testing/utils/path_service.h" |
| 21 | 21 |
| 22 #ifdef PDF_ENABLE_V8 | 22 #ifdef PDF_ENABLE_V8 |
| 23 #include "v8/include/v8-platform.h" | 23 #include "v8/include/v8-platform.h" |
| 24 #include "v8/include/v8.h" | 24 #include "v8/include/v8.h" |
| 25 #endif // PDF_ENABLE_V8 | 25 #endif // PDF_ENABLE_V8 |
| 26 | 26 |
| 27 namespace { | 27 namespace { |
| 28 const char* g_exe_path_ = nullptr; | 28 |
| 29 const char* g_exe_path = nullptr; |
| 30 |
| 31 #ifdef PDF_ENABLE_V8 |
| 32 #ifdef V8_USE_EXTERNAL_STARTUP_DATA |
| 33 v8::StartupData* g_v8_natives = nullptr; |
| 34 v8::StartupData* g_v8_snapshot = nullptr; |
| 35 #endif // V8_USE_EXTERNAL_STARTUP_DATA |
| 36 #endif // PDF_ENABLE_V8 |
| 37 |
| 29 } // namespace | 38 } // namespace |
| 30 | 39 |
| 31 FPDF_BOOL Is_Data_Avail(FX_FILEAVAIL* pThis, size_t offset, size_t size) { | 40 FPDF_BOOL Is_Data_Avail(FX_FILEAVAIL* pThis, size_t offset, size_t size) { |
| 32 return true; | 41 return true; |
| 33 } | 42 } |
| 34 | 43 |
| 35 void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) {} | 44 void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) {} |
| 36 | 45 |
| 37 EmbedderTest::EmbedderTest() | 46 EmbedderTest::EmbedderTest() |
| 38 : default_delegate_(new EmbedderTest::Delegate()), | 47 : default_delegate_(new EmbedderTest::Delegate()), |
| 39 document_(nullptr), | 48 document_(nullptr), |
| 40 form_handle_(nullptr), | 49 form_handle_(nullptr), |
| 41 avail_(nullptr), | 50 avail_(nullptr), |
| 42 external_isolate_(nullptr), | 51 external_isolate_(nullptr), |
| 43 loader_(nullptr), | 52 loader_(nullptr), |
| 44 file_length_(0), | 53 file_length_(0), |
| 45 file_contents_(nullptr) { | 54 file_contents_(nullptr) { |
| 46 memset(&hints_, 0, sizeof(hints_)); | 55 memset(&hints_, 0, sizeof(hints_)); |
| 47 memset(&file_access_, 0, sizeof(file_access_)); | 56 memset(&file_access_, 0, sizeof(file_access_)); |
| 48 memset(&file_avail_, 0, sizeof(file_avail_)); | 57 memset(&file_avail_, 0, sizeof(file_avail_)); |
| 49 delegate_ = default_delegate_.get(); | 58 delegate_ = default_delegate_.get(); |
| 50 | 59 |
| 51 #ifdef PDF_ENABLE_V8 | 60 #ifdef PDF_ENABLE_V8 |
| 52 #ifdef V8_USE_EXTERNAL_STARTUP_DATA | 61 #ifdef V8_USE_EXTERNAL_STARTUP_DATA |
| 53 InitializeV8ForPDFium(g_exe_path_, std::string(), &natives_, &snapshot_, | 62 if (g_v8_natives && g_v8_snapshot) { |
| 54 &platform_); | 63 InitializeV8ForPDFium(g_exe_path, std::string(), nullptr, nullptr, |
| 64 &platform_); |
| 65 } else { |
| 66 g_v8_natives = new v8::StartupData; |
| 67 g_v8_snapshot = new v8::StartupData; |
| 68 InitializeV8ForPDFium(g_exe_path, std::string(), g_v8_natives, |
| 69 g_v8_snapshot, &platform_); |
| 70 } |
| 55 #else | 71 #else |
| 56 InitializeV8ForPDFium(g_exe_path_, &platform_); | 72 InitializeV8ForPDFium(g_exe_path, &platform_); |
| 57 #endif // V8_USE_EXTERNAL_STARTUP_DATA | 73 #endif // V8_USE_EXTERNAL_STARTUP_DATA |
| 58 #endif // FPDF_ENABLE_V8 | 74 #endif // FPDF_ENABLE_V8 |
| 59 } | 75 } |
| 60 | 76 |
| 61 EmbedderTest::~EmbedderTest() { | 77 EmbedderTest::~EmbedderTest() { |
| 62 #ifdef PDF_ENABLE_V8 | 78 #ifdef PDF_ENABLE_V8 |
| 63 v8::V8::ShutdownPlatform(); | 79 v8::V8::ShutdownPlatform(); |
| 64 delete platform_; | 80 delete platform_; |
| 65 #endif // PDF_ENABLE_V8 | 81 #endif // PDF_ENABLE_V8 |
| 66 } | 82 } |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 FPDF_PAGE EmbedderTest::GetPageTrampoline(FPDF_FORMFILLINFO* info, | 328 FPDF_PAGE EmbedderTest::GetPageTrampoline(FPDF_FORMFILLINFO* info, |
| 313 FPDF_DOCUMENT document, | 329 FPDF_DOCUMENT document, |
| 314 int page_index) { | 330 int page_index) { |
| 315 EmbedderTest* test = static_cast<EmbedderTest*>(info); | 331 EmbedderTest* test = static_cast<EmbedderTest*>(info); |
| 316 return test->delegate_->GetPage(test->form_handle(), document, page_index); | 332 return test->delegate_->GetPage(test->form_handle(), document, page_index); |
| 317 } | 333 } |
| 318 | 334 |
| 319 // Can't use gtest-provided main since we need to stash the path to the | 335 // Can't use gtest-provided main since we need to stash the path to the |
| 320 // executable in order to find the external V8 binary data files. | 336 // executable in order to find the external V8 binary data files. |
| 321 int main(int argc, char** argv) { | 337 int main(int argc, char** argv) { |
| 322 g_exe_path_ = argv[0]; | 338 g_exe_path = argv[0]; |
| 323 testing::InitGoogleTest(&argc, argv); | 339 testing::InitGoogleTest(&argc, argv); |
| 324 testing::InitGoogleMock(&argc, argv); | 340 testing::InitGoogleMock(&argc, argv); |
| 325 return RUN_ALL_TESTS(); | 341 int ret_val = RUN_ALL_TESTS(); |
| 342 |
| 343 #ifdef PDF_ENABLE_V8 |
| 344 #ifdef V8_USE_EXTERNAL_STARTUP_DATA |
| 345 if (g_v8_natives) |
| 346 free(const_cast<char*>(g_v8_natives->data)); |
| 347 if (g_v8_snapshot) |
| 348 free(const_cast<char*>(g_v8_snapshot->data)); |
| 349 #endif // V8_USE_EXTERNAL_STARTUP_DATA |
| 350 #endif // PDF_ENABLE_V8 |
| 351 |
| 352 return ret_val; |
| 326 } | 353 } |
| OLD | NEW |