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

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

Issue 1384883002: CJS_Timer should observe CJS_Runtime destruction. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 5 years, 2 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/src/javascript/JS_Object.cpp ('k') | fpdfsdk/src/javascript/app.cpp » ('j') | 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"
11 #include "../../include/javascript/JS_Context.h" 11 #include "../../include/javascript/JS_Context.h"
12 #include "../../include/javascript/JS_Define.h" 12 #include "../../include/javascript/JS_Define.h"
13 #include "../../include/javascript/JS_Object.h" 13 #include "../../include/javascript/JS_Object.h"
14 #include "../../include/javascript/JS_Value.h" 14 #include "../../include/javascript/JS_Value.h"
15 #include "../../include/javascript/Document.h"
16 #include "../../include/javascript/app.h" 15 #include "../../include/javascript/app.h"
17 #include "../../include/javascript/color.h" 16 #include "../../include/javascript/color.h"
18 #include "../../include/javascript/Consts.h" 17 #include "../../include/javascript/Consts.h"
19 #include "../../include/javascript/Document.h" 18 #include "../../include/javascript/Document.h"
20 #include "../../include/javascript/event.h" 19 #include "../../include/javascript/event.h"
21 #include "../../include/javascript/Field.h" 20 #include "../../include/javascript/Field.h"
22 #include "../../include/javascript/Icon.h" 21 #include "../../include/javascript/Icon.h"
23 #include "../../include/javascript/PublicMethods.h" 22 #include "../../include/javascript/PublicMethods.h"
24 #include "../../include/javascript/report.h" 23 #include "../../include/javascript/report.h"
25 #include "../../include/javascript/util.h" 24 #include "../../include/javascript/util.h"
(...skipping 21 matching lines...) Expand all
47 } 46 }
48 m_isolateManaged = FXJS_GetIsolate(&m_isolate); 47 m_isolateManaged = FXJS_GetIsolate(&m_isolate);
49 DefineJSObjects(); 48 DefineJSObjects();
50 49
51 CJS_Context* pContext = (CJS_Context*)NewContext(); 50 CJS_Context* pContext = (CJS_Context*)NewContext();
52 FXJS_InitializeRuntime(GetIsolate(), this, pContext, m_context); 51 FXJS_InitializeRuntime(GetIsolate(), this, pContext, m_context);
53 ReleaseContext(pContext); 52 ReleaseContext(pContext);
54 } 53 }
55 54
56 CJS_Runtime::~CJS_Runtime() { 55 CJS_Runtime::~CJS_Runtime() {
56 for (auto* obs : m_observers)
57 obs->OnDestroyed();
58
57 for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++) 59 for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++)
58 delete m_ContextArray.GetAt(i); 60 delete m_ContextArray.GetAt(i);
59 61
60 m_ContextArray.RemoveAll(); 62 m_ContextArray.RemoveAll();
61 FXJS_ReleaseRuntime(GetIsolate(), m_context); 63 FXJS_ReleaseRuntime(GetIsolate(), m_context);
62 64
63 m_pApp = NULL; 65 m_pApp = NULL;
64 m_pDocument = NULL; 66 m_pDocument = NULL;
65 m_context.Reset(); 67 m_context.Reset();
66 68
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 } 171 }
170 172
171 void CJS_Runtime::RemoveEventFromSet(const FieldEvent& event) { 173 void CJS_Runtime::RemoveEventFromSet(const FieldEvent& event) {
172 m_FieldEventSet.erase(event); 174 m_FieldEventSet.erase(event);
173 } 175 }
174 176
175 v8::Local<v8::Context> CJS_Runtime::NewJSContext() { 177 v8::Local<v8::Context> CJS_Runtime::NewJSContext() {
176 return v8::Local<v8::Context>::New(m_isolate, m_context); 178 return v8::Local<v8::Context>::New(m_isolate, m_context);
177 } 179 }
178 180
181 void CJS_Runtime::AddObserver(Observer* observer) {
182 ASSERT(m_observers.find(observer) == m_observers.end());
183 m_observers.insert(observer);
184 }
185
186 void CJS_Runtime::RemoveObserver(Observer* observer) {
187 ASSERT(m_observers.find(observer) != m_observers.end());
188 m_observers.erase(observer);
189 }
190
179 CFX_WideString ChangeObjName(const CFX_WideString& str) { 191 CFX_WideString ChangeObjName(const CFX_WideString& str) {
180 CFX_WideString sRet = str; 192 CFX_WideString sRet = str;
181 sRet.Replace(L"_", L"."); 193 sRet.Replace(L"_", L".");
182 return sRet; 194 return sRet;
183 } 195 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/javascript/JS_Object.cpp ('k') | fpdfsdk/src/javascript/app.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698