Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(564)

Side by Side Diff: fpdfsdk/src/javascript/JS_Runtime.cpp

Issue 1269783005: Don't dispose the isolate if its provided by the embedder (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: rebase Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/include/javascript/JS_Runtime.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../../include/javascript/JavaScript.h" 7 #include "../../include/javascript/JavaScript.h"
8 #include "../../include/javascript/IJavaScript.h" 8 #include "../../include/javascript/IJavaScript.h"
9 #include "../../include/javascript/JS_EventHandler.h" 9 #include "../../include/javascript/JS_EventHandler.h"
10 #include "../../include/javascript/JS_Runtime.h" 10 #include "../../include/javascript/JS_Runtime.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 free(data); 91 free(data);
92 } 92 }
93 93
94 /* ------------------------------ CJS_Runtime ------------------------------ */ 94 /* ------------------------------ CJS_Runtime ------------------------------ */
95 95
96 CJS_Runtime::CJS_Runtime(CPDFDoc_Environment* pApp) 96 CJS_Runtime::CJS_Runtime(CPDFDoc_Environment* pApp)
97 : m_pApp(pApp), 97 : m_pApp(pApp),
98 m_pDocument(NULL), 98 m_pDocument(NULL),
99 m_bBlocking(FALSE), 99 m_bBlocking(FALSE),
100 m_pFieldEventPath(NULL), 100 m_pFieldEventPath(NULL),
101 m_isolate(NULL) { 101 m_isolate(NULL),
102 m_isolateManaged(false) {
102 if (m_pApp->GetFormFillInfo()->m_pJsPlatform->version >= 2) { 103 if (m_pApp->GetFormFillInfo()->m_pJsPlatform->version >= 2) {
103 m_isolate = reinterpret_cast<v8::Isolate*>( 104 m_isolate = reinterpret_cast<v8::Isolate*>(
104 m_pApp->GetFormFillInfo()->m_pJsPlatform->m_isolate); 105 m_pApp->GetFormFillInfo()->m_pJsPlatform->m_isolate);
105 } 106 }
106 if (!m_isolate) { 107 if (!m_isolate) {
107 m_pArrayBufferAllocator.reset(new CJS_ArrayBufferAllocator()); 108 m_pArrayBufferAllocator.reset(new CJS_ArrayBufferAllocator());
108 109
109 v8::Isolate::CreateParams params; 110 v8::Isolate::CreateParams params;
110 params.array_buffer_allocator = m_pArrayBufferAllocator.get(); 111 params.array_buffer_allocator = m_pArrayBufferAllocator.get();
111 m_isolate = v8::Isolate::New(params); 112 m_isolate = v8::Isolate::New(params);
113 m_isolateManaged = true;
112 } 114 }
113 115
114 InitJSObjects(); 116 InitJSObjects();
115 117
116 CJS_Context* pContext = (CJS_Context*)NewContext(); 118 CJS_Context* pContext = (CJS_Context*)NewContext();
117 JS_InitialRuntime(*this, this, pContext, m_context); 119 JS_InitialRuntime(*this, this, pContext, m_context);
118 ReleaseContext(pContext); 120 ReleaseContext(pContext);
119 } 121 }
120 122
121 CJS_Runtime::~CJS_Runtime() { 123 CJS_Runtime::~CJS_Runtime() {
122 for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++) 124 for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++)
123 delete m_ContextArray.GetAt(i); 125 delete m_ContextArray.GetAt(i);
124 126
125 m_ContextArray.RemoveAll(); 127 m_ContextArray.RemoveAll();
126 128
127 JS_ReleaseRuntime(*this, m_context); 129 JS_ReleaseRuntime(*this, m_context);
128 130
129 RemoveEventsInLoop(m_pFieldEventPath); 131 RemoveEventsInLoop(m_pFieldEventPath);
130 132
131 m_pApp = NULL; 133 m_pApp = NULL;
132 m_pDocument = NULL; 134 m_pDocument = NULL;
133 m_pFieldEventPath = NULL; 135 m_pFieldEventPath = NULL;
134 m_context.Reset(); 136 m_context.Reset();
135 137
136 // m_isolate->Exit(); 138 if (m_isolateManaged)
137 m_isolate->Dispose(); 139 m_isolate->Dispose();
138 } 140 }
139 141
140 FX_BOOL CJS_Runtime::InitJSObjects() { 142 FX_BOOL CJS_Runtime::InitJSObjects() {
141 v8::Isolate::Scope isolate_scope(GetIsolate()); 143 v8::Isolate::Scope isolate_scope(GetIsolate());
142 v8::HandleScope handle_scope(GetIsolate()); 144 v8::HandleScope handle_scope(GetIsolate());
143 v8::Local<v8::Context> context = v8::Context::New(GetIsolate()); 145 v8::Local<v8::Context> context = v8::Context::New(GetIsolate());
144 v8::Context::Scope context_scope(context); 146 v8::Context::Scope context_scope(context);
145 // 0 - 8 147 // 0 - 8
146 if (CJS_Border::Init(*this, JS_STATIC) < 0) 148 if (CJS_Border::Init(*this, JS_STATIC) < 0)
147 return FALSE; 149 return FALSE;
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 327
326 v8::Local<v8::Context> CJS_Runtime::NewJSContext() { 328 v8::Local<v8::Context> CJS_Runtime::NewJSContext() {
327 return v8::Local<v8::Context>::New(m_isolate, m_context); 329 return v8::Local<v8::Context>::New(m_isolate, m_context);
328 } 330 }
329 331
330 CFX_WideString ChangeObjName(const CFX_WideString& str) { 332 CFX_WideString ChangeObjName(const CFX_WideString& str) {
331 CFX_WideString sRet = str; 333 CFX_WideString sRet = str;
332 sRet.Replace(L"_", L"."); 334 sRet.Replace(L"_", L".");
333 return sRet; 335 return sRet;
334 } 336 }
OLDNEW
« no previous file with comments | « fpdfsdk/include/javascript/JS_Runtime.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698