From a72e8e2c4392df725c7e35ed1ae3f891e79e49ec Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Wed, 7 Oct 2015 10:17:53 -0700 Subject: Merge to XFA: Pass v8::Isolate to PDFium at init time. New code changes in JS_Runtime.cpp. (cherry picked from commit 3dedace9623fef6161a8666e53a4ab2b9be61e4c) Original Review URL: https://codereview.chromium.org/1367033002 . Also merge to XFA: Run FXJS_V8 embedder tests against a shared isolate, since the two go together. (cherry picked from commit 4ea721cb7954898a9722c389dae86c62957352d0) Original Review URL: https://codereview.chromium.org/1377293004 . R=thestig@chromium.org Review URL: https://codereview.chromium.org/1381633008 . --- testing/embedder_test.cpp | 15 ++++++++++----- testing/embedder_test.h | 9 +++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) (limited to 'testing') diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp index 5dc5a66eb6..1a3c4c6e53 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(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 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_; -- cgit v1.2.3