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

Side by Side Diff: xfa/fxfa/parser/xfa_script_imp.cpp

Issue 2024833003: Remove XFA_HFM2JSCONTEXT. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 6 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 | « xfa/fxfa/parser/xfa_script_imp.h ('k') | xfa/fxfa/parser/xfa_script_layoutpseudomodel.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 "xfa/fxfa/parser/xfa_script_imp.h" 7 #include "xfa/fxfa/parser/xfa_script_imp.h"
8 8
9 #include "core/fxcrt/include/fx_ext.h" 9 #include "core/fxcrt/include/fx_ext.h"
10 #include "xfa/fxfa/app/xfa_ffnotify.h" 10 #include "xfa/fxfa/app/xfa_ffnotify.h"
11 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h"
12 #include "xfa/fxfa/parser/xfa_doclayout.h" 11 #include "xfa/fxfa/parser/xfa_doclayout.h"
13 #include "xfa/fxfa/parser/xfa_document.h" 12 #include "xfa/fxfa/parser/xfa_document.h"
14 #include "xfa/fxfa/parser/xfa_localemgr.h" 13 #include "xfa/fxfa/parser/xfa_localemgr.h"
15 #include "xfa/fxfa/parser/xfa_object.h" 14 #include "xfa/fxfa/parser/xfa_object.h"
16 #include "xfa/fxfa/parser/xfa_parser.h" 15 #include "xfa/fxfa/parser/xfa_parser.h"
17 #include "xfa/fxfa/parser/xfa_script.h" 16 #include "xfa/fxfa/parser/xfa_script.h"
18 #include "xfa/fxfa/parser/xfa_script_nodehelper.h" 17 #include "xfa/fxfa/parser/xfa_script_nodehelper.h"
19 #include "xfa/fxfa/parser/xfa_script_resolveprocessor.h" 18 #include "xfa/fxfa/parser/xfa_script_resolveprocessor.h"
20 #include "xfa/fxfa/parser/xfa_utils.h" 19 #include "xfa/fxfa/parser/xfa_utils.h"
21 #include "xfa/fxjse/cfxjse_arguments.h" 20 #include "xfa/fxjse/cfxjse_arguments.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 nullptr, // methods 57 nullptr, // methods
59 0, // property count 58 0, // property count
60 0, // method count 59 0, // method count
61 CXFA_ScriptContext::NormalPropTypeGetter, 60 CXFA_ScriptContext::NormalPropTypeGetter,
62 CXFA_ScriptContext::GlobalPropertyGetter, 61 CXFA_ScriptContext::GlobalPropertyGetter,
63 CXFA_ScriptContext::GlobalPropertySetter, 62 CXFA_ScriptContext::GlobalPropertySetter,
64 nullptr, // property deleter 63 nullptr, // property deleter
65 CXFA_ScriptContext::NormalMethodCall, 64 CXFA_ScriptContext::NormalMethodCall,
66 }; 65 };
67 66
67 const char kFormCalcRuntime[] = "foxit_xfa_formcalc_runtime";
68
68 } // namespace 69 } // namespace
69 70
70 CXFA_ScriptContext::CXFA_ScriptContext(CXFA_Document* pDocument) 71 CXFA_ScriptContext::CXFA_ScriptContext(CXFA_Document* pDocument)
71 : m_pDocument(pDocument), 72 : m_pDocument(pDocument),
72 m_pJsContext(nullptr), 73 m_pJsContext(nullptr),
73 m_pIsolate(nullptr), 74 m_pIsolate(nullptr),
74 m_pJsClass(nullptr), 75 m_pJsClass(nullptr),
75 m_eScriptType(XFA_SCRIPTLANGTYPE_Unkown), 76 m_eScriptType(XFA_SCRIPTLANGTYPE_Unkown),
76 m_pScriptNodeArray(nullptr), 77 m_pScriptNodeArray(nullptr),
77 m_pResolveProcessor(nullptr), 78 m_pResolveProcessor(nullptr),
78 m_hFM2JSContext(nullptr), 79 m_hFM2JSContext(nullptr),
79 m_pThisObject(nullptr), 80 m_pThisObject(nullptr),
80 m_dwBuiltInInFlags(0), 81 m_dwBuiltInInFlags(0),
81 m_eRunAtType(XFA_ATTRIBUTEENUM_Client) { 82 m_eRunAtType(XFA_ATTRIBUTEENUM_Client) {
82 } 83 }
84
83 CXFA_ScriptContext::~CXFA_ScriptContext() { 85 CXFA_ScriptContext::~CXFA_ScriptContext() {
84 FX_POSITION ps = m_mapXFAToValue.GetStartPosition(); 86 FX_POSITION ps = m_mapXFAToValue.GetStartPosition();
85 while (ps) { 87 while (ps) {
86 CXFA_Object* pXFAObj; 88 CXFA_Object* pXFAObj;
87 CFXJSE_Value* pValue; 89 CFXJSE_Value* pValue;
88 m_mapXFAToValue.GetNextAssoc(ps, pXFAObj, pValue); 90 m_mapXFAToValue.GetNextAssoc(ps, pXFAObj, pValue);
89 delete pValue; 91 delete pValue;
90 } 92 }
91 m_mapXFAToValue.RemoveAll(); 93 m_mapXFAToValue.RemoveAll();
92 ReleaseVariablesMap(); 94 ReleaseVariablesMap();
93 if (m_hFM2JSContext) { 95
94 XFA_FM2JS_ContextRelease(m_hFM2JSContext); 96 delete m_hFM2JSContext;
95 m_hFM2JSContext = NULL; 97
96 }
97 if (m_pJsContext) { 98 if (m_pJsContext) {
98 FXJSE_Context_Release(m_pJsContext); 99 FXJSE_Context_Release(m_pJsContext);
99 m_pJsContext = NULL; 100 m_pJsContext = NULL;
100 } 101 }
101 delete m_pResolveProcessor; 102 delete m_pResolveProcessor;
102 m_upObjectArray.RemoveAll(); 103 m_upObjectArray.RemoveAll();
103 for (int32_t i = 0; i < m_CacheListArray.GetSize(); i++) 104 for (int32_t i = 0; i < m_CacheListArray.GetSize(); i++)
104 delete m_CacheListArray[i]; 105 delete m_CacheListArray[i];
105 } 106 }
106 void CXFA_ScriptContext::Initialize(v8::Isolate* pIsolate) { 107 void CXFA_ScriptContext::Initialize(v8::Isolate* pIsolate) {
107 m_pIsolate = pIsolate; 108 m_pIsolate = pIsolate;
108 DefineJsContext(); 109 DefineJsContext();
109 DefineJsClass(); 110 DefineJsClass();
110 m_pResolveProcessor = new CXFA_ResolveProcessor; 111 m_pResolveProcessor = new CXFA_ResolveProcessor;
111 } 112 }
112 FX_BOOL CXFA_ScriptContext::RunScript(XFA_SCRIPTLANGTYPE eScriptType, 113 FX_BOOL CXFA_ScriptContext::RunScript(XFA_SCRIPTLANGTYPE eScriptType,
113 const CFX_WideStringC& wsScript, 114 const CFX_WideStringC& wsScript,
114 CFXJSE_Value* hRetValue, 115 CFXJSE_Value* hRetValue,
115 CXFA_Object* pThisObject) { 116 CXFA_Object* pThisObject) {
116 CFX_ByteString btScript; 117 CFX_ByteString btScript;
117 XFA_SCRIPTLANGTYPE eSaveType = m_eScriptType; 118 XFA_SCRIPTLANGTYPE eSaveType = m_eScriptType;
118 m_eScriptType = eScriptType; 119 m_eScriptType = eScriptType;
119 if (eScriptType == XFA_SCRIPTLANGTYPE_Formcalc) { 120 if (eScriptType == XFA_SCRIPTLANGTYPE_Formcalc) {
120 if (!m_hFM2JSContext) { 121 if (!m_hFM2JSContext) {
121 m_hFM2JSContext = 122 m_hFM2JSContext =
122 XFA_FM2JS_ContextCreate(m_pIsolate, m_pJsContext, m_pDocument); 123 new CXFA_FM2JSContext(m_pIsolate, m_pJsContext, m_pDocument);
123 } 124 }
124 CFX_WideTextBuf wsJavaScript; 125 CFX_WideTextBuf wsJavaScript;
125 CFX_WideString wsErrorInfo; 126 CFX_WideString wsErrorInfo;
126 int32_t iFlags = XFA_FM2JS_Translate(wsScript, wsJavaScript, wsErrorInfo); 127 int32_t iFlags =
128 CXFA_FM2JSContext::Translate(wsScript, wsJavaScript, wsErrorInfo);
127 if (iFlags) { 129 if (iFlags) {
128 FXJSE_Value_SetUndefined(hRetValue); 130 FXJSE_Value_SetUndefined(hRetValue);
129 return FALSE; 131 return FALSE;
130 } 132 }
131 btScript = 133 btScript =
132 FX_UTF8Encode(wsJavaScript.GetBuffer(), wsJavaScript.GetLength()); 134 FX_UTF8Encode(wsJavaScript.GetBuffer(), wsJavaScript.GetLength());
133 } else { 135 } else {
134 btScript = FX_UTF8Encode(wsScript.c_str(), wsScript.GetLength()); 136 btScript = FX_UTF8Encode(wsScript.c_str(), wsScript.GetLength());
135 } 137 }
136 CXFA_Object* pOriginalObject = m_pThisObject; 138 CXFA_Object* pOriginalObject = m_pThisObject;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 const CFX_ByteStringC& szPropName, 205 const CFX_ByteStringC& szPropName,
204 CFXJSE_Value* pValue) { 206 CFXJSE_Value* pValue) {
205 CXFA_Object* pOriginalObject = 207 CXFA_Object* pOriginalObject =
206 static_cast<CXFA_Object*>(FXJSE_Value_ToObject(pObject, nullptr)); 208 static_cast<CXFA_Object*>(FXJSE_Value_ToObject(pObject, nullptr));
207 CXFA_Document* pDoc = pOriginalObject->GetDocument(); 209 CXFA_Document* pDoc = pOriginalObject->GetDocument();
208 CXFA_ScriptContext* lpScriptContext = 210 CXFA_ScriptContext* lpScriptContext =
209 (CXFA_ScriptContext*)pDoc->GetScriptContext(); 211 (CXFA_ScriptContext*)pDoc->GetScriptContext();
210 CXFA_Object* lpCurNode = lpScriptContext->GetVariablesThis(pOriginalObject); 212 CXFA_Object* lpCurNode = lpScriptContext->GetVariablesThis(pOriginalObject);
211 CFX_WideString wsPropName = CFX_WideString::FromUTF8(szPropName); 213 CFX_WideString wsPropName = CFX_WideString::FromUTF8(szPropName);
212 if (lpScriptContext->GetType() == XFA_SCRIPTLANGTYPE_Formcalc) { 214 if (lpScriptContext->GetType() == XFA_SCRIPTLANGTYPE_Formcalc) {
213 if (szPropName == FOXIT_XFA_FM2JS_FORMCALC_RUNTIME) { 215 if (szPropName == kFormCalcRuntime) {
214 XFA_FM2JS_GlobalPropertyGetter(lpScriptContext->m_hFM2JSContext, pValue); 216 lpScriptContext->m_hFM2JSContext->GlobalPropertyGetter(pValue);
215 return; 217 return;
216 } 218 }
217 XFA_HashCode uHashCode = static_cast<XFA_HashCode>( 219 XFA_HashCode uHashCode = static_cast<XFA_HashCode>(
218 FX_HashCode_GetW(wsPropName.AsStringC(), false)); 220 FX_HashCode_GetW(wsPropName.AsStringC(), false));
219 if (uHashCode != XFA_HASHCODE_Layout) { 221 if (uHashCode != XFA_HASHCODE_Layout) {
220 CXFA_Object* pObject = 222 CXFA_Object* pObject =
221 lpScriptContext->GetDocument()->GetXFAObject(uHashCode); 223 lpScriptContext->GetDocument()->GetXFAObject(uHashCode);
222 if (pObject) { 224 if (pObject) {
223 FXJSE_Value_Set(pValue, lpScriptContext->GetJSValueFromMap(pObject)); 225 FXJSE_Value_Set(pValue, lpScriptContext->GetJSValueFromMap(pObject));
224 return; 226 return;
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 } 764 }
763 } 765 }
764 void CXFA_ScriptContext::AddNodesOfRunScript(CXFA_Node* pNode) { 766 void CXFA_ScriptContext::AddNodesOfRunScript(CXFA_Node* pNode) {
765 if (!m_pScriptNodeArray) { 767 if (!m_pScriptNodeArray) {
766 return; 768 return;
767 } 769 }
768 if (m_pScriptNodeArray->Find(pNode) == -1) { 770 if (m_pScriptNodeArray->Find(pNode) == -1) {
769 m_pScriptNodeArray->Add(pNode); 771 m_pScriptNodeArray->Add(pNode);
770 } 772 }
771 } 773 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/xfa_script_imp.h ('k') | xfa/fxfa/parser/xfa_script_layoutpseudomodel.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698