Chromium Code Reviews| Index: pdf/pdf.cc |
| diff --git a/pdf/pdf.cc b/pdf/pdf.cc |
| index 655a13359eefb7420310213430ceed8ab4713730..3a088a5e410fe9cc22a4cef7a089af152289a6ed 100644 |
| --- a/pdf/pdf.cc |
| +++ b/pdf/pdf.cc |
| @@ -10,6 +10,8 @@ |
| #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" |
| @@ -18,6 +20,8 @@ |
| bool g_sdk_initialized_via_pepper = false; |
| +gin::IsolateHolder* g_isolate_holder = nullptr; |
| + |
| namespace chrome_pdf { |
| PDFModule::PDFModule() { |
| @@ -26,6 +30,11 @@ PDFModule::PDFModule() { |
| PDFModule::~PDFModule() { |
| if (g_sdk_initialized_via_pepper) { |
| chrome_pdf::ShutdownSDK(); |
| + if (g_sdk_initialized_via_pepper) { |
|
Lei Zhang
2015/09/16 21:22:24
Didn't we just check |g_sdk_initialized_via_pepper
jochen (gone - plz use gerrit)
2015/09/17 06:55:07
done
|
| + g_isolate_holder->isolate()->Exit(); |
| + delete g_isolate_holder; |
| + g_isolate_holder = nullptr; |
| + } |
| g_sdk_initialized_via_pepper = false; |
| } |
| } |
| @@ -45,8 +54,17 @@ pp::Instance* PDFModule::CreateInstance(PP_Instance instance) { |
| v8::V8::SetNativesDataBlob(&natives); |
| v8::V8::SetSnapshotDataBlob(&snapshot); |
| } |
| - if (!chrome_pdf::InitializeSDK()) |
| + gin::IsolateHolder::Initialize(gin::IsolateHolder::kNonStrictMode, |
| + gin::ArrayBufferAllocator::SharedInstance()); |
| + g_isolate_holder = |
|
Lei Zhang
2015/09/16 21:22:24
CreateInstance() only gets called once per process
raymes
2015/09/17 02:30:41
I believe CreateInstance will get called multiple
jochen (gone - plz use gerrit)
2015/09/17 06:55:07
this block is protected by !g_sdk_initialized_via_
|
| + new gin::IsolateHolder(gin::IsolateHolder::kSingleThread); |
| + g_isolate_holder->isolate()->Enter(); |
|
raymes
2015/09/17 02:30:41
nit: indentation looks funny here.
jochen (gone - plz use gerrit)
2015/09/17 06:55:07
done
|
| + if (!chrome_pdf::InitializeSDK()) { |
| + g_isolate_holder->isolate()->Exit(); |
|
Lei Zhang
2015/09/16 21:22:24
Write a function for these 3 lines? Then reused on
jochen (gone - plz use gerrit)
2015/09/17 06:55:07
done
|
| + delete g_isolate_holder; |
| + g_isolate_holder = nullptr; |
| return NULL; |
| + } |
| g_sdk_initialized_via_pepper = true; |
| } |