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

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

Issue 1243883003: Fix else-after-returns throughout pdfium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rebase, Address comments. 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/PublicMethods.cpp ('k') | fpdfsdk/src/javascript/util.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/IJavaScript.h" 7 #include "../../include/javascript/IJavaScript.h"
8 #include "../../include/javascript/JS_Context.h" 8 #include "../../include/javascript/JS_Context.h"
9 #include "../../include/javascript/JS_Define.h" 9 #include "../../include/javascript/JS_Define.h"
10 #include "../../include/javascript/JS_EventHandler.h" 10 #include "../../include/javascript/JS_EventHandler.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 #endif 84 #endif
85 85
86 86
87 BEGIN_JS_STATIC_CONST(CJS_Global) 87 BEGIN_JS_STATIC_CONST(CJS_Global)
88 END_JS_STATIC_CONST() 88 END_JS_STATIC_CONST()
89 89
90 BEGIN_JS_STATIC_PROP(CJS_Global) 90 BEGIN_JS_STATIC_PROP(CJS_Global)
91 END_JS_STATIC_PROP() 91 END_JS_STATIC_PROP()
92 92
93 BEGIN_JS_STATIC_METHOD(CJS_Global) 93 BEGIN_JS_STATIC_METHOD(CJS_Global)
94 » JS_STATIC_METHOD_ENTRY(setPersistent) 94 JS_STATIC_METHOD_ENTRY(setPersistent)
95 END_JS_STATIC_METHOD() 95 END_JS_STATIC_METHOD()
96 96
97 IMPLEMENT_SPECIAL_JS_CLASS(CJS_Global, global_alternate, global); 97 IMPLEMENT_SPECIAL_JS_CLASS(CJS_Global, global_alternate, global);
98 98
99 FX_BOOL»CJS_Global::InitInstance(IFXJS_Context* cc) 99 FX_BOOL CJS_Global::InitInstance(IFXJS_Context* cc)
100 { 100 {
101 » CJS_Context* pContext = (CJS_Context*)cc; 101 CJS_Context* pContext = (CJS_Context*)cc;
102 » ASSERT(pContext != NULL); 102 ASSERT(pContext != NULL);
103 103
104 » global_alternate* pGlobal = (global_alternate*)GetEmbedObject(); 104 global_alternate* pGlobal = (global_alternate*)GetEmbedObject();
105 » ASSERT(pGlobal != NULL); 105 ASSERT(pGlobal != NULL);
106 106
107 » pGlobal->Initial(pContext->GetReaderApp()); 107 pGlobal->Initial(pContext->GetReaderApp());
108 108
109 » return TRUE; 109 return TRUE;
110 }; 110 };
111 111
112 global_alternate::global_alternate(CJS_Object* pJSObject) 112 global_alternate::global_alternate(CJS_Object* pJSObject)
113 » : CJS_EmbedObj(pJSObject), 113 : CJS_EmbedObj(pJSObject),
114 » m_pApp(NULL) 114 m_pApp(NULL)
115 { 115 {
116 } 116 }
117 117
118 global_alternate::~global_alternate(void) 118 global_alternate::~global_alternate(void)
119 { 119 {
120 » DestroyGlobalPersisitentVariables(); 120 DestroyGlobalPersisitentVariables();
121 » m_pApp->GetRuntimeFactory()->ReleaseGlobalData(); 121 m_pApp->GetRuntimeFactory()->ReleaseGlobalData();
122 } 122 }
123 123
124 void global_alternate::Initial(CPDFDoc_Environment* pApp) 124 void global_alternate::Initial(CPDFDoc_Environment* pApp)
125 { 125 {
126 » m_pApp = pApp; 126 m_pApp = pApp;
127 » m_pGlobalData = pApp->GetRuntimeFactory()->NewGlobalData(pApp); 127 m_pGlobalData = pApp->GetRuntimeFactory()->NewGlobalData(pApp);
128 » UpdateGlobalPersistentVariables(); 128 UpdateGlobalPersistentVariables();
129 } 129 }
130 130
131 FX_BOOL»global_alternate::QueryProperty(const FX_WCHAR* propname) 131 FX_BOOL global_alternate::QueryProperty(const FX_WCHAR* propname)
132 { 132 {
133 » return CFX_WideString(propname) != L"setPersistent"; 133 return CFX_WideString(propname) != L"setPersistent";
134 } 134 }
135 135
136 FX_BOOL»global_alternate::DelProperty(IFXJS_Context* cc, const FX_WCHAR* propnam e, CFX_WideString& sError) 136 FX_BOOL global_alternate::DelProperty(IFXJS_Context* cc, const FX_WCHAR* propnam e, CFX_WideString& sError)
137 { 137 {
138 » js_global_data* pData = NULL; 138 js_global_data* pData = NULL;
139 » CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname); 139 CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname);
140 140
141 » if (m_mapGlobal.Lookup(sPropName, (void*&)pData)) 141 if (m_mapGlobal.Lookup(sPropName, (void*&)pData))
142 » { 142 {
143 » » pData->bDeleted = TRUE; 143 pData->bDeleted = TRUE;
144 » » return TRUE; 144 return TRUE;
145 » } 145 }
146 146
147 » return FALSE; 147 return FALSE;
148 } 148 }
149 149
150 FX_BOOL global_alternate::DoProperty(IFXJS_Context* cc, const FX_WCHAR* propname , CJS_PropValue& vp, CFX_WideString& sError) 150 FX_BOOL global_alternate::DoProperty(IFXJS_Context* cc, const FX_WCHAR* propname , CJS_PropValue& vp, CFX_WideString& sError)
151 { 151 {
152 » if (vp.IsSetting()) 152 if (vp.IsSetting())
153 » { 153 {
154 » » CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname) ; 154 CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname);
155 » » switch (vp.GetType()) 155 switch (vp.GetType())
156 » » { 156 {
157 » » case VT_number: 157 case VT_number:
158 » » » { 158 {
159 » » » » double dData; 159 double dData;
160 » » » » vp >> dData; 160 vp >> dData;
161 » » » » return SetGlobalVariables(sPropName, JS_GLOBALDA TA_TYPE_NUMBER, dData, false, "", v8::Local<v8::Object>(), FALSE); 161 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NUMBER, dData, false, "", v8::Local<v8::Object>(), FALSE);
162 » » » } 162 }
163 » » case VT_boolean: 163 case VT_boolean:
164 » » » { 164 {
165 » » » » bool bData; 165 bool bData;
166 » » » » vp >> bData; 166 vp >> bData;
167 » » » » return SetGlobalVariables(sPropName, JS_GLOBALDA TA_TYPE_BOOLEAN, 0, bData, "", v8::Local<v8::Object>(), FALSE); 167 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_BOOLEAN, 0, bData, "", v8::Local<v8::Object>(), FALSE);
168 » » » } 168 }
169 » » case VT_string: 169 case VT_string:
170 » » » { 170 {
171 » » » » CFX_ByteString sData; 171 CFX_ByteString sData;
172 » » » » vp >> sData; 172 vp >> sData;
173 » » » » return SetGlobalVariables(sPropName, JS_GLOBALDA TA_TYPE_STRING, 0, false, sData, v8::Local<v8::Object>(), FALSE); 173 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_STRING, 0, false, sData, v8::Local<v8::Object>(), FALSE);
174 » » » } 174 }
175 » » case VT_object: 175 case VT_object:
176 » » » { 176 {
177 » » » » JSObject pData; 177 JSObject pData;
178 » » » » vp >> pData; 178 vp >> pData;
179 » » » » return SetGlobalVariables(sPropName, JS_GLOBALDA TA_TYPE_OBJECT, 0, false, "", pData, FALSE); 179 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_OBJECT, 0, false, "", pData, FALSE);
180 » » » } 180 }
181 » » case VT_null: 181 case VT_null:
182 » » » { 182 {
183 » » » » return SetGlobalVariables(sPropName, JS_GLOBALDA TA_TYPE_NULL, 0, false, "", v8::Local<v8::Object>(), FALSE); 183 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NULL, 0, false, "", v8::Local<v8::Object>(), FALSE);
184 » » » } 184 }
185 » » case VT_undefined: 185 case VT_undefined:
186 » » » { 186 {
187 » » » » DelProperty(cc, propname, sError); 187 DelProperty(cc, propname, sError);
188 » » » » return TRUE; 188 return TRUE;
189 » » » } 189 }
190 » » default: 190 default:
191 » » » return FALSE; 191 break;
192 » » } 192 }
193 » } 193 }
194 » else 194 else
195 » { 195 {
196 » » js_global_data* pData = NULL; 196 void* pVoid = nullptr;
197 » » CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname) ; 197 if (!m_mapGlobal.Lookup(CFX_ByteString::FromUnicode(propname), pVoid))
198 198 {
199 » » if (m_mapGlobal.Lookup(sPropName, (void*&)pData)) 199 vp.SetNull();
200 » » { 200 return TRUE;
201 » » » if (pData) 201 }
202 » » » { 202 if (!pVoid)
203 » » » » if (!pData->bDeleted) 203 {
204 » » » » { 204 vp.SetNull();
205 » » » » » switch (pData->nType) 205 return TRUE;
206 » » » » » { 206 }
207 » » » » » case JS_GLOBALDATA_TYPE_NUMBER: 207 js_global_data* pData = (js_global_data*)pVoid;
208 » » » » » » vp << pData->dData; 208 if (pData->bDeleted)
209 » » » » » » break; 209 return TRUE;
210 » » » » » case JS_GLOBALDATA_TYPE_BOOLEAN: 210
211 » » » » » » vp << pData->bData; 211 switch (pData->nType)
212 » » » » » » break; 212 {
213 » » » » » case JS_GLOBALDATA_TYPE_STRING: 213 case JS_GLOBALDATA_TYPE_NUMBER:
214 » » » » » » vp << pData->sData; 214 vp << pData->dData;
215 » » » » » » break; 215 return TRUE;
216 » » » » » case JS_GLOBALDATA_TYPE_OBJECT: 216 case JS_GLOBALDATA_TYPE_BOOLEAN:
217 » » » » » » { 217 vp << pData->bData;
218 » » » » » » » v8::Local<v8::Object> ob j = v8::Local<v8::Object>::New(vp.GetIsolate(),pData->pData); 218 return TRUE;
219 » » » » » » » vp << obj; 219 case JS_GLOBALDATA_TYPE_STRING:
220 » » » » » » » break; 220 vp << pData->sData;
221 » » » » » » } 221 return TRUE;
222 » » » » » case JS_GLOBALDATA_TYPE_NULL: 222 case JS_GLOBALDATA_TYPE_OBJECT:
223 » » » » » » vp.SetNull(); 223 {
224 » » » » » » break; 224 v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(vp.Ge tIsolate(),pData->pData);
225 » » » » » default: 225 vp << obj;
226 » » » » » » return FALSE; 226 return TRUE;
227 » » » » » } 227 }
228 » » » » » return TRUE; 228 case JS_GLOBALDATA_TYPE_NULL:
229 » » » » } 229 vp.SetNull();
230 » » » » else 230 return TRUE;
231 » » » » { 231 default:
232 » » » » » return TRUE; 232 break;
233 » » » » } 233 }
234 » » » } 234 }
235 » » » else 235 return FALSE;
236 » » » {
237 » » » » vp.SetNull();
238 » » » » return TRUE;
239 » » » }
240 » » }
241 » » else
242 » » {
243 » » » vp.SetNull();
244 » » » return TRUE;
245 » » }
246 » }
247
248 » return FALSE;
249 } 236 }
250 237
251 FX_BOOL global_alternate::setPersistent(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) 238 FX_BOOL global_alternate::setPersistent(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
252 { 239 {
253 » CJS_Context* pContext = static_cast<CJS_Context*>(cc); 240 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
254 » if (params.size() != 2) 241 if (params.size() != 2)
255 » { 242 {
256 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 243 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
257 » » return FALSE; 244 return FALSE;
258 » } 245 }
259 246
260 » CFX_ByteString sName = params[0].ToCFXByteString(); 247 CFX_ByteString sName = params[0].ToCFXByteString();
261 248
262 » js_global_data* pData = NULL; 249 js_global_data* pData = NULL;
263 » if (m_mapGlobal.Lookup(sName, (void*&)pData)) 250 if (m_mapGlobal.Lookup(sName, (void*&)pData))
264 » { 251 {
265 » » if (pData && !pData->bDeleted) 252 if (pData && !pData->bDeleted)
266 » » { 253 {
267 » » » pData->bPersistent = params[1].ToBool(); 254 pData->bPersistent = params[1].ToBool();
268 » » » return TRUE; 255 return TRUE;
269 » » } 256 }
270 » } 257 }
271 258
272 » sError = JSGetStringFromID(pContext, IDS_STRING_JSNOGLOBAL); 259 sError = JSGetStringFromID(pContext, IDS_STRING_JSNOGLOBAL);
273 » return FALSE; 260 return FALSE;
274 } 261 }
275 262
276 void global_alternate::UpdateGlobalPersistentVariables() 263 void global_alternate::UpdateGlobalPersistentVariables()
277 { 264 {
278 » ASSERT(m_pGlobalData != NULL); 265 ASSERT(m_pGlobalData != NULL);
279 266
280 » for (int i=0,sz=m_pGlobalData->GetSize(); i<sz; i++) 267 for (int i=0,sz=m_pGlobalData->GetSize(); i<sz; i++)
281 » { 268 {
282 » » CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); 269 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i);
283 » » ASSERT(pData != NULL); 270 ASSERT(pData != NULL);
284 271
285 » » switch (pData->data.nType) 272 switch (pData->data.nType)
286 » » { 273 {
287 » » case JS_GLOBALDATA_TYPE_NUMBER: 274 case JS_GLOBALDATA_TYPE_NUMBER:
288 » » » SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_ NUMBER, pData->data.dData, false, "", v8::Local<v8::Object>(), pData->bPersisten t == 1); 275 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, pDat a->data.dData, false, "", v8::Local<v8::Object>(), pData->bPersistent == 1);
289 » » » JS_PutObjectNumber(NULL,(JSFXObject)(*m_pJSObject), 276 JS_PutObjectNumber(NULL,(JSFXObject)(*m_pJSObject),
290 » » » » » » » pData->data.sKey.UTF8 Decode().c_str(), pData->data.dData); 277 pData->data.sKey.UTF8Decode().c_str(), pData->dat a.dData);
291 » » » break; 278 break;
292 » » case JS_GLOBALDATA_TYPE_BOOLEAN: 279 case JS_GLOBALDATA_TYPE_BOOLEAN:
293 » » » SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_ BOOLEAN, 0, (bool)(pData->data.bData == 1), "", v8::Local<v8::Object>(), pData-> bPersistent == 1); 280 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0, (bool)(pData->data.bData == 1), "", v8::Local<v8::Object>(), pData->bPersistent == 1);
294 » » » JS_PutObjectBoolean(NULL,(JSFXObject)(*m_pJSObject), 281 JS_PutObjectBoolean(NULL,(JSFXObject)(*m_pJSObject),
295 » » » » » » » » pData->data.sKey .UTF8Decode().c_str(), (bool)(pData->data.bData == 1)); 282 pData->data.sKey.UTF8Decode().c_str(), (bool)(pD ata->data.bData == 1));
296 » » » break; 283 break;
297 » » case JS_GLOBALDATA_TYPE_STRING: 284 case JS_GLOBALDATA_TYPE_STRING:
298 » » » SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_ STRING, 0, false, pData->data.sData, v8::Local<v8::Object>(), pData->bPersistent == 1); 285 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0, f alse, pData->data.sData, v8::Local<v8::Object>(), pData->bPersistent == 1);
299 » » » JS_PutObjectString(NULL, (JSFXObject)(*m_pJSObject), 286 JS_PutObjectString(NULL, (JSFXObject)(*m_pJSObject),
300 » » » » » » » pData->data.sKey.UTF8 Decode().c_str(), 287 pData->data.sKey.UTF8Decode().c_str(),
301 » » » » » » » pData->data.sData.UTF 8Decode().c_str()); 288 pData->data.sData.UTF8Decode().c_str());
302 » » » break; 289 break;
303 » » case JS_GLOBALDATA_TYPE_OBJECT: 290 case JS_GLOBALDATA_TYPE_OBJECT:
304 » » » { 291 {
305 » » » » IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObjec t)(*m_pJSObject)); 292 IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObject)(*m_pJSObject) );
306 » » » » v8::Local<v8::Object> pObj = JS_NewFxDynamicObj( pRuntime, NULL, -1); 293 v8::Local<v8::Object> pObj = JS_NewFxDynamicObj(pRuntime, NULL, -1);
307 294
308 » » » » PutObjectProperty(pObj, &pData->data); 295 PutObjectProperty(pObj, &pData->data);
309 296
310 » » » » SetGlobalVariables(pData->data.sKey, JS_GLOBALDA TA_TYPE_OBJECT, 0, false, "", 297 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_OBJECT, 0, false, "",
311 » » » » » (JSObject)pObj, pData->bPersistent == 1) ; 298 (JSObject)pObj, pData->bPersistent == 1);
312 » » » » JS_PutObjectObject(NULL,(JSFXObject)(*m_pJSObjec t), 299 JS_PutObjectObject(NULL,(JSFXObject)(*m_pJSObject),
313 » » » » » » » » pData->data.s Key.UTF8Decode().c_str(), (JSObject)pObj); 300 pData->data.sKey.UTF8Decode().c_str(), (JSObj ect)pObj);
314 » » » } 301 }
315 » » » break; 302 break;
316 » » case JS_GLOBALDATA_TYPE_NULL: 303 case JS_GLOBALDATA_TYPE_NULL:
317 » » » SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_ NULL, 0, false, "", v8::Local<v8::Object>(), pData->bPersistent == 1); 304 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, fal se, "", v8::Local<v8::Object>(), pData->bPersistent == 1);
318 » » » JS_PutObjectNull(NULL,(JSFXObject)(*m_pJSObject), 305 JS_PutObjectNull(NULL,(JSFXObject)(*m_pJSObject),
319 » » » » » » » pData->data.sKey.UTF8De code().c_str()); 306 pData->data.sKey.UTF8Decode().c_str());
320 » » » break; 307 break;
321 » » } 308 }
322 » } 309 }
323 } 310 }
324 311
325 void global_alternate::CommitGlobalPersisitentVariables() 312 void global_alternate::CommitGlobalPersisitentVariables()
326 { 313 {
327 » ASSERT(m_pGlobalData != NULL); 314 ASSERT(m_pGlobalData != NULL);
328 315
329 » FX_POSITION» pos = m_mapGlobal.GetStartPosition(); 316 FX_POSITION pos = m_mapGlobal.GetStartPosition();
330 » while (pos) 317 while (pos)
331 » { 318 {
332 » » CFX_ByteString name; 319 CFX_ByteString name;
333 » » js_global_data* pData = NULL; 320 js_global_data* pData = NULL;
334 » » m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData); 321 m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData);
335 322
336 » » if (pData) 323 if (pData)
337 » » { 324 {
338 » » » if (pData->bDeleted) 325 if (pData->bDeleted)
339 » » » { 326 {
340 » » » » m_pGlobalData->DeleteGlobalVariable(name); 327 m_pGlobalData->DeleteGlobalVariable(name);
341 » » » } 328 }
342 » » » else 329 else
343 » » » { 330 {
344 » » » » switch (pData->nType) 331 switch (pData->nType)
345 » » » » { 332 {
346 » » » » case JS_GLOBALDATA_TYPE_NUMBER: 333 case JS_GLOBALDATA_TYPE_NUMBER:
347 » » » » » m_pGlobalData->SetGlobalVariableNumber(n ame, pData->dData); 334 m_pGlobalData->SetGlobalVariableNumber(name, pData->dData);
348 » » » » » m_pGlobalData->SetGlobalVariablePersiste nt(name, pData->bPersistent); 335 m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPer sistent);
349 » » » » » break; 336 break;
350 » » » » case JS_GLOBALDATA_TYPE_BOOLEAN: 337 case JS_GLOBALDATA_TYPE_BOOLEAN:
351 » » » » » m_pGlobalData->SetGlobalVariableBoolean( name, pData->bData); 338 m_pGlobalData->SetGlobalVariableBoolean(name, pData->bData);
352 » » » » » m_pGlobalData->SetGlobalVariablePersiste nt(name, pData->bPersistent); 339 m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPer sistent);
353 » » » » » break; 340 break;
354 » » » » case JS_GLOBALDATA_TYPE_STRING: 341 case JS_GLOBALDATA_TYPE_STRING:
355 » » » » » m_pGlobalData->SetGlobalVariableString(n ame, pData->sData); 342 m_pGlobalData->SetGlobalVariableString(name, pData->sData);
356 » » » » » m_pGlobalData->SetGlobalVariablePersiste nt(name, pData->bPersistent); 343 m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPer sistent);
357 » » » » » break; 344 break;
358 » » » » case JS_GLOBALDATA_TYPE_OBJECT: 345 case JS_GLOBALDATA_TYPE_OBJECT:
359 » » » » » //if (pData->pData) 346 //if (pData->pData)
360 » » » » » { 347 {
361 » » » » » » CJS_GlobalVariableArray array; 348 CJS_GlobalVariableArray array;
362 » » » » » » v8::Local<v8::Object> obj = v8:: Local<v8::Object>::New(GetJSObject()->GetIsolate(),pData->pData); 349 v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(G etJSObject()->GetIsolate(),pData->pData);
363 » » » » » » ObjectToArray(obj, array); 350 ObjectToArray(obj, array);
364 » » » » » » m_pGlobalData->SetGlobalVariable Object(name, array); 351 m_pGlobalData->SetGlobalVariableObject(name, array);
365 » » » » » » m_pGlobalData->SetGlobalVariable Persistent(name, pData->bPersistent); 352 m_pGlobalData->SetGlobalVariablePersistent(name, pData-> bPersistent);
366 » » » » » } 353 }
367 » » » » » break; 354 break;
368 » » » » case JS_GLOBALDATA_TYPE_NULL: 355 case JS_GLOBALDATA_TYPE_NULL:
369 » » » » » m_pGlobalData->SetGlobalVariableNull(nam e); 356 m_pGlobalData->SetGlobalVariableNull(name);
370 » » » » » m_pGlobalData->SetGlobalVariablePersiste nt(name, pData->bPersistent); 357 m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPer sistent);
371 » » » » » break; 358 break;
372 » » » » } 359 }
373 » » » } 360 }
374 » » } 361 }
375 » } 362 }
376 } 363 }
377 364
378 void global_alternate::ObjectToArray(v8::Local<v8::Object> pObj, CJS_GlobalVaria bleArray& array) 365 void global_alternate::ObjectToArray(v8::Local<v8::Object> pObj, CJS_GlobalVaria bleArray& array)
379 { 366 {
380 » v8::Local<v8::Context> context = pObj->CreationContext(); 367 v8::Local<v8::Context> context = pObj->CreationContext();
381 » v8::Isolate* isolate = context->GetIsolate(); 368 v8::Isolate* isolate = context->GetIsolate();
382 » v8::Local<v8::Array> pKeyList = JS_GetObjectElementNames(isolate, pObj); 369 v8::Local<v8::Array> pKeyList = JS_GetObjectElementNames(isolate, pObj);
383 » int» nObjElements = pKeyList->Length(); 370 int nObjElements = pKeyList->Length();
384 371
385 » for (int i=0; i<nObjElements; i++) 372 for (int i=0; i<nObjElements; i++)
386 » { 373 {
387 374
388 » » CFX_WideString ws = JS_ToString(isolate, JS_GetArrayElement(isol ate, pKeyList, i)); 375 CFX_WideString ws = JS_ToString(isolate, JS_GetArrayElement(isolate, pKe yList, i));
389 » » CFX_ByteString sKey = ws.UTF8Encode(); 376 CFX_ByteString sKey = ws.UTF8Encode();
390 377
391 » » v8::Local<v8::Value> v = JS_GetObjectElement(isolate, pObj, ws.c _str()); 378 v8::Local<v8::Value> v = JS_GetObjectElement(isolate, pObj, ws.c_str());
392 » » FXJSVALUETYPE vt = GET_VALUE_TYPE(v); 379 FXJSVALUETYPE vt = GET_VALUE_TYPE(v);
393 » » switch (vt) 380 switch (vt)
394 » » { 381 {
395 » » case VT_number: 382 case VT_number:
396 » » » { 383 {
397 » » » » CJS_KeyValue* pObjElement = new CJS_KeyValue; 384 CJS_KeyValue* pObjElement = new CJS_KeyValue;
398 » » » » pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER; 385 pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER;
399 » » » » pObjElement->sKey = sKey; 386 pObjElement->sKey = sKey;
400 » » » » pObjElement->dData = JS_ToNumber(isolate, v); 387 pObjElement->dData = JS_ToNumber(isolate, v);
401 » » » » array.Add(pObjElement); 388 array.Add(pObjElement);
402 » » » } 389 }
403 » » » break; 390 break;
404 » » case VT_boolean: 391 case VT_boolean:
405 » » » { 392 {
406 » » » » CJS_KeyValue* pObjElement = new CJS_KeyValue; 393 CJS_KeyValue* pObjElement = new CJS_KeyValue;
407 » » » » pObjElement->nType = JS_GLOBALDATA_TYPE_BOOLEAN; 394 pObjElement->nType = JS_GLOBALDATA_TYPE_BOOLEAN;
408 » » » » pObjElement->sKey = sKey; 395 pObjElement->sKey = sKey;
409 » » » » pObjElement->dData = JS_ToBoolean(isolate, v); 396 pObjElement->dData = JS_ToBoolean(isolate, v);
410 » » » » array.Add(pObjElement); 397 array.Add(pObjElement);
411 » » » } 398 }
412 » » » break; 399 break;
413 » » case VT_string: 400 case VT_string:
414 » » » { 401 {
415 » » » » CFX_ByteString sValue = CJS_Value(isolate, v, VT _string).ToCFXByteString(); 402 CFX_ByteString sValue = CJS_Value(isolate, v, VT_string).ToCFXBy teString();
416 » » » » CJS_KeyValue* pObjElement = new CJS_KeyValue; 403 CJS_KeyValue* pObjElement = new CJS_KeyValue;
417 » » » » pObjElement->nType = JS_GLOBALDATA_TYPE_STRING; 404 pObjElement->nType = JS_GLOBALDATA_TYPE_STRING;
418 » » » » pObjElement->sKey = sKey; 405 pObjElement->sKey = sKey;
419 » » » » pObjElement->sData = sValue; 406 pObjElement->sData = sValue;
420 » » » » array.Add(pObjElement); 407 array.Add(pObjElement);
421 » » » } 408 }
422 » » » break; 409 break;
423 » » case VT_object: 410 case VT_object:
424 » » » { 411 {
425 » » » » CJS_KeyValue* pObjElement = new CJS_KeyValue; 412 CJS_KeyValue* pObjElement = new CJS_KeyValue;
426 » » » » pObjElement->nType = JS_GLOBALDATA_TYPE_OBJECT; 413 pObjElement->nType = JS_GLOBALDATA_TYPE_OBJECT;
427 » » » » pObjElement->sKey = sKey; 414 pObjElement->sKey = sKey;
428 » » » » ObjectToArray(JS_ToObject(isolate, v), pObjEleme nt->objData); 415 ObjectToArray(JS_ToObject(isolate, v), pObjElement->objData);
429 » » » » array.Add(pObjElement); 416 array.Add(pObjElement);
430 » » » } 417 }
431 » » » break; 418 break;
432 » » case VT_null: 419 case VT_null:
433 » » » { 420 {
434 » » » » CJS_KeyValue* pObjElement = new CJS_KeyValue; 421 CJS_KeyValue* pObjElement = new CJS_KeyValue;
435 » » » » pObjElement->nType = JS_GLOBALDATA_TYPE_NULL; 422 pObjElement->nType = JS_GLOBALDATA_TYPE_NULL;
436 » » » » pObjElement->sKey = sKey; 423 pObjElement->sKey = sKey;
437 » » » » array.Add(pObjElement); 424 array.Add(pObjElement);
438 » » » } 425 }
439 » » » break; 426 break;
440 » » default: 427 default:
441 » » » break; 428 break;
442 » » } 429 }
443 » } 430 }
444 } 431 }
445 432
446 void global_alternate::PutObjectProperty(v8::Local<v8::Object> pObj, CJS_KeyValu e* pData) 433 void global_alternate::PutObjectProperty(v8::Local<v8::Object> pObj, CJS_KeyValu e* pData)
447 { 434 {
448 » ASSERT(pData != NULL); 435 ASSERT(pData != NULL);
449 436
450 » for (int i=0,sz=pData->objData.Count(); i<sz; i++) 437 for (int i=0,sz=pData->objData.Count(); i<sz; i++)
451 » { 438 {
452 » » CJS_KeyValue* pObjData = pData->objData.GetAt(i); 439 CJS_KeyValue* pObjData = pData->objData.GetAt(i);
453 » » ASSERT(pObjData != NULL); 440 ASSERT(pObjData != NULL);
454 441
455 » » switch (pObjData->nType) 442 switch (pObjData->nType)
456 » » { 443 {
457 » » case JS_GLOBALDATA_TYPE_NUMBER: 444 case JS_GLOBALDATA_TYPE_NUMBER:
458 » » » JS_PutObjectNumber(NULL,(JSObject)pObj, pObjData->sKey.U TF8Decode().c_str(), pObjData->dData); 445 JS_PutObjectNumber(NULL,(JSObject)pObj, pObjData->sKey.UTF8Decode(). c_str(), pObjData->dData);
459 » » » break; 446 break;
460 » » case JS_GLOBALDATA_TYPE_BOOLEAN: 447 case JS_GLOBALDATA_TYPE_BOOLEAN:
461 » » » JS_PutObjectBoolean(NULL,(JSObject)pObj, pObjData->sKey. UTF8Decode().c_str(), (bool)(pObjData->bData == 1)); 448 JS_PutObjectBoolean(NULL,(JSObject)pObj, pObjData->sKey.UTF8Decode() .c_str(), (bool)(pObjData->bData == 1));
462 » » » break; 449 break;
463 » » case JS_GLOBALDATA_TYPE_STRING: 450 case JS_GLOBALDATA_TYPE_STRING:
464 » » » JS_PutObjectString(NULL,(JSObject)pObj, pObjData->sKey.U TF8Decode().c_str(), pObjData->sData.UTF8Decode().c_str()); 451 JS_PutObjectString(NULL,(JSObject)pObj, pObjData->sKey.UTF8Decode(). c_str(), pObjData->sData.UTF8Decode().c_str());
465 » » » break; 452 break;
466 » » case JS_GLOBALDATA_TYPE_OBJECT: 453 case JS_GLOBALDATA_TYPE_OBJECT:
467 » » » { 454 {
468 » » » » IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObjec t)(*m_pJSObject)); 455 IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObject)(*m_pJSObject) );
469 » » » » v8::Local<v8::Object> pNewObj = JS_NewFxDynamicO bj(pRuntime, NULL, -1); 456 v8::Local<v8::Object> pNewObj = JS_NewFxDynamicObj(pRuntime, NUL L, -1);
470 » » » » PutObjectProperty(pNewObj, pObjData); 457 PutObjectProperty(pNewObj, pObjData);
471 » » » » JS_PutObjectObject(NULL, (JSObject)pObj, pObjDat a->sKey.UTF8Decode().c_str(), (JSObject)pNewObj); 458 JS_PutObjectObject(NULL, (JSObject)pObj, pObjData->sKey.UTF8Deco de().c_str(), (JSObject)pNewObj);
472 » » » } 459 }
473 » » » break; 460 break;
474 » » case JS_GLOBALDATA_TYPE_NULL: 461 case JS_GLOBALDATA_TYPE_NULL:
475 » » » JS_PutObjectNull(NULL,(JSObject)pObj, pObjData->sKey.UTF 8Decode().c_str()); 462 JS_PutObjectNull(NULL,(JSObject)pObj, pObjData->sKey.UTF8Decode().c_ str());
476 » » » break; 463 break;
477 » » } 464 }
478 » } 465 }
479 } 466 }
480 467
481 void global_alternate::DestroyGlobalPersisitentVariables() 468 void global_alternate::DestroyGlobalPersisitentVariables()
482 { 469 {
483 » FX_POSITION» pos = m_mapGlobal.GetStartPosition(); 470 FX_POSITION pos = m_mapGlobal.GetStartPosition();
484 » while (pos) 471 while (pos)
485 » { 472 {
486 » » CFX_ByteString name; 473 CFX_ByteString name;
487 » » js_global_data* pData = NULL; 474 js_global_data* pData = NULL;
488 » » m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData); 475 m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData);
489 » » delete pData; 476 delete pData;
490 » } 477 }
491 478
492 » m_mapGlobal.RemoveAll(); 479 m_mapGlobal.RemoveAll();
493 } 480 }
494 481
495 482
496 FX_BOOL global_alternate::SetGlobalVariables(const FX_CHAR* propname, int nType, 483 FX_BOOL global_alternate::SetGlobalVariables(const FX_CHAR* propname, int nType,
497 » » » » double dData, bool bData, const CFX_ByteString& sData, JSObject pData, bool bDefaultPersistent) 484 double dData, bool bData, const CFX_ByteString& sData, JSObject pData, bool bDefaultPersistent)
498 { 485 {
499 » if (propname == NULL) return FALSE; 486 if (propname == NULL) return FALSE;
500 487
501 » js_global_data* pTemp = NULL; 488 js_global_data* pTemp = NULL;
502 » m_mapGlobal.Lookup(propname, (void*&)pTemp); 489 m_mapGlobal.Lookup(propname, (void*&)pTemp);
503 490
504 » if (pTemp) 491 if (pTemp)
505 » { 492 {
506 » » if (pTemp->bDeleted || pTemp->nType != nType) 493 if (pTemp->bDeleted || pTemp->nType != nType)
507 » » { 494 {
508 » » » pTemp->dData = 0; 495 pTemp->dData = 0;
509 » » » pTemp->bData = 0; 496 pTemp->bData = 0;
510 » » » pTemp->sData = ""; 497 pTemp->sData = "";
511 » » » pTemp->nType = nType; 498 pTemp->nType = nType;
512 » » } 499 }
513 500
514 » » pTemp->bDeleted = FALSE; 501 pTemp->bDeleted = FALSE;
515 502
516 » » switch (nType) 503 switch (nType)
517 » » { 504 {
518 » » case JS_GLOBALDATA_TYPE_NUMBER: 505 case JS_GLOBALDATA_TYPE_NUMBER:
519 » » » { 506 {
520 » » » » pTemp->dData = dData; 507 pTemp->dData = dData;
521 » » » } 508 }
522 » » » break; 509 break;
523 » » case JS_GLOBALDATA_TYPE_BOOLEAN: 510 case JS_GLOBALDATA_TYPE_BOOLEAN:
524 » » » { 511 {
525 » » » » pTemp->bData = bData; 512 pTemp->bData = bData;
526 » » » } 513 }
527 » » » break; 514 break;
528 » » case JS_GLOBALDATA_TYPE_STRING: 515 case JS_GLOBALDATA_TYPE_STRING:
529 » » » { 516 {
530 » » » » pTemp->sData = sData; 517 pTemp->sData = sData;
531 » » » } 518 }
532 » » » break; 519 break;
533 » » case JS_GLOBALDATA_TYPE_OBJECT: 520 case JS_GLOBALDATA_TYPE_OBJECT:
534 » » » { 521 {
535 » » » » pTemp->pData.Reset(JS_GetRuntime(pData), pData); 522 pTemp->pData.Reset(JS_GetRuntime(pData), pData);
536 » » » } 523 }
537 » » » break; 524 break;
538 » » case JS_GLOBALDATA_TYPE_NULL: 525 case JS_GLOBALDATA_TYPE_NULL:
539 » » » break; 526 break;
540 » » default: 527 default:
541 » » » return FALSE; 528 return FALSE;
542 » » } 529 }
543 530
544 » » return TRUE; 531 return TRUE;
545 » } 532 }
546 533
547 » js_global_data* pNewData = NULL; 534 js_global_data* pNewData = NULL;
548 535
549 » switch (nType) 536 switch (nType)
550 » { 537 {
551 » case JS_GLOBALDATA_TYPE_NUMBER: 538 case JS_GLOBALDATA_TYPE_NUMBER:
552 » » { 539 {
553 » » » pNewData = new js_global_data; 540 pNewData = new js_global_data;
554 » » » pNewData->nType = JS_GLOBALDATA_TYPE_NUMBER; 541 pNewData->nType = JS_GLOBALDATA_TYPE_NUMBER;
555 » » » pNewData->dData = dData; 542 pNewData->dData = dData;
556 » » » pNewData->bPersistent = bDefaultPersistent; 543 pNewData->bPersistent = bDefaultPersistent;
557 » » } 544 }
558 » » break; 545 break;
559 » case JS_GLOBALDATA_TYPE_BOOLEAN: 546 case JS_GLOBALDATA_TYPE_BOOLEAN:
560 » » { 547 {
561 » » » pNewData = new js_global_data; 548 pNewData = new js_global_data;
562 » » » pNewData->nType = JS_GLOBALDATA_TYPE_BOOLEAN; 549 pNewData->nType = JS_GLOBALDATA_TYPE_BOOLEAN;
563 » » » pNewData->bData = bData; 550 pNewData->bData = bData;
564 » » » pNewData->bPersistent = bDefaultPersistent; 551 pNewData->bPersistent = bDefaultPersistent;
565 » » } 552 }
566 » » break; 553 break;
567 » case JS_GLOBALDATA_TYPE_STRING: 554 case JS_GLOBALDATA_TYPE_STRING:
568 » » { 555 {
569 » » » pNewData = new js_global_data; 556 pNewData = new js_global_data;
570 » » » pNewData->nType = JS_GLOBALDATA_TYPE_STRING; 557 pNewData->nType = JS_GLOBALDATA_TYPE_STRING;
571 » » » pNewData->sData = sData; 558 pNewData->sData = sData;
572 » » » pNewData->bPersistent = bDefaultPersistent; 559 pNewData->bPersistent = bDefaultPersistent;
573 » » } 560 }
574 » » break; 561 break;
575 » case JS_GLOBALDATA_TYPE_OBJECT: 562 case JS_GLOBALDATA_TYPE_OBJECT:
576 » » { 563 {
577 » » » pNewData = new js_global_data; 564 pNewData = new js_global_data;
578 » » » pNewData->nType = JS_GLOBALDATA_TYPE_OBJECT; 565 pNewData->nType = JS_GLOBALDATA_TYPE_OBJECT;
579 » » » pNewData->pData.Reset(JS_GetRuntime(pData), pData); 566 pNewData->pData.Reset(JS_GetRuntime(pData), pData);
580 » » » pNewData->bPersistent = bDefaultPersistent; 567 pNewData->bPersistent = bDefaultPersistent;
581 » » } 568 }
582 » » break; 569 break;
583 » case JS_GLOBALDATA_TYPE_NULL: 570 case JS_GLOBALDATA_TYPE_NULL:
584 » » { 571 {
585 » » » pNewData = new js_global_data; 572 pNewData = new js_global_data;
586 » » » pNewData->nType = JS_GLOBALDATA_TYPE_NULL; 573 pNewData->nType = JS_GLOBALDATA_TYPE_NULL;
587 » » » pNewData->bPersistent = bDefaultPersistent; 574 pNewData->bPersistent = bDefaultPersistent;
588 » » } 575 }
589 » » break; 576 break;
590 » default: 577 default:
591 » » return FALSE; 578 return FALSE;
592 » } 579 }
593 580
594 » m_mapGlobal.SetAt(propname, (void*)pNewData); 581 m_mapGlobal.SetAt(propname, (void*)pNewData);
595 582
596 » return TRUE; 583 return TRUE;
597 } 584 }
598 585
599 FXJSVALUETYPE GET_VALUE_TYPE(v8::Local<v8::Value> p) 586 FXJSVALUETYPE GET_VALUE_TYPE(v8::Local<v8::Value> p)
600 { 587 {
601 const unsigned int nHash = JS_CalcHash(JS_GetTypeof(p)); 588 const unsigned int nHash = JS_CalcHash(JS_GetTypeof(p));
602 589
603 if (nHash == JSCONST_nUndefHash) 590 if (nHash == JSCONST_nUndefHash)
604 return VT_undefined; 591 return VT_undefined;
605 if (nHash == JSCONST_nNullHash) 592 if (nHash == JSCONST_nNullHash)
606 return VT_null; 593 return VT_null;
607 if (nHash == JSCONST_nStringHash) 594 if (nHash == JSCONST_nStringHash)
608 return VT_string; 595 return VT_string;
609 if (nHash == JSCONST_nNumberHash) 596 if (nHash == JSCONST_nNumberHash)
610 return VT_number; 597 return VT_number;
611 if (nHash == JSCONST_nBoolHash) 598 if (nHash == JSCONST_nBoolHash)
612 return VT_boolean; 599 return VT_boolean;
613 if (nHash == JSCONST_nDateHash) 600 if (nHash == JSCONST_nDateHash)
614 return VT_date; 601 return VT_date;
615 if (nHash == JSCONST_nObjectHash) 602 if (nHash == JSCONST_nObjectHash)
616 return VT_object; 603 return VT_object;
617 if (nHash == JSCONST_nFXobjHash) 604 if (nHash == JSCONST_nFXobjHash)
618 return VT_fxobject; 605 return VT_fxobject;
619 606
620 return VT_unknown; 607 return VT_unknown;
621 } 608 }
622
OLDNEW
« no previous file with comments | « fpdfsdk/src/javascript/PublicMethods.cpp ('k') | fpdfsdk/src/javascript/util.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698