summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
Diffstat (limited to 'testing')
-rw-r--r--testing/embedder_test.cpp15
-rw-r--r--testing/embedder_test.h9
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_;