| 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 "../../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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 BEGIN_JS_STATIC_CONST(CJS_Global) | 82 BEGIN_JS_STATIC_CONST(CJS_Global) |
| 83 END_JS_STATIC_CONST() | 83 END_JS_STATIC_CONST() |
| 84 | 84 |
| 85 BEGIN_JS_STATIC_PROP(CJS_Global) | 85 BEGIN_JS_STATIC_PROP(CJS_Global) |
| 86 END_JS_STATIC_PROP() | 86 END_JS_STATIC_PROP() |
| 87 | 87 |
| 88 BEGIN_JS_STATIC_METHOD(CJS_Global) | 88 BEGIN_JS_STATIC_METHOD(CJS_Global) |
| 89 JS_STATIC_METHOD_ENTRY(setPersistent) | 89 JS_STATIC_METHOD_ENTRY(setPersistent) |
| 90 END_JS_STATIC_METHOD() | 90 END_JS_STATIC_METHOD() |
| 91 | 91 |
| 92 IMPLEMENT_SPECIAL_JS_CLASS(CJS_Global, global_alternate, global); | 92 IMPLEMENT_SPECIAL_JS_CLASS(CJS_Global, JSGlobalAlternate, global); |
| 93 | 93 |
| 94 FX_BOOL CJS_Global::InitInstance(IFXJS_Context* cc) { | 94 FX_BOOL CJS_Global::InitInstance(IFXJS_Context* cc) { |
| 95 CJS_Context* pContext = (CJS_Context*)cc; | 95 CJS_Context* pContext = (CJS_Context*)cc; |
| 96 ASSERT(pContext != NULL); | 96 ASSERT(pContext != NULL); |
| 97 | 97 |
| 98 global_alternate* pGlobal = (global_alternate*)GetEmbedObject(); | 98 JSGlobalAlternate* pGlobal = (JSGlobalAlternate*)GetEmbedObject(); |
| 99 ASSERT(pGlobal != NULL); | 99 ASSERT(pGlobal != NULL); |
| 100 | 100 |
| 101 pGlobal->Initial(pContext->GetReaderApp()); | 101 pGlobal->Initial(pContext->GetReaderApp()); |
| 102 | 102 |
| 103 return TRUE; | 103 return TRUE; |
| 104 }; | 104 }; |
| 105 | 105 |
| 106 global_alternate::global_alternate(CJS_Object* pJSObject) | 106 JSGlobalAlternate::JSGlobalAlternate(CJS_Object* pJSObject) |
| 107 : CJS_EmbedObj(pJSObject), m_pApp(NULL) {} | 107 : CJS_EmbedObj(pJSObject), m_pApp(NULL) { |
| 108 } |
| 108 | 109 |
| 109 global_alternate::~global_alternate() { | 110 JSGlobalAlternate::~JSGlobalAlternate() { |
| 110 DestroyGlobalPersisitentVariables(); | 111 DestroyGlobalPersisitentVariables(); |
| 111 m_pApp->GetRuntimeFactory()->ReleaseGlobalData(); | 112 m_pApp->GetRuntimeFactory()->ReleaseGlobalData(); |
| 112 } | 113 } |
| 113 | 114 |
| 114 void global_alternate::Initial(CPDFDoc_Environment* pApp) { | 115 void JSGlobalAlternate::Initial(CPDFDoc_Environment* pApp) { |
| 115 m_pApp = pApp; | 116 m_pApp = pApp; |
| 116 m_pGlobalData = pApp->GetRuntimeFactory()->NewGlobalData(pApp); | 117 m_pGlobalData = pApp->GetRuntimeFactory()->NewGlobalData(pApp); |
| 117 UpdateGlobalPersistentVariables(); | 118 UpdateGlobalPersistentVariables(); |
| 118 } | 119 } |
| 119 | 120 |
| 120 FX_BOOL global_alternate::QueryProperty(const FX_WCHAR* propname) { | 121 FX_BOOL JSGlobalAlternate::QueryProperty(const FX_WCHAR* propname) { |
| 121 return CFX_WideString(propname) != L"setPersistent"; | 122 return CFX_WideString(propname) != L"setPersistent"; |
| 122 } | 123 } |
| 123 | 124 |
| 124 FX_BOOL global_alternate::DelProperty(IFXJS_Context* cc, | 125 FX_BOOL JSGlobalAlternate::DelProperty(IFXJS_Context* cc, |
| 125 const FX_WCHAR* propname, | 126 const FX_WCHAR* propname, |
| 126 CFX_WideString& sError) { | 127 CFX_WideString& sError) { |
| 127 js_global_data* pData = NULL; | 128 JSGlobalData* pData = NULL; |
| 128 CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname); | 129 CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname); |
| 129 | 130 |
| 130 if (m_mapGlobal.Lookup(sPropName, (void*&)pData)) { | 131 if (m_mapGlobal.Lookup(sPropName, (void*&)pData)) { |
| 131 pData->bDeleted = TRUE; | 132 pData->bDeleted = TRUE; |
| 132 return TRUE; | 133 return TRUE; |
| 133 } | 134 } |
| 134 | 135 |
| 135 return FALSE; | 136 return FALSE; |
| 136 } | 137 } |
| 137 | 138 |
| 138 FX_BOOL global_alternate::DoProperty(IFXJS_Context* cc, | 139 FX_BOOL JSGlobalAlternate::DoProperty(IFXJS_Context* cc, |
| 139 const FX_WCHAR* propname, | 140 const FX_WCHAR* propname, |
| 140 CJS_PropValue& vp, | 141 CJS_PropValue& vp, |
| 141 CFX_WideString& sError) { | 142 CFX_WideString& sError) { |
| 142 if (vp.IsSetting()) { | 143 if (vp.IsSetting()) { |
| 143 CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname); | 144 CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname); |
| 144 switch (vp.GetType()) { | 145 switch (vp.GetType()) { |
| 145 case VT_number: { | 146 case VT_number: { |
| 146 double dData; | 147 double dData; |
| 147 vp >> dData; | 148 vp >> dData; |
| 148 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NUMBER, dData, | 149 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NUMBER, dData, |
| 149 false, "", v8::Local<v8::Object>(), FALSE); | 150 false, "", v8::Local<v8::Object>(), FALSE); |
| 150 } | 151 } |
| 151 case VT_boolean: { | 152 case VT_boolean: { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 180 } else { | 181 } else { |
| 181 void* pVoid = nullptr; | 182 void* pVoid = nullptr; |
| 182 if (!m_mapGlobal.Lookup(CFX_ByteString::FromUnicode(propname), pVoid)) { | 183 if (!m_mapGlobal.Lookup(CFX_ByteString::FromUnicode(propname), pVoid)) { |
| 183 vp.SetNull(); | 184 vp.SetNull(); |
| 184 return TRUE; | 185 return TRUE; |
| 185 } | 186 } |
| 186 if (!pVoid) { | 187 if (!pVoid) { |
| 187 vp.SetNull(); | 188 vp.SetNull(); |
| 188 return TRUE; | 189 return TRUE; |
| 189 } | 190 } |
| 190 js_global_data* pData = (js_global_data*)pVoid; | 191 JSGlobalData* pData = (JSGlobalData*)pVoid; |
| 191 if (pData->bDeleted) | 192 if (pData->bDeleted) |
| 192 return TRUE; | 193 return TRUE; |
| 193 | 194 |
| 194 switch (pData->nType) { | 195 switch (pData->nType) { |
| 195 case JS_GLOBALDATA_TYPE_NUMBER: | 196 case JS_GLOBALDATA_TYPE_NUMBER: |
| 196 vp << pData->dData; | 197 vp << pData->dData; |
| 197 return TRUE; | 198 return TRUE; |
| 198 case JS_GLOBALDATA_TYPE_BOOLEAN: | 199 case JS_GLOBALDATA_TYPE_BOOLEAN: |
| 199 vp << pData->bData; | 200 vp << pData->bData; |
| 200 return TRUE; | 201 return TRUE; |
| 201 case JS_GLOBALDATA_TYPE_STRING: | 202 case JS_GLOBALDATA_TYPE_STRING: |
| 202 vp << pData->sData; | 203 vp << pData->sData; |
| 203 return TRUE; | 204 return TRUE; |
| 204 case JS_GLOBALDATA_TYPE_OBJECT: { | 205 case JS_GLOBALDATA_TYPE_OBJECT: { |
| 205 v8::Local<v8::Object> obj = | 206 v8::Local<v8::Object> obj = |
| 206 v8::Local<v8::Object>::New(vp.GetIsolate(), pData->pData); | 207 v8::Local<v8::Object>::New(vp.GetIsolate(), pData->pData); |
| 207 vp << obj; | 208 vp << obj; |
| 208 return TRUE; | 209 return TRUE; |
| 209 } | 210 } |
| 210 case JS_GLOBALDATA_TYPE_NULL: | 211 case JS_GLOBALDATA_TYPE_NULL: |
| 211 vp.SetNull(); | 212 vp.SetNull(); |
| 212 return TRUE; | 213 return TRUE; |
| 213 default: | 214 default: |
| 214 break; | 215 break; |
| 215 } | 216 } |
| 216 } | 217 } |
| 217 return FALSE; | 218 return FALSE; |
| 218 } | 219 } |
| 219 | 220 |
| 220 FX_BOOL global_alternate::setPersistent(IFXJS_Context* cc, | 221 FX_BOOL JSGlobalAlternate::setPersistent(IFXJS_Context* cc, |
| 221 const CJS_Parameters& params, | 222 const CJS_Parameters& params, |
| 222 CJS_Value& vRet, | 223 CJS_Value& vRet, |
| 223 CFX_WideString& sError) { | 224 CFX_WideString& sError) { |
| 224 CJS_Context* pContext = static_cast<CJS_Context*>(cc); | 225 CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| 225 if (params.size() != 2) { | 226 if (params.size() != 2) { |
| 226 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | 227 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| 227 return FALSE; | 228 return FALSE; |
| 228 } | 229 } |
| 229 | 230 |
| 230 CFX_ByteString sName = params[0].ToCFXByteString(); | 231 CFX_ByteString sName = params[0].ToCFXByteString(); |
| 231 | 232 |
| 232 js_global_data* pData = NULL; | 233 JSGlobalData* pData = NULL; |
| 233 if (m_mapGlobal.Lookup(sName, (void*&)pData)) { | 234 if (m_mapGlobal.Lookup(sName, (void*&)pData)) { |
| 234 if (pData && !pData->bDeleted) { | 235 if (pData && !pData->bDeleted) { |
| 235 pData->bPersistent = params[1].ToBool(); | 236 pData->bPersistent = params[1].ToBool(); |
| 236 return TRUE; | 237 return TRUE; |
| 237 } | 238 } |
| 238 } | 239 } |
| 239 | 240 |
| 240 sError = JSGetStringFromID(pContext, IDS_STRING_JSNOGLOBAL); | 241 sError = JSGetStringFromID(pContext, IDS_STRING_JSNOGLOBAL); |
| 241 return FALSE; | 242 return FALSE; |
| 242 } | 243 } |
| 243 | 244 |
| 244 void global_alternate::UpdateGlobalPersistentVariables() { | 245 void JSGlobalAlternate::UpdateGlobalPersistentVariables() { |
| 245 ASSERT(m_pGlobalData != NULL); | 246 ASSERT(m_pGlobalData != NULL); |
| 246 | 247 |
| 247 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { | 248 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { |
| 248 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); | 249 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); |
| 249 ASSERT(pData != NULL); | 250 ASSERT(pData != NULL); |
| 250 | 251 |
| 251 switch (pData->data.nType) { | 252 switch (pData->data.nType) { |
| 252 case JS_GLOBALDATA_TYPE_NUMBER: | 253 case JS_GLOBALDATA_TYPE_NUMBER: |
| 253 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, | 254 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, |
| 254 pData->data.dData, false, "", | 255 pData->data.dData, false, "", |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, | 290 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, |
| 290 "", v8::Local<v8::Object>(), | 291 "", v8::Local<v8::Object>(), |
| 291 pData->bPersistent == 1); | 292 pData->bPersistent == 1); |
| 292 JS_PutObjectNull(NULL, (JSFXObject)(*m_pJSObject), | 293 JS_PutObjectNull(NULL, (JSFXObject)(*m_pJSObject), |
| 293 pData->data.sKey.UTF8Decode().c_str()); | 294 pData->data.sKey.UTF8Decode().c_str()); |
| 294 break; | 295 break; |
| 295 } | 296 } |
| 296 } | 297 } |
| 297 } | 298 } |
| 298 | 299 |
| 299 void global_alternate::CommitGlobalPersisitentVariables() { | 300 void JSGlobalAlternate::CommitGlobalPersisitentVariables() { |
| 300 ASSERT(m_pGlobalData != NULL); | 301 ASSERT(m_pGlobalData != NULL); |
| 301 | 302 |
| 302 FX_POSITION pos = m_mapGlobal.GetStartPosition(); | 303 FX_POSITION pos = m_mapGlobal.GetStartPosition(); |
| 303 while (pos) { | 304 while (pos) { |
| 304 CFX_ByteString name; | 305 CFX_ByteString name; |
| 305 js_global_data* pData = NULL; | 306 JSGlobalData* pData = NULL; |
| 306 m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData); | 307 m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData); |
| 307 | 308 |
| 308 if (pData) { | 309 if (pData) { |
| 309 if (pData->bDeleted) { | 310 if (pData->bDeleted) { |
| 310 m_pGlobalData->DeleteGlobalVariable(name); | 311 m_pGlobalData->DeleteGlobalVariable(name); |
| 311 } else { | 312 } else { |
| 312 switch (pData->nType) { | 313 switch (pData->nType) { |
| 313 case JS_GLOBALDATA_TYPE_NUMBER: | 314 case JS_GLOBALDATA_TYPE_NUMBER: |
| 314 m_pGlobalData->SetGlobalVariableNumber(name, pData->dData); | 315 m_pGlobalData->SetGlobalVariableNumber(name, pData->dData); |
| 315 m_pGlobalData->SetGlobalVariablePersistent(name, | 316 m_pGlobalData->SetGlobalVariablePersistent(name, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 341 m_pGlobalData->SetGlobalVariableNull(name); | 342 m_pGlobalData->SetGlobalVariableNull(name); |
| 342 m_pGlobalData->SetGlobalVariablePersistent(name, | 343 m_pGlobalData->SetGlobalVariablePersistent(name, |
| 343 pData->bPersistent); | 344 pData->bPersistent); |
| 344 break; | 345 break; |
| 345 } | 346 } |
| 346 } | 347 } |
| 347 } | 348 } |
| 348 } | 349 } |
| 349 } | 350 } |
| 350 | 351 |
| 351 void global_alternate::ObjectToArray(v8::Local<v8::Object> pObj, | 352 void JSGlobalAlternate::ObjectToArray(v8::Local<v8::Object> pObj, |
| 352 CJS_GlobalVariableArray& array) { | 353 CJS_GlobalVariableArray& array) { |
| 353 v8::Local<v8::Context> context = pObj->CreationContext(); | 354 v8::Local<v8::Context> context = pObj->CreationContext(); |
| 354 v8::Isolate* isolate = context->GetIsolate(); | 355 v8::Isolate* isolate = context->GetIsolate(); |
| 355 v8::Local<v8::Array> pKeyList = JS_GetObjectElementNames(isolate, pObj); | 356 v8::Local<v8::Array> pKeyList = JS_GetObjectElementNames(isolate, pObj); |
| 356 int nObjElements = pKeyList->Length(); | 357 int nObjElements = pKeyList->Length(); |
| 357 | 358 |
| 358 for (int i = 0; i < nObjElements; i++) { | 359 for (int i = 0; i < nObjElements; i++) { |
| 359 CFX_WideString ws = | 360 CFX_WideString ws = |
| 360 JS_ToString(isolate, JS_GetArrayElement(isolate, pKeyList, i)); | 361 JS_ToString(isolate, JS_GetArrayElement(isolate, pKeyList, i)); |
| 361 CFX_ByteString sKey = ws.UTF8Encode(); | 362 CFX_ByteString sKey = ws.UTF8Encode(); |
| 362 | 363 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 pObjElement->nType = JS_GLOBALDATA_TYPE_NULL; | 399 pObjElement->nType = JS_GLOBALDATA_TYPE_NULL; |
| 399 pObjElement->sKey = sKey; | 400 pObjElement->sKey = sKey; |
| 400 array.Add(pObjElement); | 401 array.Add(pObjElement); |
| 401 } break; | 402 } break; |
| 402 default: | 403 default: |
| 403 break; | 404 break; |
| 404 } | 405 } |
| 405 } | 406 } |
| 406 } | 407 } |
| 407 | 408 |
| 408 void global_alternate::PutObjectProperty(v8::Local<v8::Object> pObj, | 409 void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj, |
| 409 CJS_KeyValue* pData) { | 410 CJS_KeyValue* pData) { |
| 410 ASSERT(pData != NULL); | 411 ASSERT(pData != NULL); |
| 411 | 412 |
| 412 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { | 413 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { |
| 413 CJS_KeyValue* pObjData = pData->objData.GetAt(i); | 414 CJS_KeyValue* pObjData = pData->objData.GetAt(i); |
| 414 ASSERT(pObjData != NULL); | 415 ASSERT(pObjData != NULL); |
| 415 | 416 |
| 416 switch (pObjData->nType) { | 417 switch (pObjData->nType) { |
| 417 case JS_GLOBALDATA_TYPE_NUMBER: | 418 case JS_GLOBALDATA_TYPE_NUMBER: |
| 418 JS_PutObjectNumber(NULL, (JSObject)pObj, | 419 JS_PutObjectNumber(NULL, (JSObject)pObj, |
| 419 pObjData->sKey.UTF8Decode().c_str(), | 420 pObjData->sKey.UTF8Decode().c_str(), |
| (...skipping 18 matching lines...) Expand all Loading... |
| 438 (JSObject)pNewObj); | 439 (JSObject)pNewObj); |
| 439 } break; | 440 } break; |
| 440 case JS_GLOBALDATA_TYPE_NULL: | 441 case JS_GLOBALDATA_TYPE_NULL: |
| 441 JS_PutObjectNull(NULL, (JSObject)pObj, | 442 JS_PutObjectNull(NULL, (JSObject)pObj, |
| 442 pObjData->sKey.UTF8Decode().c_str()); | 443 pObjData->sKey.UTF8Decode().c_str()); |
| 443 break; | 444 break; |
| 444 } | 445 } |
| 445 } | 446 } |
| 446 } | 447 } |
| 447 | 448 |
| 448 void global_alternate::DestroyGlobalPersisitentVariables() { | 449 void JSGlobalAlternate::DestroyGlobalPersisitentVariables() { |
| 449 FX_POSITION pos = m_mapGlobal.GetStartPosition(); | 450 FX_POSITION pos = m_mapGlobal.GetStartPosition(); |
| 450 while (pos) { | 451 while (pos) { |
| 451 CFX_ByteString name; | 452 CFX_ByteString name; |
| 452 js_global_data* pData = NULL; | 453 JSGlobalData* pData = NULL; |
| 453 m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData); | 454 m_mapGlobal.GetNextAssoc(pos, name, (void*&)pData); |
| 454 delete pData; | 455 delete pData; |
| 455 } | 456 } |
| 456 | 457 |
| 457 m_mapGlobal.RemoveAll(); | 458 m_mapGlobal.RemoveAll(); |
| 458 } | 459 } |
| 459 | 460 |
| 460 FX_BOOL global_alternate::SetGlobalVariables(const FX_CHAR* propname, | 461 FX_BOOL JSGlobalAlternate::SetGlobalVariables(const FX_CHAR* propname, |
| 461 int nType, | 462 int nType, |
| 462 double dData, | 463 double dData, |
| 463 bool bData, | 464 bool bData, |
| 464 const CFX_ByteString& sData, | 465 const CFX_ByteString& sData, |
| 465 JSObject pData, | 466 JSObject pData, |
| 466 bool bDefaultPersistent) { | 467 bool bDefaultPersistent) { |
| 467 if (propname == NULL) | 468 if (propname == NULL) |
| 468 return FALSE; | 469 return FALSE; |
| 469 | 470 |
| 470 js_global_data* pTemp = NULL; | 471 JSGlobalData* pTemp = NULL; |
| 471 m_mapGlobal.Lookup(propname, (void*&)pTemp); | 472 m_mapGlobal.Lookup(propname, (void*&)pTemp); |
| 472 | 473 |
| 473 if (pTemp) { | 474 if (pTemp) { |
| 474 if (pTemp->bDeleted || pTemp->nType != nType) { | 475 if (pTemp->bDeleted || pTemp->nType != nType) { |
| 475 pTemp->dData = 0; | 476 pTemp->dData = 0; |
| 476 pTemp->bData = 0; | 477 pTemp->bData = 0; |
| 477 pTemp->sData = ""; | 478 pTemp->sData = ""; |
| 478 pTemp->nType = nType; | 479 pTemp->nType = nType; |
| 479 } | 480 } |
| 480 | 481 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 495 } break; | 496 } break; |
| 496 case JS_GLOBALDATA_TYPE_NULL: | 497 case JS_GLOBALDATA_TYPE_NULL: |
| 497 break; | 498 break; |
| 498 default: | 499 default: |
| 499 return FALSE; | 500 return FALSE; |
| 500 } | 501 } |
| 501 | 502 |
| 502 return TRUE; | 503 return TRUE; |
| 503 } | 504 } |
| 504 | 505 |
| 505 js_global_data* pNewData = NULL; | 506 JSGlobalData* pNewData = NULL; |
| 506 | 507 |
| 507 switch (nType) { | 508 switch (nType) { |
| 508 case JS_GLOBALDATA_TYPE_NUMBER: { | 509 case JS_GLOBALDATA_TYPE_NUMBER: { |
| 509 pNewData = new js_global_data; | 510 pNewData = new JSGlobalData; |
| 510 pNewData->nType = JS_GLOBALDATA_TYPE_NUMBER; | 511 pNewData->nType = JS_GLOBALDATA_TYPE_NUMBER; |
| 511 pNewData->dData = dData; | 512 pNewData->dData = dData; |
| 512 pNewData->bPersistent = bDefaultPersistent; | 513 pNewData->bPersistent = bDefaultPersistent; |
| 513 } break; | 514 } break; |
| 514 case JS_GLOBALDATA_TYPE_BOOLEAN: { | 515 case JS_GLOBALDATA_TYPE_BOOLEAN: { |
| 515 pNewData = new js_global_data; | 516 pNewData = new JSGlobalData; |
| 516 pNewData->nType = JS_GLOBALDATA_TYPE_BOOLEAN; | 517 pNewData->nType = JS_GLOBALDATA_TYPE_BOOLEAN; |
| 517 pNewData->bData = bData; | 518 pNewData->bData = bData; |
| 518 pNewData->bPersistent = bDefaultPersistent; | 519 pNewData->bPersistent = bDefaultPersistent; |
| 519 } break; | 520 } break; |
| 520 case JS_GLOBALDATA_TYPE_STRING: { | 521 case JS_GLOBALDATA_TYPE_STRING: { |
| 521 pNewData = new js_global_data; | 522 pNewData = new JSGlobalData; |
| 522 pNewData->nType = JS_GLOBALDATA_TYPE_STRING; | 523 pNewData->nType = JS_GLOBALDATA_TYPE_STRING; |
| 523 pNewData->sData = sData; | 524 pNewData->sData = sData; |
| 524 pNewData->bPersistent = bDefaultPersistent; | 525 pNewData->bPersistent = bDefaultPersistent; |
| 525 } break; | 526 } break; |
| 526 case JS_GLOBALDATA_TYPE_OBJECT: { | 527 case JS_GLOBALDATA_TYPE_OBJECT: { |
| 527 pNewData = new js_global_data; | 528 pNewData = new JSGlobalData; |
| 528 pNewData->nType = JS_GLOBALDATA_TYPE_OBJECT; | 529 pNewData->nType = JS_GLOBALDATA_TYPE_OBJECT; |
| 529 pNewData->pData.Reset(JS_GetRuntime(pData), pData); | 530 pNewData->pData.Reset(JS_GetRuntime(pData), pData); |
| 530 pNewData->bPersistent = bDefaultPersistent; | 531 pNewData->bPersistent = bDefaultPersistent; |
| 531 } break; | 532 } break; |
| 532 case JS_GLOBALDATA_TYPE_NULL: { | 533 case JS_GLOBALDATA_TYPE_NULL: { |
| 533 pNewData = new js_global_data; | 534 pNewData = new JSGlobalData; |
| 534 pNewData->nType = JS_GLOBALDATA_TYPE_NULL; | 535 pNewData->nType = JS_GLOBALDATA_TYPE_NULL; |
| 535 pNewData->bPersistent = bDefaultPersistent; | 536 pNewData->bPersistent = bDefaultPersistent; |
| 536 } break; | 537 } break; |
| 537 default: | 538 default: |
| 538 return FALSE; | 539 return FALSE; |
| 539 } | 540 } |
| 540 | 541 |
| 541 m_mapGlobal.SetAt(propname, (void*)pNewData); | 542 m_mapGlobal.SetAt(propname, (void*)pNewData); |
| 542 | 543 |
| 543 return TRUE; | 544 return TRUE; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 558 return VT_boolean; | 559 return VT_boolean; |
| 559 if (nHash == JSCONST_nDateHash) | 560 if (nHash == JSCONST_nDateHash) |
| 560 return VT_date; | 561 return VT_date; |
| 561 if (nHash == JSCONST_nObjectHash) | 562 if (nHash == JSCONST_nObjectHash) |
| 562 return VT_object; | 563 return VT_object; |
| 563 if (nHash == JSCONST_nFXobjHash) | 564 if (nHash == JSCONST_nFXobjHash) |
| 564 return VT_fxobject; | 565 return VT_fxobject; |
| 565 | 566 |
| 566 return VT_unknown; | 567 return VT_unknown; |
| 567 } | 568 } |
| OLD | NEW |