diff options
Diffstat (limited to 'testing')
-rw-r--r-- | testing/embedder_test.cpp | 15 | ||||
-rw-r--r-- | testing/embedder_test.h | 9 |
2 files changed, 17 insertions, 7 deletions
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp index 951da8470c..d17df9a458 100644 --- a/testing/embedder_test.cpp +++ b/testing/embedder_test.cpp @@ -123,21 +123,21 @@ FPDF_BOOL Is_Data_Avail(FX_FILEAVAIL* pThis, size_t offset, size_t size) { void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) {} EmbedderTest::EmbedderTest() - : document_(nullptr), + : default_delegate_(new EmbedderTest::Delegate()), + document_(nullptr), form_handle_(nullptr), avail_(nullptr), + external_isolate_(nullptr), loader_(nullptr), file_length_(0), file_contents_(nullptr) { memset(&hints_, 0, sizeof(hints_)); memset(&file_access_, 0, sizeof(file_access_)); memset(&file_avail_, 0, sizeof(file_avail_)); - default_delegate_ = new EmbedderTest::Delegate(); - delegate_ = default_delegate_; + delegate_ = default_delegate_.get(); } EmbedderTest::~EmbedderTest() { - delete default_delegate_; } void EmbedderTest::SetUp() { @@ -159,7 +159,12 @@ void EmbedderTest::SetUp() { v8::V8::SetSnapshotDataBlob(&snapshot_); #endif // V8_USE_EXTERNAL_STARTUP_DATA - FPDF_InitLibrary(); + FPDF_LIBRARY_CONFIG config; + config.version = 2; + config.m_pUserFontPaths = nullptr; + config.m_pIsolate = external_isolate_; + config.m_v8EmbedderSlot = 0; + FPDF_InitLibraryWithConfig(&config); UNSUPPORT_INFO* info = static_cast<UNSUPPORT_INFO*>(this); memset(info, 0, sizeof(UNSUPPORT_INFO)); diff --git a/testing/embedder_test.h b/testing/embedder_test.h index f490f82536..f6842d23c3 100644 --- a/testing/embedder_test.h +++ b/testing/embedder_test.h @@ -12,6 +12,7 @@ #include "../public/fpdf_ext.h" #include "../public/fpdf_formfill.h" #include "../public/fpdfview.h" +#include "../third_party/base/nonstd_unique_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "v8/include/v8.h" @@ -60,8 +61,11 @@ class EmbedderTest : public ::testing::Test, void SetUp() override; void TearDown() override; + // Call before SetUp to pass shared isolate, otherwise PDFium creates one. + void SetExternalIsolate(v8::Isolate* isolate) { external_isolate_ = isolate; } + void SetDelegate(Delegate* delegate) { - delegate_ = delegate ? delegate : default_delegate_; + delegate_ = delegate ? delegate : default_delegate_.get(); } FPDF_DOCUMENT document() { return document_; } @@ -94,7 +98,7 @@ class EmbedderTest : public ::testing::Test, protected: Delegate* delegate_; - Delegate* default_delegate_; + nonstd::unique_ptr<Delegate> default_delegate_; FPDF_DOCUMENT document_; FPDF_FORMHANDLE form_handle_; FPDF_AVAIL avail_; @@ -104,6 +108,7 @@ class EmbedderTest : public ::testing::Test, v8::Platform* platform_; v8::StartupData natives_; v8::StartupData snapshot_; + v8::Isolate* external_isolate_; TestLoader* loader_; size_t file_length_; char* file_contents_; |