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 "../../../core/include/fxcrt/fx_ext.h" | 7 #include "../../../core/include/fxcrt/fx_ext.h" |
8 #include "../../include/javascript/IJavaScript.h" | 8 #include "../../include/javascript/IJavaScript.h" |
9 #include "../../include/javascript/JS_Context.h" | 9 #include "../../include/javascript/JS_Context.h" |
10 #include "../../include/javascript/JS_Define.h" | 10 #include "../../include/javascript/JS_Define.h" |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 | 236 |
237 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { | 237 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { |
238 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); | 238 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); |
239 ASSERT(pData != NULL); | 239 ASSERT(pData != NULL); |
240 | 240 |
241 switch (pData->data.nType) { | 241 switch (pData->data.nType) { |
242 case JS_GLOBALDATA_TYPE_NUMBER: | 242 case JS_GLOBALDATA_TYPE_NUMBER: |
243 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, | 243 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, |
244 pData->data.dData, false, "", | 244 pData->data.dData, false, "", |
245 v8::Local<v8::Object>(), pData->bPersistent == 1); | 245 v8::Local<v8::Object>(), pData->bPersistent == 1); |
246 FXJS_PutObjectNumber(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 246 FXJS_PutObjectNumber(NULL, m_pJSObject->ToV8Object(), |
247 pData->data.sKey.UTF8Decode().c_str(), | 247 pData->data.sKey.UTF8Decode().c_str(), |
248 pData->data.dData); | 248 pData->data.dData); |
249 break; | 249 break; |
250 case JS_GLOBALDATA_TYPE_BOOLEAN: | 250 case JS_GLOBALDATA_TYPE_BOOLEAN: |
251 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0, | 251 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0, |
252 (bool)(pData->data.bData == 1), "", | 252 (bool)(pData->data.bData == 1), "", |
253 v8::Local<v8::Object>(), pData->bPersistent == 1); | 253 v8::Local<v8::Object>(), pData->bPersistent == 1); |
254 FXJS_PutObjectBoolean(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 254 FXJS_PutObjectBoolean(NULL, m_pJSObject->ToV8Object(), |
255 pData->data.sKey.UTF8Decode().c_str(), | 255 pData->data.sKey.UTF8Decode().c_str(), |
256 (bool)(pData->data.bData == 1)); | 256 (bool)(pData->data.bData == 1)); |
257 break; | 257 break; |
258 case JS_GLOBALDATA_TYPE_STRING: | 258 case JS_GLOBALDATA_TYPE_STRING: |
259 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0, | 259 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0, |
260 false, pData->data.sData, v8::Local<v8::Object>(), | 260 false, pData->data.sData, v8::Local<v8::Object>(), |
261 pData->bPersistent == 1); | 261 pData->bPersistent == 1); |
262 FXJS_PutObjectString(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 262 FXJS_PutObjectString(NULL, m_pJSObject->ToV8Object(), |
263 pData->data.sKey.UTF8Decode().c_str(), | 263 pData->data.sKey.UTF8Decode().c_str(), |
264 pData->data.sData.UTF8Decode().c_str()); | 264 pData->data.sData.UTF8Decode().c_str()); |
265 break; | 265 break; |
266 case JS_GLOBALDATA_TYPE_OBJECT: { | 266 case JS_GLOBALDATA_TYPE_OBJECT: { |
267 v8::Isolate* pRuntime = | 267 v8::Isolate* pRuntime = FXJS_GetRuntime(m_pJSObject->ToV8Object()); |
268 FXJS_GetRuntime((v8::Local<v8::Object>)(*m_pJSObject)); | |
269 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(pRuntime, NULL, -1); | 268 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(pRuntime, NULL, -1); |
270 | 269 |
271 PutObjectProperty(pObj, &pData->data); | 270 PutObjectProperty(pObj, &pData->data); |
272 | 271 |
273 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_OBJECT, 0, | 272 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_OBJECT, 0, |
274 false, "", (v8::Local<v8::Object>)pObj, | 273 false, "", pObj, pData->bPersistent == 1); |
275 pData->bPersistent == 1); | 274 FXJS_PutObjectObject(NULL, m_pJSObject->ToV8Object(), |
276 FXJS_PutObjectObject(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 275 pData->data.sKey.UTF8Decode().c_str(), pObj); |
277 pData->data.sKey.UTF8Decode().c_str(), | 276 |
278 (v8::Local<v8::Object>)pObj); | |
279 } break; | 277 } break; |
280 case JS_GLOBALDATA_TYPE_NULL: | 278 case JS_GLOBALDATA_TYPE_NULL: |
281 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, | 279 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, |
282 "", v8::Local<v8::Object>(), | 280 "", v8::Local<v8::Object>(), |
283 pData->bPersistent == 1); | 281 pData->bPersistent == 1); |
284 FXJS_PutObjectNull(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 282 FXJS_PutObjectNull(NULL, m_pJSObject->ToV8Object(), |
285 pData->data.sKey.UTF8Decode().c_str()); | 283 pData->data.sKey.UTF8Decode().c_str()); |
286 break; | 284 break; |
287 } | 285 } |
288 } | 286 } |
289 } | 287 } |
290 | 288 |
291 void JSGlobalAlternate::CommitGlobalPersisitentVariables() { | 289 void JSGlobalAlternate::CommitGlobalPersisitentVariables() { |
292 ASSERT(m_pGlobalData); | 290 ASSERT(m_pGlobalData); |
293 for (auto it = m_mapGlobal.begin(); it != m_mapGlobal.end(); ++it) { | 291 for (auto it = m_mapGlobal.begin(); it != m_mapGlobal.end(); ++it) { |
294 CFX_ByteString name = it->first; | 292 CFX_ByteString name = it->first; |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj, | 387 void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj, |
390 CJS_KeyValue* pData) { | 388 CJS_KeyValue* pData) { |
391 ASSERT(pData != NULL); | 389 ASSERT(pData != NULL); |
392 | 390 |
393 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { | 391 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { |
394 CJS_KeyValue* pObjData = pData->objData.GetAt(i); | 392 CJS_KeyValue* pObjData = pData->objData.GetAt(i); |
395 ASSERT(pObjData != NULL); | 393 ASSERT(pObjData != NULL); |
396 | 394 |
397 switch (pObjData->nType) { | 395 switch (pObjData->nType) { |
398 case JS_GLOBALDATA_TYPE_NUMBER: | 396 case JS_GLOBALDATA_TYPE_NUMBER: |
399 FXJS_PutObjectNumber(NULL, (v8::Local<v8::Object>)pObj, | 397 FXJS_PutObjectNumber(NULL, pObj, pObjData->sKey.UTF8Decode().c_str(), |
400 pObjData->sKey.UTF8Decode().c_str(), | |
401 pObjData->dData); | 398 pObjData->dData); |
402 break; | 399 break; |
403 case JS_GLOBALDATA_TYPE_BOOLEAN: | 400 case JS_GLOBALDATA_TYPE_BOOLEAN: |
404 FXJS_PutObjectBoolean(NULL, (v8::Local<v8::Object>)pObj, | 401 FXJS_PutObjectBoolean(NULL, pObj, pObjData->sKey.UTF8Decode().c_str(), |
405 pObjData->sKey.UTF8Decode().c_str(), | 402 pObjData->bData == 1); |
406 (bool)(pObjData->bData == 1)); | |
407 break; | 403 break; |
408 case JS_GLOBALDATA_TYPE_STRING: | 404 case JS_GLOBALDATA_TYPE_STRING: |
409 FXJS_PutObjectString(NULL, (v8::Local<v8::Object>)pObj, | 405 FXJS_PutObjectString(NULL, pObj, pObjData->sKey.UTF8Decode().c_str(), |
410 pObjData->sKey.UTF8Decode().c_str(), | |
411 pObjData->sData.UTF8Decode().c_str()); | 406 pObjData->sData.UTF8Decode().c_str()); |
412 break; | 407 break; |
413 case JS_GLOBALDATA_TYPE_OBJECT: { | 408 case JS_GLOBALDATA_TYPE_OBJECT: { |
414 v8::Isolate* pRuntime = | 409 v8::Isolate* pRuntime = FXJS_GetRuntime(m_pJSObject->ToV8Object()); |
415 FXJS_GetRuntime((v8::Local<v8::Object>)(*m_pJSObject)); | |
416 v8::Local<v8::Object> pNewObj = | 410 v8::Local<v8::Object> pNewObj = |
417 FXJS_NewFxDynamicObj(pRuntime, NULL, -1); | 411 FXJS_NewFxDynamicObj(pRuntime, NULL, -1); |
418 PutObjectProperty(pNewObj, pObjData); | 412 PutObjectProperty(pNewObj, pObjData); |
419 FXJS_PutObjectObject(NULL, (v8::Local<v8::Object>)pObj, | 413 FXJS_PutObjectObject(NULL, pObj, pObjData->sKey.UTF8Decode().c_str(), |
420 pObjData->sKey.UTF8Decode().c_str(), | 414 pNewObj); |
421 (v8::Local<v8::Object>)pNewObj); | |
422 } break; | 415 } break; |
423 case JS_GLOBALDATA_TYPE_NULL: | 416 case JS_GLOBALDATA_TYPE_NULL: |
424 FXJS_PutObjectNull(NULL, (v8::Local<v8::Object>)pObj, | 417 FXJS_PutObjectNull(NULL, pObj, pObjData->sKey.UTF8Decode().c_str()); |
425 pObjData->sKey.UTF8Decode().c_str()); | |
426 break; | 418 break; |
427 } | 419 } |
428 } | 420 } |
429 } | 421 } |
430 | 422 |
431 void JSGlobalAlternate::DestroyGlobalPersisitentVariables() { | 423 void JSGlobalAlternate::DestroyGlobalPersisitentVariables() { |
432 for (const auto& pair : m_mapGlobal) { | 424 for (const auto& pair : m_mapGlobal) { |
433 delete pair.second; | 425 delete pair.second; |
434 } | 426 } |
435 m_mapGlobal.clear(); | 427 m_mapGlobal.clear(); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 return CJS_Value::VT_boolean; | 524 return CJS_Value::VT_boolean; |
533 if (nHash == JSCONST_nDateHash) | 525 if (nHash == JSCONST_nDateHash) |
534 return CJS_Value::VT_date; | 526 return CJS_Value::VT_date; |
535 if (nHash == JSCONST_nObjectHash) | 527 if (nHash == JSCONST_nObjectHash) |
536 return CJS_Value::VT_object; | 528 return CJS_Value::VT_object; |
537 if (nHash == JSCONST_nFXobjHash) | 529 if (nHash == JSCONST_nFXobjHash) |
538 return CJS_Value::VT_fxobject; | 530 return CJS_Value::VT_fxobject; |
539 | 531 |
540 return CJS_Value::VT_unknown; | 532 return CJS_Value::VT_unknown; |
541 } | 533 } |
OLD | NEW |