diff options
author | jochen <jochen@chromium.org> | 2015-11-05 21:57:04 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-06 05:57:56 +0000 |
commit | 260ecd51b9f2090da212f3920f25809b945dd7d3 (patch) | |
tree | 110dbe40117c7d3f173c5cef7d2c7514ec708677 /pdf | |
parent | 9157673b2a0bebd943b58d83b594109b6523bd01 (diff) | |
download | chromium_src-260ecd51b9f2090da212f3920f25809b945dd7d3.zip chromium_src-260ecd51b9f2090da212f3920f25809b945dd7d3.tar.gz chromium_src-260ecd51b9f2090da212f3920f25809b945dd7d3.tar.bz2 |
Setup and tear down V8 if the PDF module is not managed via pepper
BUG=549365
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1419793008
Cr-Commit-Position: refs/heads/master@{#358269}
Diffstat (limited to 'pdf')
-rw-r--r-- | pdf/pdf.cc | 20 | ||||
-rw-r--r-- | pdf/pdfium/pdfium_engine.cc | 21 |
2 files changed, 22 insertions, 19 deletions
@@ -10,8 +10,6 @@ #include "base/command_line.h" #include "base/logging.h" -#include "gin/array_buffer.h" -#include "gin/public/isolate_holder.h" #include "pdf/out_of_process_instance.h" #include "ppapi/c/ppp.h" #include "ppapi/cpp/private/internal_module.h" @@ -24,14 +22,6 @@ namespace { bool g_sdk_initialized_via_pepper = false; -gin::IsolateHolder* g_isolate_holder = nullptr; - -void TearDownV8() { - g_isolate_holder->isolate()->Exit(); - delete g_isolate_holder; - g_isolate_holder = nullptr; -} - } // namespace PDFModule::PDFModule() { @@ -39,7 +29,6 @@ PDFModule::PDFModule() { PDFModule::~PDFModule() { if (g_sdk_initialized_via_pepper) { - TearDownV8(); chrome_pdf::ShutdownSDK(); g_sdk_initialized_via_pepper = false; } @@ -60,15 +49,8 @@ pp::Instance* PDFModule::CreateInstance(PP_Instance instance) { v8::V8::SetNativesDataBlob(&natives); v8::V8::SetSnapshotDataBlob(&snapshot); } - gin::IsolateHolder::Initialize(gin::IsolateHolder::kNonStrictMode, - gin::ArrayBufferAllocator::SharedInstance()); - g_isolate_holder = - new gin::IsolateHolder(gin::IsolateHolder::kSingleThread); - g_isolate_holder->isolate()->Enter(); - if (!chrome_pdf::InitializeSDK()) { - TearDownV8(); + if (!chrome_pdf::InitializeSDK()) return NULL; - } g_sdk_initialized_via_pepper = true; } diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc index 8631088..d23c141 100644 --- a/pdf/pdfium/pdfium_engine.cc +++ b/pdf/pdfium/pdfium_engine.cc @@ -18,7 +18,9 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/values.h" +#include "gin/array_buffer.h" #include "gin/public/gin_embedders.h" +#include "gin/public/isolate_holder.h" #include "pdf/draw_utils.h" #include "pdf/pdfium/pdfium_api_string_buffer_adapter.h" #include "pdf/pdfium/pdfium_mem_buffer_file_read.h" @@ -449,9 +451,27 @@ std::string GetDocumentMetadata(FPDF_DOCUMENT doc, const std::string& key) { return base::UTF16ToUTF8(value); } +gin::IsolateHolder* g_isolate_holder = nullptr; + +void SetUpV8() { + gin::IsolateHolder::Initialize(gin::IsolateHolder::kNonStrictMode, + gin::ArrayBufferAllocator::SharedInstance()); + g_isolate_holder = + new gin::IsolateHolder(gin::IsolateHolder::kSingleThread); + g_isolate_holder->isolate()->Enter(); +} + +void TearDownV8() { + g_isolate_holder->isolate()->Exit(); + delete g_isolate_holder; + g_isolate_holder = nullptr; +} + } // namespace bool InitializeSDK() { + SetUpV8(); + FPDF_LIBRARY_CONFIG config; config.version = 2; config.m_pUserFontPaths = nullptr; @@ -470,6 +490,7 @@ bool InitializeSDK() { } void ShutdownSDK() { + TearDownV8(); FPDF_DestroyLibrary(); } |