Chromium Code Reviews| Index: pdf/pdf.cc |
| diff --git a/pdf/pdf.cc b/pdf/pdf.cc |
| index 1f580e4f1532a7d543314d2e3f1f87f0d1851f30..1fe1f0116c3df30d7073449708c36dde371b5baf 100644 |
| --- a/pdf/pdf.cc |
| +++ b/pdf/pdf.cc |
| @@ -32,6 +32,12 @@ void TearDownV8() { |
| g_isolate_holder = nullptr; |
| } |
| +void SetUpV8() { |
| + g_isolate_holder = |
| + new gin::IsolateHolder(gin::IsolateHolder::kSingleThread); |
| + g_isolate_holder->isolate()->Enter(); |
| +} |
| + |
| } // namespace |
| PDFModule::PDFModule() { |
| @@ -62,9 +68,7 @@ pp::Instance* PDFModule::CreateInstance(PP_Instance instance) { |
| } |
| gin::IsolateHolder::Initialize(gin::IsolateHolder::kNonStrictMode, |
| gin::ArrayBufferAllocator::SharedInstance()); |
| - g_isolate_holder = |
| - new gin::IsolateHolder(gin::IsolateHolder::kSingleThread); |
| - g_isolate_holder->isolate()->Enter(); |
| + SetUpV8(); |
| if (!chrome_pdf::InitializeSDK()) { |
|
Lei Zhang
2015/11/05 21:44:01
Should we write wrappers for chrome_pdf::Initializ
|
| TearDownV8(); |
| return NULL; |
| @@ -116,7 +120,9 @@ bool RenderPDFPageToDC(const void* pdf_buffer, |
| bool center_in_bounds, |
| bool autorotate) { |
| if (!g_sdk_initialized_via_pepper) { |
| + SetUpV8(); |
| if (!chrome_pdf::InitializeSDK()) { |
| + TearDownV8(); |
| return false; |
| } |
| } |
| @@ -130,6 +136,7 @@ bool RenderPDFPageToDC(const void* pdf_buffer, |
| bool ret = engine_exports->RenderPDFPageToDC(pdf_buffer, buffer_size, |
| page_number, settings, dc); |
| if (!g_sdk_initialized_via_pepper) { |
| + TearDownV8(); |
| chrome_pdf::ShutdownSDK(); |
| } |
| return ret; |
| @@ -141,14 +148,18 @@ bool GetPDFDocInfo(const void* pdf_buffer, |
| int buffer_size, int* page_count, |
| double* max_page_width) { |
| if (!g_sdk_initialized_via_pepper) { |
| - if (!chrome_pdf::InitializeSDK()) |
| + SetUpV8(); |
| + if (!chrome_pdf::InitializeSDK()) { |
| + TearDownV8(); |
| return false; |
| + } |
| } |
| scoped_ptr<chrome_pdf::PDFEngineExports> engine_exports( |
| chrome_pdf::PDFEngineExports::Create()); |
| bool ret = engine_exports->GetPDFDocInfo( |
| pdf_buffer, buffer_size, page_count, max_page_width); |
| if (!g_sdk_initialized_via_pepper) { |
| + TearDownV8(); |
| chrome_pdf::ShutdownSDK(); |
| } |
| return ret; |
| @@ -158,15 +169,20 @@ bool GetPDFPageSizeByIndex(const void* pdf_buffer, |
| int pdf_buffer_size, int page_number, |
| double* width, double* height) { |
| if (!g_sdk_initialized_via_pepper) { |
| - if (!chrome_pdf::InitializeSDK()) |
| + SetUpV8(); |
| + if (!chrome_pdf::InitializeSDK()) { |
| + TearDownV8(); |
| return false; |
| + } |
| } |
| scoped_ptr<chrome_pdf::PDFEngineExports> engine_exports( |
| chrome_pdf::PDFEngineExports::Create()); |
| bool ret = engine_exports->GetPDFPageSizeByIndex( |
| pdf_buffer, pdf_buffer_size, page_number, width, height); |
| - if (!g_sdk_initialized_via_pepper) |
| + if (!g_sdk_initialized_via_pepper) { |
| + TearDownV8(); |
| chrome_pdf::ShutdownSDK(); |
| + } |
| return ret; |
| } |
| @@ -179,8 +195,11 @@ bool RenderPDFPageToBitmap(const void* pdf_buffer, |
| int dpi, |
| bool autorotate) { |
| if (!g_sdk_initialized_via_pepper) { |
| - if (!chrome_pdf::InitializeSDK()) |
| + SetUpV8(); |
| + if (!chrome_pdf::InitializeSDK()) { |
| + TearDownV8(); |
| return false; |
| + } |
| } |
| scoped_ptr<chrome_pdf::PDFEngineExports> engine_exports( |
| chrome_pdf::PDFEngineExports::Create()); |
| @@ -190,6 +209,7 @@ bool RenderPDFPageToBitmap(const void* pdf_buffer, |
| bool ret = engine_exports->RenderPDFPageToBitmap( |
| pdf_buffer, pdf_buffer_size, page_number, settings, bitmap_buffer); |
| if (!g_sdk_initialized_via_pepper) { |
| + TearDownV8(); |
| chrome_pdf::ShutdownSDK(); |
| } |
| return ret; |