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

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

Issue 1239313005: Merge to XFA - else after returns. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Fix issues. Created 5 years, 5 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_EventHandler.cpp ('k') | fpdfsdk/src/javascript/JS_Runtime.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 "../../../core/include/fdrm/fx_crypt.h" 7 #include "../../../core/include/fdrm/fx_crypt.h"
8 #include "../../include/javascript/JavaScript.h" 8 #include "../../include/javascript/JavaScript.h"
9 #include "../../include/javascript/IJavaScript.h" 9 #include "../../include/javascript/IJavaScript.h"
10 #include "../../include/javascript/JS_GlobalData.h" 10 #include "../../include/javascript/JS_GlobalData.h"
11 11
12 #define JS_MAXGLOBALDATA» » » (1024 * 4 - 8) 12 #define JS_MAXGLOBALDATA (1024 * 4 - 8)
13 13
14 /* --------------------- CJS_GlobalVariableArray --------------------- */ 14 /* --------------------- CJS_GlobalVariableArray --------------------- */
15 15
16 CJS_GlobalVariableArray::CJS_GlobalVariableArray() 16 CJS_GlobalVariableArray::CJS_GlobalVariableArray()
17 { 17 {
18 } 18 }
19 19
20 CJS_GlobalVariableArray::~CJS_GlobalVariableArray() 20 CJS_GlobalVariableArray::~CJS_GlobalVariableArray()
21 { 21 {
22 » Empty(); 22 Empty();
23 } 23 }
24 24
25 void CJS_GlobalVariableArray::Copy(const CJS_GlobalVariableArray& array) 25 void CJS_GlobalVariableArray::Copy(const CJS_GlobalVariableArray& array)
26 { 26 {
27 » Empty(); 27 Empty();
28 » for (int i=0,sz=array.Count(); i<sz; i++) 28 for (int i=0,sz=array.Count(); i<sz; i++)
29 » { 29 {
30 » » CJS_KeyValue* pOldObjData = array.GetAt(i); 30 CJS_KeyValue* pOldObjData = array.GetAt(i);
31 » » ASSERT(pOldObjData != NULL); 31 ASSERT(pOldObjData != NULL);
32 32
33 » » switch (pOldObjData->nType) 33 switch (pOldObjData->nType)
34 » » { 34 {
35 » » case JS_GLOBALDATA_TYPE_NUMBER: 35 case JS_GLOBALDATA_TYPE_NUMBER:
36 » » » { 36 {
37 » » » » CJS_KeyValue* pNewObjData = new CJS_KeyValue; 37 CJS_KeyValue* pNewObjData = new CJS_KeyValue;
38 » » » » pNewObjData->sKey = pOldObjData->sKey; 38 pNewObjData->sKey = pOldObjData->sKey;
39 » » » » pNewObjData->nType = pOldObjData->nType; 39 pNewObjData->nType = pOldObjData->nType;
40 » » » » pNewObjData->dData = pOldObjData->dData; 40 pNewObjData->dData = pOldObjData->dData;
41 » » » » Add(pNewObjData); 41 Add(pNewObjData);
42 » » » } 42 }
43 » » » break; 43 break;
44 » » case JS_GLOBALDATA_TYPE_BOOLEAN: 44 case JS_GLOBALDATA_TYPE_BOOLEAN:
45 » » » { 45 {
46 » » » » CJS_KeyValue* pNewObjData = new CJS_KeyValue; 46 CJS_KeyValue* pNewObjData = new CJS_KeyValue;
47 » » » » pNewObjData->sKey = pOldObjData->sKey; 47 pNewObjData->sKey = pOldObjData->sKey;
48 » » » » pNewObjData->nType = pOldObjData->nType; 48 pNewObjData->nType = pOldObjData->nType;
49 » » » » pNewObjData->bData = pOldObjData->bData; 49 pNewObjData->bData = pOldObjData->bData;
50 » » » » Add(pNewObjData); 50 Add(pNewObjData);
51 » » » } 51 }
52 » » » break; 52 break;
53 » » case JS_GLOBALDATA_TYPE_STRING: 53 case JS_GLOBALDATA_TYPE_STRING:
54 » » » { 54 {
55 » » » » CJS_KeyValue* pNewObjData = new CJS_KeyValue; 55 CJS_KeyValue* pNewObjData = new CJS_KeyValue;
56 » » » » pNewObjData->sKey = pOldObjData->sKey; 56 pNewObjData->sKey = pOldObjData->sKey;
57 » » » » pNewObjData->nType = pOldObjData->nType; 57 pNewObjData->nType = pOldObjData->nType;
58 » » » » pNewObjData->sData = pOldObjData->sData; 58 pNewObjData->sData = pOldObjData->sData;
59 » » » » Add(pNewObjData); 59 Add(pNewObjData);
60 » » » } 60 }
61 » » » break; 61 break;
62 » » case JS_GLOBALDATA_TYPE_OBJECT: 62 case JS_GLOBALDATA_TYPE_OBJECT:
63 » » » { 63 {
64 » » » » CJS_KeyValue* pNewObjData = new CJS_KeyValue; 64 CJS_KeyValue* pNewObjData = new CJS_KeyValue;
65 » » » » pNewObjData->sKey = pOldObjData->sKey; 65 pNewObjData->sKey = pOldObjData->sKey;
66 » » » » pNewObjData->nType = pOldObjData->nType; 66 pNewObjData->nType = pOldObjData->nType;
67 » » » » pNewObjData->objData.Copy(pOldObjData->objData); 67 pNewObjData->objData.Copy(pOldObjData->objData);
68 » » » » Add(pNewObjData); 68 Add(pNewObjData);
69 » » » } 69 }
70 » » case JS_GLOBALDATA_TYPE_NULL: 70 case JS_GLOBALDATA_TYPE_NULL:
71 » » » { 71 {
72 » » » » CJS_KeyValue* pNewObjData = new CJS_KeyValue; 72 CJS_KeyValue* pNewObjData = new CJS_KeyValue;
73 » » » » pNewObjData->sKey = pOldObjData->sKey; 73 pNewObjData->sKey = pOldObjData->sKey;
74 » » » » pNewObjData->nType = pOldObjData->nType; 74 pNewObjData->nType = pOldObjData->nType;
75 » » » » Add(pNewObjData); 75 Add(pNewObjData);
76 » » » } 76 }
77 » » } 77 }
78 » } 78 }
79 } 79 }
80 80
81 void CJS_GlobalVariableArray::Add(CJS_KeyValue* p) 81 void CJS_GlobalVariableArray::Add(CJS_KeyValue* p)
82 { 82 {
83 » array.Add(p); 83 array.Add(p);
84 } 84 }
85 85
86 int CJS_GlobalVariableArray::Count() const 86 int CJS_GlobalVariableArray::Count() const
87 { 87 {
88 » return array.GetSize(); 88 return array.GetSize();
89 } 89 }
90 90
91 CJS_KeyValue* CJS_GlobalVariableArray::GetAt(int index) const 91 CJS_KeyValue* CJS_GlobalVariableArray::GetAt(int index) const
92 { 92 {
93 » return array.GetAt(index); 93 return array.GetAt(index);
94 } 94 }
95 95
96 void CJS_GlobalVariableArray::Empty() 96 void CJS_GlobalVariableArray::Empty()
97 { 97 {
98 » for (int i=0,sz=array.GetSize(); i<sz; i++) 98 for (int i=0,sz=array.GetSize(); i<sz; i++)
99 » » delete array.GetAt(i); 99 delete array.GetAt(i);
100 » array.RemoveAll(); 100 array.RemoveAll();
101 } 101 }
102 102
103 /* -------------------------- CJS_GlobalData -------------------------- */ 103 /* -------------------------- CJS_GlobalData -------------------------- */
104 104
105 #define READER_JS_GLOBALDATA_FILENAME» » » » L"Reader_JsGloba l.Data" 105 #define READER_JS_GLOBALDATA_FILENAME L"Reader_JsGlobal.Data"
106 #define PHANTOM_JS_GLOBALDATA_FILENAME» » » » L"Phantom_JsGlob al.Data" 106 #define PHANTOM_JS_GLOBALDATA_FILENAME L"Phantom_JsGlobal.Data"
107 #define SDK_JS_GLOBALDATA_FILENAME» » » » » L"SDK_Js Global.Data" 107 #define SDK_JS_GLOBALDATA_FILENAME L"SDK_JsGlobal.Data"
108 108
109 static const uint8_t JS_RC4KEY[] = {0x19,0xa8,0xe8,0x01,0xf6,0xa8,0xb6,0x4d,0x82 ,0x04, 109 static const uint8_t JS_RC4KEY[] = {0x19,0xa8,0xe8,0x01,0xf6,0xa8,0xb6,0x4d,0x82 ,0x04,
110 » » » » » » » 0x45,0x6d,0xb4,0xcf,0xd7 ,0x77,0x67,0xf9,0x75,0x9f, 110 0x45,0x6d,0xb4,0xcf,0xd7,0x77,0x67,0xf9,0x75,0x9f,
111 » » » » » » » 0xf0,0xe0,0x1e,0x51,0xee ,0x46,0xfd,0x0b,0xc9,0x93, 111 0xf0,0xe0,0x1e,0x51,0xee,0x46,0xfd,0x0b,0xc9,0x93,
112 » » » » » » » 0x25,0x55,0x4a,0xee,0xe0 ,0x16,0xd0,0xdf,0x8c,0xfa, 112 0x25,0x55,0x4a,0xee,0xe0,0x16,0xd0,0xdf,0x8c,0xfa,
113 » » » » » » » 0x2a,0xa9,0x49,0xfd,0x97 ,0x1c,0x0e,0x22,0x13,0x28, 113 0x2a,0xa9,0x49,0xfd,0x97,0x1c,0x0e,0x22,0x13,0x28,
114 » » » » » » » 0x7c,0xaf,0xc4,0xfc,0x9c ,0x12,0x65,0x8c,0x4e,0x5b, 114 0x7c,0xaf,0xc4,0xfc,0x9c,0x12,0x65,0x8c,0x4e,0x5b,
115 » » » » » » » 0x04,0x75,0x89,0xc9,0xb1 ,0xed,0x50,0xca,0x96,0x6f, 115 0x04,0x75,0x89,0xc9,0xb1,0xed,0x50,0xca,0x96,0x6f,
116 » » » » » » » 0x1a,0x7a,0xfe,0x58,0x5d ,0xec,0x19,0x4a,0xf6,0x35, 116 0x1a,0x7a,0xfe,0x58,0x5d,0xec,0x19,0x4a,0xf6,0x35,
117 » » » » » » » 0x6a,0x97,0x14,0x00,0x0e ,0xd0,0x6b,0xbb,0xd5,0x75, 117 0x6a,0x97,0x14,0x00,0x0e,0xd0,0x6b,0xbb,0xd5,0x75,
118 » » » » » » » 0x55,0x8b,0x6e,0x6b,0x19 ,0xa0,0xf8,0x77,0xd5,0xa3 118 0x55,0x8b,0x6e,0x6b,0x19,0xa0,0xf8,0x77,0xd5,0xa3
119 » » » » » » » }; 119 };
120 120
121 CJS_GlobalData::CJS_GlobalData(CPDFDoc_Environment* pApp) : m_pApp(pApp) 121 CJS_GlobalData::CJS_GlobalData(CPDFDoc_Environment* pApp) : m_pApp(pApp)
122 { 122 {
123 // » IBaseAnnot* pBaseAnnot = IBaseAnnot::GetBaseAnnot(m_pApp); 123 // IBaseAnnot* pBaseAnnot = IBaseAnnot::GetBaseAnnot(m_pApp);
124 // » ASSERT(pBaseAnnot != NULL); 124 // ASSERT(pBaseAnnot != NULL);
125 // 125 //
126 // » m_sFilePath = pBaseAnnot->GetUserPath(); 126 // m_sFilePath = pBaseAnnot->GetUserPath();
127 » m_sFilePath += SDK_JS_GLOBALDATA_FILENAME; 127 m_sFilePath += SDK_JS_GLOBALDATA_FILENAME;
128 128
129 » LoadGlobalPersistentVariables(); 129 LoadGlobalPersistentVariables();
130 } 130 }
131 131
132 CJS_GlobalData::~CJS_GlobalData() 132 CJS_GlobalData::~CJS_GlobalData()
133 { 133 {
134 » SaveGlobalPersisitentVariables(); 134 SaveGlobalPersisitentVariables();
135 135
136 » for (int i=0,sz=m_arrayGlobalData.GetSize(); i<sz; i++) 136 for (int i=0,sz=m_arrayGlobalData.GetSize(); i<sz; i++)
137 » » delete m_arrayGlobalData.GetAt(i); 137 delete m_arrayGlobalData.GetAt(i);
138 138
139 » m_arrayGlobalData.RemoveAll(); 139 m_arrayGlobalData.RemoveAll();
140 } 140 }
141 141
142 int» CJS_GlobalData::FindGlobalVariable(const FX_CHAR* propname) 142 int CJS_GlobalData::FindGlobalVariable(const FX_CHAR* propname)
143 { 143 {
144 » ASSERT(propname != NULL); 144 ASSERT(propname != NULL);
145 145
146 » int nRet = -1; 146 int nRet = -1;
147 147
148 » for (int i=0,sz=m_arrayGlobalData.GetSize(); i<sz; i++) 148 for (int i=0,sz=m_arrayGlobalData.GetSize(); i<sz; i++)
149 » { 149 {
150 » » CJS_GlobalData_Element* pTemp = m_arrayGlobalData.GetAt(i); 150 CJS_GlobalData_Element* pTemp = m_arrayGlobalData.GetAt(i);
151 » » if (pTemp->data.sKey[0] == *propname && pTemp->data.sKey == prop name) 151 if (pTemp->data.sKey[0] == *propname && pTemp->data.sKey == propname)
152 » » { 152 {
153 » » » nRet = i; 153 nRet = i;
154 » » » break; 154 break;
155 » » } 155 }
156 » } 156 }
157 157
158 » return nRet; 158 return nRet;
159 } 159 }
160 160
161 CJS_GlobalData_Element* CJS_GlobalData::GetGlobalVariable(const FX_CHAR* propnam e) 161 CJS_GlobalData_Element* CJS_GlobalData::GetGlobalVariable(const FX_CHAR* propnam e)
162 { 162 {
163 » ASSERT(propname != NULL); 163 ASSERT(propname != NULL);
164 164
165 » int» nFind = FindGlobalVariable(propname); 165 int nFind = FindGlobalVariable(propname);
166 166 if (nFind >= 0)
167 » if (nFind >= 0) 167 return m_arrayGlobalData.GetAt(nFind);
168 » » return m_arrayGlobalData.GetAt(nFind); 168
169 » else 169 return NULL;
170 » » return NULL;
171 } 170 }
172 171
173 void CJS_GlobalData::SetGlobalVariableNumber(const FX_CHAR* propname, double dDa ta) 172 void CJS_GlobalData::SetGlobalVariableNumber(const FX_CHAR* propname, double dDa ta)
174 { 173 {
175 » ASSERT(propname != NULL); 174 ASSERT(propname != NULL);
176 » CFX_ByteString sPropName = propname; 175
177 176 CFX_ByteString sPropName = propname;
178 » sPropName.TrimLeft(); 177 sPropName.TrimLeft();
179 » sPropName.TrimRight(); 178 sPropName.TrimRight();
180 179 if (sPropName.GetLength() == 0)
181 » if (sPropName.GetLength() == 0) return; 180 return;
182 181
183 » if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) 182 if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
184 » { 183 {
185 » » pData->data.nType = JS_GLOBALDATA_TYPE_NUMBER; 184 pData->data.nType = JS_GLOBALDATA_TYPE_NUMBER;
186 » » pData->data.dData = dData; 185 pData->data.dData = dData;
187 » } 186 }
188 » else 187 else
189 » { 188 {
190 » » CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element; 189 CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
191 » » pNewData->data.sKey = sPropName; 190 pNewData->data.sKey = sPropName;
192 » » pNewData->data.nType = JS_GLOBALDATA_TYPE_NUMBER; 191 pNewData->data.nType = JS_GLOBALDATA_TYPE_NUMBER;
193 » » pNewData->data.dData = dData; 192 pNewData->data.dData = dData;
194 193 m_arrayGlobalData.Add(pNewData);
195 » » m_arrayGlobalData.Add(pNewData); 194 }
196 » }
197 } 195 }
198 196
199 void CJS_GlobalData::SetGlobalVariableBoolean(const FX_CHAR* propname, bool bDat a) 197 void CJS_GlobalData::SetGlobalVariableBoolean(const FX_CHAR* propname, bool bDat a)
200 { 198 {
201 » ASSERT(propname != NULL); 199 ASSERT(propname != NULL);
202 » CFX_ByteString sPropName = propname; 200 CFX_ByteString sPropName = propname;
203 201
204 » sPropName.TrimLeft(); 202 sPropName.TrimLeft();
205 » sPropName.TrimRight(); 203 sPropName.TrimRight();
206 204
207 » if (sPropName.GetLength() == 0) return; 205 if (sPropName.GetLength() == 0) return;
208 206
209 » if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) 207 if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
210 » { 208 {
211 » » pData->data.nType = JS_GLOBALDATA_TYPE_BOOLEAN; 209 pData->data.nType = JS_GLOBALDATA_TYPE_BOOLEAN;
212 » » pData->data.bData = bData; 210 pData->data.bData = bData;
213 » } 211 }
214 » else 212 else
215 » { 213 {
216 » » CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element; 214 CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
217 » » pNewData->data.sKey = sPropName; 215 pNewData->data.sKey = sPropName;
218 » » pNewData->data.nType = JS_GLOBALDATA_TYPE_BOOLEAN; 216 pNewData->data.nType = JS_GLOBALDATA_TYPE_BOOLEAN;
219 » » pNewData->data.bData = bData; 217 pNewData->data.bData = bData;
220 218
221 » » m_arrayGlobalData.Add(pNewData); 219 m_arrayGlobalData.Add(pNewData);
222 » } 220 }
223 } 221 }
224 222
225 void CJS_GlobalData::SetGlobalVariableString(const FX_CHAR* propname, const CFX_ ByteString& sData) 223 void CJS_GlobalData::SetGlobalVariableString(const FX_CHAR* propname, const CFX_ ByteString& sData)
226 { 224 {
227 » ASSERT(propname != NULL); 225 ASSERT(propname != NULL);
228 » CFX_ByteString sPropName = propname; 226 CFX_ByteString sPropName = propname;
229 227
230 » sPropName.TrimLeft(); 228 sPropName.TrimLeft();
231 » sPropName.TrimRight(); 229 sPropName.TrimRight();
232 230
233 » if (sPropName.GetLength() == 0) return; 231 if (sPropName.GetLength() == 0) return;
234 232
235 » if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) 233 if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
236 » { 234 {
237 » » pData->data.nType = JS_GLOBALDATA_TYPE_STRING; 235 pData->data.nType = JS_GLOBALDATA_TYPE_STRING;
238 » » pData->data.sData = sData; 236 pData->data.sData = sData;
239 » } 237 }
240 » else 238 else
241 » { 239 {
242 » » CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element; 240 CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
243 » » pNewData->data.sKey = sPropName; 241 pNewData->data.sKey = sPropName;
244 » » pNewData->data.nType = JS_GLOBALDATA_TYPE_STRING; 242 pNewData->data.nType = JS_GLOBALDATA_TYPE_STRING;
245 » » pNewData->data.sData = sData; 243 pNewData->data.sData = sData;
246 244
247 » » m_arrayGlobalData.Add(pNewData); 245 m_arrayGlobalData.Add(pNewData);
248 » } 246 }
249 } 247 }
250 248
251 void CJS_GlobalData::SetGlobalVariableObject(const FX_CHAR* propname, const CJS_ GlobalVariableArray& array) 249 void CJS_GlobalData::SetGlobalVariableObject(const FX_CHAR* propname, const CJS_ GlobalVariableArray& array)
252 { 250 {
253 » ASSERT(propname != NULL); 251 ASSERT(propname != NULL);
254 » CFX_ByteString sPropName = propname; 252 CFX_ByteString sPropName = propname;
255 253
256 » sPropName.TrimLeft(); 254 sPropName.TrimLeft();
257 » sPropName.TrimRight(); 255 sPropName.TrimRight();
258 256
259 » if (sPropName.GetLength() == 0) return; 257 if (sPropName.GetLength() == 0) return;
260 258
261 » if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) 259 if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
262 » { 260 {
263 » » pData->data.nType = JS_GLOBALDATA_TYPE_OBJECT; 261 pData->data.nType = JS_GLOBALDATA_TYPE_OBJECT;
264 » » pData->data.objData.Copy(array); 262 pData->data.objData.Copy(array);
265 » } 263 }
266 » else 264 else
267 » { 265 {
268 » » CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element; 266 CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
269 » » pNewData->data.sKey = sPropName; 267 pNewData->data.sKey = sPropName;
270 » » pNewData->data.nType = JS_GLOBALDATA_TYPE_OBJECT; 268 pNewData->data.nType = JS_GLOBALDATA_TYPE_OBJECT;
271 » » pNewData->data.objData.Copy(array); 269 pNewData->data.objData.Copy(array);
272 270
273 » » m_arrayGlobalData.Add(pNewData); 271 m_arrayGlobalData.Add(pNewData);
274 » } 272 }
275 } 273 }
276 274
277 void CJS_GlobalData::SetGlobalVariableNull(const FX_CHAR* propname) 275 void CJS_GlobalData::SetGlobalVariableNull(const FX_CHAR* propname)
278 { 276 {
279 » ASSERT(propname != NULL); 277 ASSERT(propname != NULL);
280 » CFX_ByteString sPropName = propname; 278 CFX_ByteString sPropName = propname;
281 279
282 » sPropName.TrimLeft(); 280 sPropName.TrimLeft();
283 » sPropName.TrimRight(); 281 sPropName.TrimRight();
284 282
285 » if (sPropName.GetLength() == 0) return; 283 if (sPropName.GetLength() == 0) return;
286 284
287 » if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) 285 if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
288 » { 286 {
289 » » pData->data.nType = JS_GLOBALDATA_TYPE_NULL; 287 pData->data.nType = JS_GLOBALDATA_TYPE_NULL;
290 » } 288 }
291 » else 289 else
292 » { 290 {
293 » » CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element; 291 CJS_GlobalData_Element* pNewData = new CJS_GlobalData_Element;
294 » » pNewData->data.sKey = sPropName; 292 pNewData->data.sKey = sPropName;
295 » » pNewData->data.nType = JS_GLOBALDATA_TYPE_NULL; 293 pNewData->data.nType = JS_GLOBALDATA_TYPE_NULL;
296 294
297 » » m_arrayGlobalData.Add(pNewData); 295 m_arrayGlobalData.Add(pNewData);
298 » } 296 }
299 } 297 }
300 298
301 FX_BOOL CJS_GlobalData::SetGlobalVariablePersistent(const FX_CHAR* propname, FX_ BOOL bPersistent) 299 FX_BOOL CJS_GlobalData::SetGlobalVariablePersistent(const FX_CHAR* propname, FX_ BOOL bPersistent)
302 { 300 {
303 » ASSERT(propname != NULL); 301 ASSERT(propname != NULL);
304 » CFX_ByteString sPropName = propname; 302 CFX_ByteString sPropName = propname;
305 303
306 » sPropName.TrimLeft(); 304 sPropName.TrimLeft();
307 » sPropName.TrimRight(); 305 sPropName.TrimRight();
308 306
309 » if (sPropName.GetLength() == 0) return FALSE; 307 if (sPropName.GetLength() == 0) return FALSE;
310 308
311 » if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName)) 309 if (CJS_GlobalData_Element* pData = GetGlobalVariable(sPropName))
312 » { 310 {
313 » » pData->bPersistent = bPersistent; 311 pData->bPersistent = bPersistent;
314 » » return TRUE; 312 return TRUE;
315 » } 313 }
316 314
317 » return FALSE; 315 return FALSE;
318 } 316 }
319 317
320 FX_BOOL CJS_GlobalData::DeleteGlobalVariable(const FX_CHAR* propname) 318 FX_BOOL CJS_GlobalData::DeleteGlobalVariable(const FX_CHAR* propname)
321 { 319 {
322 » ASSERT(propname != NULL); 320 ASSERT(propname != NULL);
323 » CFX_ByteString sPropName = propname; 321 CFX_ByteString sPropName = propname;
324 322
325 » sPropName.TrimLeft(); 323 sPropName.TrimLeft();
326 » sPropName.TrimRight(); 324 sPropName.TrimRight();
327 325
328 » if (sPropName.GetLength() == 0) return FALSE; 326 if (sPropName.GetLength() == 0) return FALSE;
329 327
330 » int» nFind = FindGlobalVariable(sPropName); 328 int nFind = FindGlobalVariable(sPropName);
331 329
332 » if (nFind >= 0) 330 if (nFind >= 0)
333 » { 331 {
334 » » delete m_arrayGlobalData.GetAt(nFind); 332 delete m_arrayGlobalData.GetAt(nFind);
335 » » m_arrayGlobalData.RemoveAt(nFind); 333 m_arrayGlobalData.RemoveAt(nFind);
336 » » return TRUE; 334 return TRUE;
337 » } 335 }
338 336
339 » return FALSE; 337 return FALSE;
340 } 338 }
341 339
342 int32_t CJS_GlobalData::GetSize() const 340 int32_t CJS_GlobalData::GetSize() const
343 { 341 {
344 » return m_arrayGlobalData.GetSize(); 342 return m_arrayGlobalData.GetSize();
345 } 343 }
346 344
347 CJS_GlobalData_Element* CJS_GlobalData::GetAt(int index) const 345 CJS_GlobalData_Element* CJS_GlobalData::GetAt(int index) const
348 { 346 {
349 » return m_arrayGlobalData.GetAt(index); 347 return m_arrayGlobalData.GetAt(index);
350 } 348 }
351 349
352 void CJS_GlobalData::LoadGlobalPersistentVariables() 350 void CJS_GlobalData::LoadGlobalPersistentVariables()
353 { 351 {
354 » uint8_t* pBuffer = NULL; 352 uint8_t* pBuffer = NULL;
355 » int32_t nLength = 0; 353 int32_t nLength = 0;
356 354
357 » LoadFileBuffer(m_sFilePath.c_str(), pBuffer, nLength); 355 LoadFileBuffer(m_sFilePath.c_str(), pBuffer, nLength);
358 » CRYPT_ArcFourCryptBlock(pBuffer, nLength, JS_RC4KEY, sizeof(JS_RC4KEY)); 356 CRYPT_ArcFourCryptBlock(pBuffer, nLength, JS_RC4KEY, sizeof(JS_RC4KEY));
359 357
360 » if (pBuffer) 358 if (pBuffer)
361 » { 359 {
362 » » uint8_t* p = pBuffer; 360 uint8_t* p = pBuffer;
363 » » FX_WORD wType = *((FX_WORD*)p); 361 FX_WORD wType = *((FX_WORD*)p);
364 » » p += sizeof(FX_WORD); 362 p += sizeof(FX_WORD);
365 363
366 » » //FX_WORD wTemp = (FX_WORD)(('X' << 8) | 'F'); 364 //FX_WORD wTemp = (FX_WORD)(('X' << 8) | 'F');
367 365
368 » » if (wType == (FX_WORD)(('X' << 8) | 'F')) 366 if (wType == (FX_WORD)(('X' << 8) | 'F'))
369 » » { 367 {
370 » » » FX_WORD wVersion = *((FX_WORD*)p); 368 FX_WORD wVersion = *((FX_WORD*)p);
371 » » » p += sizeof(FX_WORD); 369 p += sizeof(FX_WORD);
372 370
373 » » » ASSERT(wVersion <= 2); 371 ASSERT(wVersion <= 2);
374 372
375 » » » FX_DWORD dwCount = *((FX_DWORD*)p); 373 FX_DWORD dwCount = *((FX_DWORD*)p);
376 » » » p += sizeof(FX_DWORD); 374 p += sizeof(FX_DWORD);
377 375
378 » » » FX_DWORD dwSize = *((FX_DWORD*)p); 376 FX_DWORD dwSize = *((FX_DWORD*)p);
379 » » » p += sizeof(FX_DWORD); 377 p += sizeof(FX_DWORD);
380 378
381 » » » if (dwSize == nLength - sizeof(FX_WORD) * 2 - sizeof(FX_ DWORD)* 2) 379 if (dwSize == nLength - sizeof(FX_WORD) * 2 - sizeof(FX_DWORD)* 2)
382 » » » { 380 {
383 » » » » for (int32_t i=0,sz=dwCount; i<sz; i++) 381 for (int32_t i=0,sz=dwCount; i<sz; i++)
384 » » » » { 382 {
385 » » » » » if (p > pBuffer + nLength) 383 if (p > pBuffer + nLength)
386 » » » » » » break; 384 break;
387 385
388 » » » » » FX_DWORD dwNameLen = *((FX_DWORD*)p); 386 FX_DWORD dwNameLen = *((FX_DWORD*)p);
389 » » » » » p += sizeof(FX_DWORD); 387 p += sizeof(FX_DWORD);
390 388
391 » » » » » if (p + dwNameLen > pBuffer + nLength) 389 if (p + dwNameLen > pBuffer + nLength)
392 » » » » » » break; 390 break;
393 391
394 » » » » » CFX_ByteString sEntry = CFX_ByteString(p , dwNameLen); 392 CFX_ByteString sEntry = CFX_ByteString(p, dwNameLen);
395 » » » » » p += sizeof(char) * dwNameLen; 393 p += sizeof(char) * dwNameLen;
396 394
397 » » » » » FX_WORD wDataType = *((FX_WORD*)p); 395 FX_WORD wDataType = *((FX_WORD*)p);
398 » » » » » p += sizeof(FX_WORD); 396 p += sizeof(FX_WORD);
399 397
400 » » » » » switch (wDataType) 398 switch (wDataType)
401 » » » » » { 399 {
402 » » » » » case JS_GLOBALDATA_TYPE_NUMBER: 400 case JS_GLOBALDATA_TYPE_NUMBER:
403 » » » » » » { 401 {
404 » » » » » » » double dData = 0; 402 double dData = 0;
405 » » » » » » » switch (wVersion) 403 switch (wVersion)
406 » » » » » » » { 404 {
407 » » » » » » » case 1: 405 case 1:
408 » » » » » » » » { 406 {
409 » » » » » » » » » FX_DWORD dwData = *((FX_DWORD*)p); 407 FX_DWORD dwData = *((FX_DWORD*)p);
410 » » » » » » » » » p += siz eof(FX_DWORD); 408 p += sizeof(FX_DWORD);
411 » » » » » » » » » dData = dwData; 409 dData = dwData;
412 » » » » » » » » } 410 }
413 » » » » » » » » break; 411 break;
414 » » » » » » » case 2: 412 case 2:
415 » » » » » » » » { 413 {
416 » » » » » » » » » dData = *((double*)p); 414 dData = *((double*)p);
417 » » » » » » » » » p += siz eof(double); 415 p += sizeof(double);
418 » » » » » » » » } 416 }
419 » » » » » » » » break; 417 break;
420 » » » » » » » } 418 }
421 » » » » » » » SetGlobalVariableNumber( sEntry, dData); 419 SetGlobalVariableNumber(sEntry, dData);
422 » » » » » » » SetGlobalVariablePersist ent(sEntry, TRUE); 420 SetGlobalVariablePersistent(sEntry, TRUE);
423 » » » » » » } 421 }
424 » » » » » » break; 422 break;
425 » » » » » case JS_GLOBALDATA_TYPE_BOOLEAN: 423 case JS_GLOBALDATA_TYPE_BOOLEAN:
426 » » » » » » { 424 {
427 » » » » » » » FX_WORD wData = *((FX_WO RD*)p); 425 FX_WORD wData = *((FX_WORD*)p);
428 » » » » » » » p += sizeof(FX_WORD); 426 p += sizeof(FX_WORD);
429 » » » » » » » SetGlobalVariableBoolean (sEntry, (bool)(wData == 1)); 427 SetGlobalVariableBoolean(sEntry, (bool)(wData == 1)) ;
430 » » » » » » » SetGlobalVariablePersist ent(sEntry, TRUE); 428 SetGlobalVariablePersistent(sEntry, TRUE);
431 » » » » » » } 429 }
432 » » » » » » break; 430 break;
433 » » » » » case JS_GLOBALDATA_TYPE_STRING: 431 case JS_GLOBALDATA_TYPE_STRING:
434 » » » » » » { 432 {
435 » » » » » » » FX_DWORD dwLength = *((F X_DWORD*)p); 433 FX_DWORD dwLength = *((FX_DWORD*)p);
436 » » » » » » » p += sizeof(FX_DWORD); 434 p += sizeof(FX_DWORD);
437 435
438 » » » » » » » if (p + dwLength > pBuff er + nLength) 436 if (p + dwLength > pBuffer + nLength)
439 » » » » » » » » break; 437 break;
440 438
441 » » » » » » » SetGlobalVariableString( sEntry, CFX_ByteString(p, dwLength)); 439 SetGlobalVariableString(sEntry, CFX_ByteString(p, dw Length));
442 » » » » » » » SetGlobalVariablePersist ent(sEntry, TRUE); 440 SetGlobalVariablePersistent(sEntry, TRUE);
443 » » » » » » » p += sizeof(char) * dwLe ngth; 441 p += sizeof(char) * dwLength;
444 » » » » » » } 442 }
445 » » » » » » break; 443 break;
446 » » » » » case JS_GLOBALDATA_TYPE_NULL: 444 case JS_GLOBALDATA_TYPE_NULL:
447 » » » » » » { 445 {
448 » » » » » » » SetGlobalVariableNull(sE ntry); 446 SetGlobalVariableNull(sEntry);
449 » » » » » » » SetGlobalVariablePersist ent(sEntry, TRUE); 447 SetGlobalVariablePersistent(sEntry, TRUE);
450 » » » » » » } 448 }
451 » » » » » } 449 }
452 » » » » } 450 }
453 » » » } 451 }
454 » » } 452 }
455 » » FX_Free(pBuffer); 453 FX_Free(pBuffer);
456 » } 454 }
457 } 455 }
458 456
459 /* 457 /*
460 struct js_global_datafile_header 458 struct js_global_datafile_header
461 { 459 {
462 » FX_WORD type; //FX ('X' << 8) | 'F' 460 FX_WORD type; //FX ('X' << 8) | 'F'
463 » FX_WORD version; //1.0 461 FX_WORD version; //1.0
464 » FX_DWORD datacount; 462 FX_DWORD datacount;
465 }; 463 };
466 struct js_global_datafile_data 464 struct js_global_datafile_data
467 { 465 {
468 » FX_WORD type; 466 FX_WORD type;
469 » FX_DWORD nData; 467 FX_DWORD nData;
470 » FX_WORD bData; 468 FX_WORD bData;
471 » FX_DWORD nStrLen; 469 FX_DWORD nStrLen;
472 » char* pStr; 470 char* pStr;
473 }; 471 };
474 */ 472 */
475 473
476 void CJS_GlobalData::SaveGlobalPersisitentVariables() 474 void CJS_GlobalData::SaveGlobalPersisitentVariables()
477 { 475 {
478 » FX_DWORD nCount = 0; 476 FX_DWORD nCount = 0;
479 » CFX_BinaryBuf sData; 477 CFX_BinaryBuf sData;
480 478
481 » for (int i=0,sz=m_arrayGlobalData.GetSize(); i<sz; i++) 479 for (int i=0,sz=m_arrayGlobalData.GetSize(); i<sz; i++)
482 » { 480 {
483 » » CJS_GlobalData_Element* pElement = m_arrayGlobalData.GetAt(i); 481 CJS_GlobalData_Element* pElement = m_arrayGlobalData.GetAt(i);
484 » » ASSERT(pElement != NULL); 482 ASSERT(pElement != NULL);
485 483
486 » » if (pElement->bPersistent) 484 if (pElement->bPersistent)
487 » » { 485 {
488 » » » CFX_BinaryBuf sElement; 486 CFX_BinaryBuf sElement;
489 » » » MakeByteString(pElement->data.sKey, &pElement->data, sEl ement); 487 MakeByteString(pElement->data.sKey, &pElement->data, sElement);
490 488
491 » » » if (sData.GetSize() + sElement.GetSize() > JS_MAXGLOBALD ATA) 489 if (sData.GetSize() + sElement.GetSize() > JS_MAXGLOBALDATA)
492 » » » » break; 490 break;
493 491
494 » » » sData.AppendBlock(sElement.GetBuffer(), sElement.GetSize ()); 492 sData.AppendBlock(sElement.GetBuffer(), sElement.GetSize());
495 » » » nCount++; 493 nCount++;
496 » » } 494 }
497 » } 495 }
498 496
499 » CFX_BinaryBuf sFile; 497 CFX_BinaryBuf sFile;
500 498
501 » FX_WORD wType = (FX_WORD)(('X' << 8) | 'F'); 499 FX_WORD wType = (FX_WORD)(('X' << 8) | 'F');
502 » sFile.AppendBlock(&wType, sizeof(FX_WORD)); 500 sFile.AppendBlock(&wType, sizeof(FX_WORD));
503 » FX_WORD wVersion = 2; 501 FX_WORD wVersion = 2;
504 » sFile.AppendBlock(&wVersion, sizeof(FX_WORD)); 502 sFile.AppendBlock(&wVersion, sizeof(FX_WORD));
505 » sFile.AppendBlock(&nCount, sizeof(FX_DWORD)); 503 sFile.AppendBlock(&nCount, sizeof(FX_DWORD));
506 » FX_DWORD dwSize = sData.GetSize(); 504 FX_DWORD dwSize = sData.GetSize();
507 » sFile.AppendBlock(&dwSize, sizeof(FX_DWORD)); 505 sFile.AppendBlock(&dwSize, sizeof(FX_DWORD));
508 506
509 » sFile.AppendBlock(sData.GetBuffer(), sData.GetSize()); 507 sFile.AppendBlock(sData.GetBuffer(), sData.GetSize());
510 508
511 » CRYPT_ArcFourCryptBlock(sFile.GetBuffer(), sFile.GetSize(), JS_RC4KEY, s izeof(JS_RC4KEY)); 509 CRYPT_ArcFourCryptBlock(sFile.GetBuffer(), sFile.GetSize(), JS_RC4KEY, sizeo f(JS_RC4KEY));
512 » WriteFileBuffer(m_sFilePath.c_str(), (const FX_CHAR*)sFile.GetBuffer(), sFile.GetSize()); 510 WriteFileBuffer(m_sFilePath.c_str(), (const FX_CHAR*)sFile.GetBuffer(), sFil e.GetSize());
513 } 511 }
514 512
515 void CJS_GlobalData::LoadFileBuffer(const FX_WCHAR* sFilePath, uint8_t*& pBuffer , int32_t& nLength) 513 void CJS_GlobalData::LoadFileBuffer(const FX_WCHAR* sFilePath, uint8_t*& pBuffer , int32_t& nLength)
516 { 514 {
517 //UnSupport. 515 //UnSupport.
518 } 516 }
519 517
520 void CJS_GlobalData::WriteFileBuffer(const FX_WCHAR* sFilePath, const FX_CHAR* p Buffer, int32_t nLength) 518 void CJS_GlobalData::WriteFileBuffer(const FX_WCHAR* sFilePath, const FX_CHAR* p Buffer, int32_t nLength)
521 { 519 {
522 //UnSupport. 520 //UnSupport.
523 } 521 }
524 522
525 void CJS_GlobalData::MakeByteString(const CFX_ByteString& name, CJS_KeyValue* pD ata, CFX_BinaryBuf& sData) 523 void CJS_GlobalData::MakeByteString(const CFX_ByteString& name, CJS_KeyValue* pD ata, CFX_BinaryBuf& sData)
526 { 524 {
527 » ASSERT(pData != NULL); 525 FX_WORD wType = (FX_WORD)pData->nType;
526 switch (wType)
527 {
528 case JS_GLOBALDATA_TYPE_NUMBER:
529 {
530 FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
531 sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
532 sData.AppendString(name);
533 sData.AppendBlock(&wType, sizeof(FX_WORD));
528 534
529 » FX_WORD wType = (FX_WORD)pData->nType; 535 double dData = pData->dData;
536 sData.AppendBlock(&dData, sizeof(double));
537 }
538 break;
539 case JS_GLOBALDATA_TYPE_BOOLEAN:
540 {
541 FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
542 sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
543 sData.AppendString(name);
544 sData.AppendBlock(&wType, sizeof(FX_WORD));
530 545
531 » switch (wType) 546 FX_WORD wData = (FX_WORD)pData->bData;
532 » { 547 sData.AppendBlock(&wData, sizeof(FX_WORD));
533 » case JS_GLOBALDATA_TYPE_NUMBER: 548 }
534 » » { 549 break;
535 » » » FX_DWORD dwNameLen = (FX_DWORD)name.GetLength(); 550 case JS_GLOBALDATA_TYPE_STRING:
536 » » » sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD)); 551 {
537 » » » sData.AppendString(name); 552 FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
553 sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
554 sData.AppendString(name);
555 sData.AppendBlock(&wType, sizeof(FX_WORD));
538 556
539 » » » sData.AppendBlock(&wType, sizeof(FX_WORD)); 557 FX_DWORD dwDataLen = (FX_DWORD)pData->sData.GetLength();
540 » » » double dData = pData->dData; 558 sData.AppendBlock(&dwDataLen, sizeof(FX_DWORD));
541 » » » sData.AppendBlock(&dData, sizeof(double)); 559 sData.AppendString(pData->sData);
542 » » } 560 }
543 » » break; 561 break;
544 » case JS_GLOBALDATA_TYPE_BOOLEAN: 562 case JS_GLOBALDATA_TYPE_NULL:
545 » » { 563 {
546 » » » FX_DWORD dwNameLen = (FX_DWORD)name.GetLength(); 564 FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
547 » » » sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD)); 565 sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
548 » » » sData.AppendString(name); 566 sData.AppendString(name);
549 567 sData.AppendBlock(&wType, sizeof(FX_DWORD));
550 » » » sData.AppendBlock(&wType, sizeof(FX_WORD)); 568 }
551 » » » FX_WORD wData = (FX_WORD)pData->bData; 569 break;
552 » » » sData.AppendBlock(&wData, sizeof(FX_WORD)); 570 default:
553 » » } 571 break;
554 » » break; 572 }
555 » case JS_GLOBALDATA_TYPE_STRING:
556 » » {
557 » » » FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
558 » » » sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
559 » » » sData.AppendString(name);
560
561 » » » sData.AppendBlock(&wType, sizeof(FX_WORD));
562
563 » » » FX_DWORD dwDataLen = (FX_DWORD)pData->sData.GetLength();
564 » » » sData.AppendBlock(&dwDataLen, sizeof(FX_DWORD));
565 » » » sData.AppendString(pData->sData);
566 » » }
567 » » break;
568 » case JS_GLOBALDATA_TYPE_NULL:
569 » » {
570 » » » FX_DWORD dwNameLen = (FX_DWORD)name.GetLength();
571 » » » sData.AppendBlock(&dwNameLen, sizeof(FX_DWORD));
572 » » » sData.AppendString(name);
573
574 » » » sData.AppendBlock(&wType, sizeof(FX_DWORD));
575 » » }
576 » » break;
577 » default:
578 » » break;
579 » }
580 } 573 }
581 574
OLDNEW
« no previous file with comments | « fpdfsdk/src/javascript/JS_EventHandler.cpp ('k') | fpdfsdk/src/javascript/JS_Runtime.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698