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; |