Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "../../public/fpdf_ext.h" | 7 #include "../../public/fpdf_ext.h" |
| 8 #include "../../third_party/base/nonstd_unique_ptr.h" | 8 #include "../../third_party/base/nonstd_unique_ptr.h" |
| 9 #include "../include/fsdk_define.h" | 9 #include "../include/fsdk_define.h" |
| 10 #include "../include/fsdk_mgr.h" | 10 #include "../include/fsdk_mgr.h" |
| 11 #include "../include/formfiller/FFL_FormFiller.h" | 11 #include "../include/formfiller/FFL_FormFiller.h" |
| 12 #include "../include/javascript/IJavaScript.h" | 12 #include "../include/javascript/IJavaScript.h" |
| 13 #include "../include/javascript/JS_Runtime.h" | |
| 13 | 14 |
| 14 #if _FX_OS_ == _FX_ANDROID_ | 15 #if _FX_OS_ == _FX_ANDROID_ |
| 15 #include "time.h" | 16 #include "time.h" |
| 16 #else | 17 #else |
| 17 #include <ctime> | 18 #include <ctime> |
| 18 #endif | 19 #endif |
| 19 | 20 |
| 20 class CFX_SystemHandler : public IFX_SystemHandler { | 21 class CFX_SystemHandler : public IFX_SystemHandler { |
| 21 public: | 22 public: |
| 22 CFX_SystemHandler(CPDFDoc_Environment* pEnv) : m_pEnv(pEnv), m_nCharSet(-1) {} | 23 CFX_SystemHandler(CPDFDoc_Environment* pEnv) : m_pEnv(pEnv), m_nCharSet(-1) {} |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 196 return m_pEnv->FFI_SetTimer(uElapse, lpTimerFunc); | 197 return m_pEnv->FFI_SetTimer(uElapse, lpTimerFunc); |
| 197 } | 198 } |
| 198 void CFX_SystemHandler::KillTimer(int32_t nID) { | 199 void CFX_SystemHandler::KillTimer(int32_t nID) { |
| 199 m_pEnv->FFI_KillTimer(nID); | 200 m_pEnv->FFI_KillTimer(nID); |
| 200 } | 201 } |
| 201 | 202 |
| 202 FX_SYSTEMTIME CFX_SystemHandler::GetLocalTime() { | 203 FX_SYSTEMTIME CFX_SystemHandler::GetLocalTime() { |
| 203 return m_pEnv->FFI_GetLocalTime(); | 204 return m_pEnv->FFI_GetLocalTime(); |
| 204 } | 205 } |
| 205 | 206 |
| 206 CJS_RuntimeFactory* GetJSRuntimeFactory() { | |
| 207 static CJS_RuntimeFactory s_JSRuntimeFactory; | |
| 208 return &s_JSRuntimeFactory; | |
| 209 } | |
| 210 | |
| 211 CPDFDoc_Environment::CPDFDoc_Environment(CPDF_Document* pDoc, | 207 CPDFDoc_Environment::CPDFDoc_Environment(CPDF_Document* pDoc, |
| 212 FPDF_FORMFILLINFO* pFFinfo) | 208 FPDF_FORMFILLINFO* pFFinfo) |
| 213 : m_pAnnotHandlerMgr(NULL), | 209 : m_pAnnotHandlerMgr(NULL), |
| 214 m_pActionHandler(NULL), | 210 m_pActionHandler(NULL), |
| 215 m_pJSRuntime(NULL), | 211 m_pJSRuntime(NULL), |
| 216 m_pInfo(pFFinfo), | 212 m_pInfo(pFFinfo), |
| 217 m_pSDKDoc(NULL), | 213 m_pSDKDoc(NULL), |
| 218 m_pPDFDoc(pDoc), | 214 m_pPDFDoc(pDoc), |
| 219 m_pIFormFiller(NULL) { | 215 m_pIFormFiller(NULL) { |
| 220 m_pSysHandler = new CFX_SystemHandler(this); | 216 m_pSysHandler = new CFX_SystemHandler(this); |
| 221 m_pJSRuntimeFactory = GetJSRuntimeFactory(); | |
| 222 m_pJSRuntimeFactory->AddRef(); | |
|
Tom Sepez
2015/09/21 22:12:16
Yep, we're ref-counting a static object here :).
| |
| 223 } | 217 } |
| 224 | 218 |
| 225 CPDFDoc_Environment::~CPDFDoc_Environment() { | 219 CPDFDoc_Environment::~CPDFDoc_Environment() { |
| 226 delete m_pIFormFiller; | 220 delete m_pIFormFiller; |
| 227 m_pIFormFiller = NULL; | 221 m_pIFormFiller = NULL; |
| 228 if (m_pJSRuntime && m_pJSRuntimeFactory) | |
| 229 m_pJSRuntimeFactory->DeleteJSRuntime(m_pJSRuntime); | |
| 230 m_pJSRuntimeFactory->Release(); | |
| 231 | 222 |
| 223 delete m_pJSRuntime; | |
|
Lei Zhang
2015/09/21 23:16:05
Can we convert |m_pJSRuntime| to a unique_ptr whil
Tom Sepez
2015/09/21 23:28:52
Done.
| |
| 232 delete m_pSysHandler; | 224 delete m_pSysHandler; |
| 233 m_pSysHandler = NULL; | 225 m_pSysHandler = NULL; |
| 234 | 226 |
| 235 delete m_pAnnotHandlerMgr; | 227 delete m_pAnnotHandlerMgr; |
| 236 m_pAnnotHandlerMgr = NULL; | 228 m_pAnnotHandlerMgr = NULL; |
| 237 delete m_pActionHandler; | 229 delete m_pActionHandler; |
| 238 m_pActionHandler = NULL; | 230 m_pActionHandler = NULL; |
| 239 } | 231 } |
| 240 | 232 |
| 241 int CPDFDoc_Environment::JS_appAlert(const FX_WCHAR* Msg, | 233 int CPDFDoc_Environment::JS_appAlert(const FX_WCHAR* Msg, |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 377 bsBcc.ReleaseBuffer(); | 369 bsBcc.ReleaseBuffer(); |
| 378 bsSubject.ReleaseBuffer(); | 370 bsSubject.ReleaseBuffer(); |
| 379 bsMsg.ReleaseBuffer(); | 371 bsMsg.ReleaseBuffer(); |
| 380 } | 372 } |
| 381 } | 373 } |
| 382 | 374 |
| 383 IFXJS_Runtime* CPDFDoc_Environment::GetJSRuntime() { | 375 IFXJS_Runtime* CPDFDoc_Environment::GetJSRuntime() { |
| 384 if (!IsJSInitiated()) | 376 if (!IsJSInitiated()) |
| 385 return NULL; | 377 return NULL; |
| 386 if (!m_pJSRuntime) | 378 if (!m_pJSRuntime) |
| 387 m_pJSRuntime = m_pJSRuntimeFactory->NewJSRuntime(this); | 379 m_pJSRuntime = new CJS_Runtime(this); |
| 388 return m_pJSRuntime; | 380 return m_pJSRuntime; |
| 389 } | 381 } |
| 390 | 382 |
| 391 CPDFSDK_AnnotHandlerMgr* CPDFDoc_Environment::GetAnnotHandlerMgr() { | 383 CPDFSDK_AnnotHandlerMgr* CPDFDoc_Environment::GetAnnotHandlerMgr() { |
| 392 if (!m_pAnnotHandlerMgr) | 384 if (!m_pAnnotHandlerMgr) |
| 393 m_pAnnotHandlerMgr = new CPDFSDK_AnnotHandlerMgr(this); | 385 m_pAnnotHandlerMgr = new CPDFSDK_AnnotHandlerMgr(this); |
| 394 return m_pAnnotHandlerMgr; | 386 return m_pAnnotHandlerMgr; |
| 395 } | 387 } |
| 396 | 388 |
| 397 CPDFSDK_ActionHandler* CPDFDoc_Environment::GetActionHander() { | 389 CPDFSDK_ActionHandler* CPDFDoc_Environment::GetActionHander() { |
| (...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 998 if (!pFocusAnnot) | 990 if (!pFocusAnnot) |
| 999 return NULL; | 991 return NULL; |
| 1000 | 992 |
| 1001 for (int i = 0; i < m_fxAnnotArray.GetSize(); i++) { | 993 for (int i = 0; i < m_fxAnnotArray.GetSize(); i++) { |
| 1002 CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i); | 994 CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i); |
| 1003 if (pAnnot == pFocusAnnot) | 995 if (pAnnot == pFocusAnnot) |
| 1004 return pAnnot; | 996 return pAnnot; |
| 1005 } | 997 } |
| 1006 return NULL; | 998 return NULL; |
| 1007 } | 999 } |
| OLD | NEW |