| 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 "../../include/javascript/IJavaScript.h" | 8 #include "../../include/javascript/IJavaScript.h" |
| 8 #include "../../include/javascript/JS_Context.h" | 9 #include "../../include/javascript/JS_Context.h" |
| 9 #include "../../include/javascript/JS_Define.h" | 10 #include "../../include/javascript/JS_Define.h" |
| 10 #include "../../include/javascript/JS_EventHandler.h" | 11 #include "../../include/javascript/JS_EventHandler.h" |
| 11 #include "../../include/javascript/JS_GlobalData.h" | 12 #include "../../include/javascript/JS_GlobalData.h" |
| 12 #include "../../include/javascript/JS_Object.h" | 13 #include "../../include/javascript/JS_Object.h" |
| 13 #include "../../include/javascript/JS_Value.h" | 14 #include "../../include/javascript/JS_Value.h" |
| 14 #include "../../include/javascript/JavaScript.h" | 15 #include "../../include/javascript/JavaScript.h" |
| 15 #include "../../include/javascript/global.h" | 16 #include "../../include/javascript/global.h" |
| 16 #include "../../include/javascript/resource.h" | 17 #include "../../include/javascript/resource.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 45 const unsigned int JSCONST_nBoolHash = | 46 const unsigned int JSCONST_nBoolHash = |
| 46 CHash<'b', 'o', 'o', 'l', 'e', 'a', 'n'>::value; | 47 CHash<'b', 'o', 'o', 'l', 'e', 'a', 'n'>::value; |
| 47 const unsigned int JSCONST_nDateHash = CHash<'d', 'a', 't', 'e'>::value; | 48 const unsigned int JSCONST_nDateHash = CHash<'d', 'a', 't', 'e'>::value; |
| 48 const unsigned int JSCONST_nObjectHash = | 49 const unsigned int JSCONST_nObjectHash = |
| 49 CHash<'o', 'b', 'j', 'e', 'c', 't'>::value; | 50 CHash<'o', 'b', 'j', 'e', 'c', 't'>::value; |
| 50 const unsigned int JSCONST_nFXobjHash = CHash<'f', 'x', 'o', 'b', 'j'>::value; | 51 const unsigned int JSCONST_nFXobjHash = CHash<'f', 'x', 'o', 'b', 'j'>::value; |
| 51 const unsigned int JSCONST_nNullHash = CHash<'n', 'u', 'l', 'l'>::value; | 52 const unsigned int JSCONST_nNullHash = CHash<'n', 'u', 'l', 'l'>::value; |
| 52 const unsigned int JSCONST_nUndefHash = | 53 const unsigned int JSCONST_nUndefHash = |
| 53 CHash<'u', 'n', 'd', 'e', 'f', 'i', 'n', 'e', 'd'>::value; | 54 CHash<'u', 'n', 'd', 'e', 'f', 'i', 'n', 'e', 'd'>::value; |
| 54 | 55 |
| 56 static unsigned JS_CalcHash(const wchar_t* main) { |
| 57 return (unsigned)FX_HashCode_String_GetW(main, FXSYS_wcslen(main)); |
| 58 } |
| 59 |
| 55 #ifdef _DEBUG | 60 #ifdef _DEBUG |
| 56 class HashVerify { | 61 class HashVerify { |
| 57 public: | 62 public: |
| 58 HashVerify(); | 63 HashVerify(); |
| 59 } g_hashVerify; | 64 } g_hashVerify; |
| 60 | 65 |
| 61 HashVerify::HashVerify() { | 66 HashVerify::HashVerify() { |
| 62 ASSERT(JSCONST_nStringHash == | 67 ASSERT(JSCONST_nStringHash == JS_CalcHash(kFXJSValueNameString)); |
| 63 JS_CalcHash(kFXJSValueNameString, wcslen(kFXJSValueNameString))); | 68 ASSERT(JSCONST_nNumberHash == JS_CalcHash(kFXJSValueNameNumber)); |
| 64 ASSERT(JSCONST_nNumberHash == | 69 ASSERT(JSCONST_nBoolHash == JS_CalcHash(kFXJSValueNameBoolean)); |
| 65 JS_CalcHash(kFXJSValueNameNumber, wcslen(kFXJSValueNameNumber))); | 70 ASSERT(JSCONST_nDateHash == JS_CalcHash(kFXJSValueNameDate)); |
| 66 ASSERT(JSCONST_nBoolHash == | 71 ASSERT(JSCONST_nObjectHash == JS_CalcHash(kFXJSValueNameObject)); |
| 67 JS_CalcHash(kFXJSValueNameBoolean, wcslen(kFXJSValueNameBoolean))); | 72 ASSERT(JSCONST_nFXobjHash == JS_CalcHash(kFXJSValueNameFxobj)); |
| 68 ASSERT(JSCONST_nDateHash == | 73 ASSERT(JSCONST_nNullHash == JS_CalcHash(kFXJSValueNameNull)); |
| 69 JS_CalcHash(kFXJSValueNameDate, wcslen(kFXJSValueNameDate))); | 74 ASSERT(JSCONST_nUndefHash == JS_CalcHash(kFXJSValueNameUndefined); |
| 70 ASSERT(JSCONST_nObjectHash == | |
| 71 JS_CalcHash(kFXJSValueNameObject, wcslen(kFXJSValueNameObject))); | |
| 72 ASSERT(JSCONST_nFXobjHash == | |
| 73 JS_CalcHash(kFXJSValueNameFxobj, wcslen(kFXJSValueNameFxobj))); | |
| 74 ASSERT(JSCONST_nNullHash == | |
| 75 JS_CalcHash(kFXJSValueNameNull, wcslen(kFXJSValueNameNull))); | |
| 76 ASSERT(JSCONST_nUndefHash == | |
| 77 JS_CalcHash(kFXJSValueNameUndefined, wcslen(kFXJSValueNameUndefined))); | |
| 78 } | 75 } |
| 79 #endif | 76 #endif |
| 80 | 77 |
| 81 BEGIN_JS_STATIC_CONST(CJS_Global) | 78 BEGIN_JS_STATIC_CONST(CJS_Global) |
| 82 END_JS_STATIC_CONST() | 79 END_JS_STATIC_CONST() |
| 83 | 80 |
| 84 BEGIN_JS_STATIC_PROP(CJS_Global) | 81 BEGIN_JS_STATIC_PROP(CJS_Global) |
| 85 END_JS_STATIC_PROP() | 82 END_JS_STATIC_PROP() |
| 86 | 83 |
| 87 BEGIN_JS_STATIC_METHOD(CJS_Global) | 84 BEGIN_JS_STATIC_METHOD(CJS_Global) |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 return TRUE; | 129 return TRUE; |
| 133 } | 130 } |
| 134 | 131 |
| 135 FX_BOOL JSGlobalAlternate::DoProperty(IFXJS_Context* cc, | 132 FX_BOOL JSGlobalAlternate::DoProperty(IFXJS_Context* cc, |
| 136 const FX_WCHAR* propname, | 133 const FX_WCHAR* propname, |
| 137 CJS_PropValue& vp, | 134 CJS_PropValue& vp, |
| 138 CFX_WideString& sError) { | 135 CFX_WideString& sError) { |
| 139 if (vp.IsSetting()) { | 136 if (vp.IsSetting()) { |
| 140 CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname); | 137 CFX_ByteString sPropName = CFX_ByteString::FromUnicode(propname); |
| 141 switch (vp.GetType()) { | 138 switch (vp.GetType()) { |
| 142 case VT_number: { | 139 case CJS_Value::VT_number: { |
| 143 double dData; | 140 double dData; |
| 144 vp >> dData; | 141 vp >> dData; |
| 145 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NUMBER, dData, | 142 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NUMBER, dData, |
| 146 false, "", v8::Local<v8::Object>(), FALSE); | 143 false, "", v8::Local<v8::Object>(), FALSE); |
| 147 } | 144 } |
| 148 case VT_boolean: { | 145 case CJS_Value::VT_boolean: { |
| 149 bool bData; | 146 bool bData; |
| 150 vp >> bData; | 147 vp >> bData; |
| 151 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_BOOLEAN, 0, | 148 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_BOOLEAN, 0, |
| 152 bData, "", v8::Local<v8::Object>(), FALSE); | 149 bData, "", v8::Local<v8::Object>(), FALSE); |
| 153 } | 150 } |
| 154 case VT_string: { | 151 case CJS_Value::VT_string: { |
| 155 CFX_ByteString sData; | 152 CFX_ByteString sData; |
| 156 vp >> sData; | 153 vp >> sData; |
| 157 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_STRING, 0, | 154 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_STRING, 0, |
| 158 false, sData, v8::Local<v8::Object>(), FALSE); | 155 false, sData, v8::Local<v8::Object>(), FALSE); |
| 159 } | 156 } |
| 160 case VT_object: { | 157 case CJS_Value::VT_object: { |
| 161 v8::Local<v8::Object> pData; | 158 v8::Local<v8::Object> pData; |
| 162 vp >> pData; | 159 vp >> pData; |
| 163 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_OBJECT, 0, | 160 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_OBJECT, 0, |
| 164 false, "", pData, FALSE); | 161 false, "", pData, FALSE); |
| 165 } | 162 } |
| 166 case VT_null: { | 163 case CJS_Value::VT_null: { |
| 167 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NULL, 0, false, | 164 return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NULL, 0, false, |
| 168 "", v8::Local<v8::Object>(), FALSE); | 165 "", v8::Local<v8::Object>(), FALSE); |
| 169 } | 166 } |
| 170 case VT_undefined: { | 167 case CJS_Value::VT_undefined: { |
| 171 DelProperty(cc, propname, sError); | 168 DelProperty(cc, propname, sError); |
| 172 return TRUE; | 169 return TRUE; |
| 173 } | 170 } |
| 174 default: | 171 default: |
| 175 break; | 172 break; |
| 176 } | 173 } |
| 177 } else { | 174 } else { |
| 178 auto it = m_mapGlobal.find(CFX_ByteString::FromUnicode(propname)); | 175 auto it = m_mapGlobal.find(CFX_ByteString::FromUnicode(propname)); |
| 179 if (it == m_mapGlobal.end()) { | 176 if (it == m_mapGlobal.end()) { |
| 180 vp.SetNull(); | 177 vp.SetNull(); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 | 236 |
| 240 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { | 237 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { |
| 241 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); | 238 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); |
| 242 ASSERT(pData != NULL); | 239 ASSERT(pData != NULL); |
| 243 | 240 |
| 244 switch (pData->data.nType) { | 241 switch (pData->data.nType) { |
| 245 case JS_GLOBALDATA_TYPE_NUMBER: | 242 case JS_GLOBALDATA_TYPE_NUMBER: |
| 246 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, | 243 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, |
| 247 pData->data.dData, false, "", | 244 pData->data.dData, false, "", |
| 248 v8::Local<v8::Object>(), pData->bPersistent == 1); | 245 v8::Local<v8::Object>(), pData->bPersistent == 1); |
| 249 JS_PutObjectNumber(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 246 FXJS_PutObjectNumber(NULL, (v8::Local<v8::Object>)(*m_pJSObject), |
| 250 pData->data.sKey.UTF8Decode().c_str(), | 247 pData->data.sKey.UTF8Decode().c_str(), |
| 251 pData->data.dData); | 248 pData->data.dData); |
| 252 break; | 249 break; |
| 253 case JS_GLOBALDATA_TYPE_BOOLEAN: | 250 case JS_GLOBALDATA_TYPE_BOOLEAN: |
| 254 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0, | 251 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0, |
| 255 (bool)(pData->data.bData == 1), "", | 252 (bool)(pData->data.bData == 1), "", |
| 256 v8::Local<v8::Object>(), pData->bPersistent == 1); | 253 v8::Local<v8::Object>(), pData->bPersistent == 1); |
| 257 JS_PutObjectBoolean(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 254 FXJS_PutObjectBoolean(NULL, (v8::Local<v8::Object>)(*m_pJSObject), |
| 258 pData->data.sKey.UTF8Decode().c_str(), | 255 pData->data.sKey.UTF8Decode().c_str(), |
| 259 (bool)(pData->data.bData == 1)); | 256 (bool)(pData->data.bData == 1)); |
| 260 break; | 257 break; |
| 261 case JS_GLOBALDATA_TYPE_STRING: | 258 case JS_GLOBALDATA_TYPE_STRING: |
| 262 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0, | 259 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0, |
| 263 false, pData->data.sData, v8::Local<v8::Object>(), | 260 false, pData->data.sData, v8::Local<v8::Object>(), |
| 264 pData->bPersistent == 1); | 261 pData->bPersistent == 1); |
| 265 JS_PutObjectString(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 262 FXJS_PutObjectString(NULL, (v8::Local<v8::Object>)(*m_pJSObject), |
| 266 pData->data.sKey.UTF8Decode().c_str(), | 263 pData->data.sKey.UTF8Decode().c_str(), |
| 267 pData->data.sData.UTF8Decode().c_str()); | 264 pData->data.sData.UTF8Decode().c_str()); |
| 268 break; | 265 break; |
| 269 case JS_GLOBALDATA_TYPE_OBJECT: { | 266 case JS_GLOBALDATA_TYPE_OBJECT: { |
| 270 v8::Isolate* pRuntime = | 267 v8::Isolate* pRuntime = |
| 271 JS_GetRuntime((v8::Local<v8::Object>)(*m_pJSObject)); | 268 FXJS_GetRuntime((v8::Local<v8::Object>)(*m_pJSObject)); |
| 272 v8::Local<v8::Object> pObj = JS_NewFxDynamicObj(pRuntime, NULL, -1); | 269 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(pRuntime, NULL, -1); |
| 273 | 270 |
| 274 PutObjectProperty(pObj, &pData->data); | 271 PutObjectProperty(pObj, &pData->data); |
| 275 | 272 |
| 276 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_OBJECT, 0, | 273 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_OBJECT, 0, |
| 277 false, "", (v8::Local<v8::Object>)pObj, | 274 false, "", (v8::Local<v8::Object>)pObj, |
| 278 pData->bPersistent == 1); | 275 pData->bPersistent == 1); |
| 279 JS_PutObjectObject(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 276 FXJS_PutObjectObject(NULL, (v8::Local<v8::Object>)(*m_pJSObject), |
| 280 pData->data.sKey.UTF8Decode().c_str(), | 277 pData->data.sKey.UTF8Decode().c_str(), |
| 281 (v8::Local<v8::Object>)pObj); | 278 (v8::Local<v8::Object>)pObj); |
| 282 } break; | 279 } break; |
| 283 case JS_GLOBALDATA_TYPE_NULL: | 280 case JS_GLOBALDATA_TYPE_NULL: |
| 284 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, | 281 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, |
| 285 "", v8::Local<v8::Object>(), | 282 "", v8::Local<v8::Object>(), |
| 286 pData->bPersistent == 1); | 283 pData->bPersistent == 1); |
| 287 JS_PutObjectNull(NULL, (v8::Local<v8::Object>)(*m_pJSObject), | 284 FXJS_PutObjectNull(NULL, (v8::Local<v8::Object>)(*m_pJSObject), |
| 288 pData->data.sKey.UTF8Decode().c_str()); | 285 pData->data.sKey.UTF8Decode().c_str()); |
| 289 break; | 286 break; |
| 290 } | 287 } |
| 291 } | 288 } |
| 292 } | 289 } |
| 293 | 290 |
| 294 void JSGlobalAlternate::CommitGlobalPersisitentVariables() { | 291 void JSGlobalAlternate::CommitGlobalPersisitentVariables() { |
| 295 ASSERT(m_pGlobalData); | 292 ASSERT(m_pGlobalData); |
| 296 for (auto it = m_mapGlobal.begin(); it != m_mapGlobal.end(); ++it) { | 293 for (auto it = m_mapGlobal.begin(); it != m_mapGlobal.end(); ++it) { |
| 297 CFX_ByteString name = it->first; | 294 CFX_ByteString name = it->first; |
| 298 JSGlobalData* pData = it->second; | 295 JSGlobalData* pData = it->second; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 break; | 327 break; |
| 331 } | 328 } |
| 332 } | 329 } |
| 333 } | 330 } |
| 334 } | 331 } |
| 335 | 332 |
| 336 void JSGlobalAlternate::ObjectToArray(v8::Local<v8::Object> pObj, | 333 void JSGlobalAlternate::ObjectToArray(v8::Local<v8::Object> pObj, |
| 337 CJS_GlobalVariableArray& array) { | 334 CJS_GlobalVariableArray& array) { |
| 338 v8::Local<v8::Context> context = pObj->CreationContext(); | 335 v8::Local<v8::Context> context = pObj->CreationContext(); |
| 339 v8::Isolate* isolate = context->GetIsolate(); | 336 v8::Isolate* isolate = context->GetIsolate(); |
| 340 v8::Local<v8::Array> pKeyList = JS_GetObjectElementNames(isolate, pObj); | 337 v8::Local<v8::Array> pKeyList = FXJS_GetObjectElementNames(isolate, pObj); |
| 341 int nObjElements = pKeyList->Length(); | 338 int nObjElements = pKeyList->Length(); |
| 342 | 339 |
| 343 for (int i = 0; i < nObjElements; i++) { | 340 for (int i = 0; i < nObjElements; i++) { |
| 344 CFX_WideString ws = | 341 CFX_WideString ws = |
| 345 JS_ToString(isolate, JS_GetArrayElement(isolate, pKeyList, i)); | 342 FXJS_ToString(isolate, FXJS_GetArrayElement(isolate, pKeyList, i)); |
| 346 CFX_ByteString sKey = ws.UTF8Encode(); | 343 CFX_ByteString sKey = ws.UTF8Encode(); |
| 347 | 344 |
| 348 v8::Local<v8::Value> v = JS_GetObjectElement(isolate, pObj, ws.c_str()); | 345 v8::Local<v8::Value> v = FXJS_GetObjectElement(isolate, pObj, ws.c_str()); |
| 349 FXJSVALUETYPE vt = GET_VALUE_TYPE(v); | 346 switch (GET_VALUE_TYPE(v)) { |
| 350 switch (vt) { | 347 case CJS_Value::VT_number: { |
| 351 case VT_number: { | |
| 352 CJS_KeyValue* pObjElement = new CJS_KeyValue; | 348 CJS_KeyValue* pObjElement = new CJS_KeyValue; |
| 353 pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER; | 349 pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER; |
| 354 pObjElement->sKey = sKey; | 350 pObjElement->sKey = sKey; |
| 355 pObjElement->dData = JS_ToNumber(isolate, v); | 351 pObjElement->dData = FXJS_ToNumber(isolate, v); |
| 356 array.Add(pObjElement); | 352 array.Add(pObjElement); |
| 357 } break; | 353 } break; |
| 358 case VT_boolean: { | 354 case CJS_Value::VT_boolean: { |
| 359 CJS_KeyValue* pObjElement = new CJS_KeyValue; | 355 CJS_KeyValue* pObjElement = new CJS_KeyValue; |
| 360 pObjElement->nType = JS_GLOBALDATA_TYPE_BOOLEAN; | 356 pObjElement->nType = JS_GLOBALDATA_TYPE_BOOLEAN; |
| 361 pObjElement->sKey = sKey; | 357 pObjElement->sKey = sKey; |
| 362 pObjElement->dData = JS_ToBoolean(isolate, v); | 358 pObjElement->dData = FXJS_ToBoolean(isolate, v); |
| 363 array.Add(pObjElement); | 359 array.Add(pObjElement); |
| 364 } break; | 360 } break; |
| 365 case VT_string: { | 361 case CJS_Value::VT_string: { |
| 366 CFX_ByteString sValue = | 362 CFX_ByteString sValue = |
| 367 CJS_Value(isolate, v, VT_string).ToCFXByteString(); | 363 CJS_Value(isolate, v, CJS_Value::VT_string).ToCFXByteString(); |
| 368 CJS_KeyValue* pObjElement = new CJS_KeyValue; | 364 CJS_KeyValue* pObjElement = new CJS_KeyValue; |
| 369 pObjElement->nType = JS_GLOBALDATA_TYPE_STRING; | 365 pObjElement->nType = JS_GLOBALDATA_TYPE_STRING; |
| 370 pObjElement->sKey = sKey; | 366 pObjElement->sKey = sKey; |
| 371 pObjElement->sData = sValue; | 367 pObjElement->sData = sValue; |
| 372 array.Add(pObjElement); | 368 array.Add(pObjElement); |
| 373 } break; | 369 } break; |
| 374 case VT_object: { | 370 case CJS_Value::VT_object: { |
| 375 CJS_KeyValue* pObjElement = new CJS_KeyValue; | 371 CJS_KeyValue* pObjElement = new CJS_KeyValue; |
| 376 pObjElement->nType = JS_GLOBALDATA_TYPE_OBJECT; | 372 pObjElement->nType = JS_GLOBALDATA_TYPE_OBJECT; |
| 377 pObjElement->sKey = sKey; | 373 pObjElement->sKey = sKey; |
| 378 ObjectToArray(JS_ToObject(isolate, v), pObjElement->objData); | 374 ObjectToArray(FXJS_ToObject(isolate, v), pObjElement->objData); |
| 379 array.Add(pObjElement); | 375 array.Add(pObjElement); |
| 380 } break; | 376 } break; |
| 381 case VT_null: { | 377 case CJS_Value::VT_null: { |
| 382 CJS_KeyValue* pObjElement = new CJS_KeyValue; | 378 CJS_KeyValue* pObjElement = new CJS_KeyValue; |
| 383 pObjElement->nType = JS_GLOBALDATA_TYPE_NULL; | 379 pObjElement->nType = JS_GLOBALDATA_TYPE_NULL; |
| 384 pObjElement->sKey = sKey; | 380 pObjElement->sKey = sKey; |
| 385 array.Add(pObjElement); | 381 array.Add(pObjElement); |
| 386 } break; | 382 } break; |
| 387 default: | 383 default: |
| 388 break; | 384 break; |
| 389 } | 385 } |
| 390 } | 386 } |
| 391 } | 387 } |
| 392 | 388 |
| 393 void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj, | 389 void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj, |
| 394 CJS_KeyValue* pData) { | 390 CJS_KeyValue* pData) { |
| 395 ASSERT(pData != NULL); | 391 ASSERT(pData != NULL); |
| 396 | 392 |
| 397 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { | 393 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { |
| 398 CJS_KeyValue* pObjData = pData->objData.GetAt(i); | 394 CJS_KeyValue* pObjData = pData->objData.GetAt(i); |
| 399 ASSERT(pObjData != NULL); | 395 ASSERT(pObjData != NULL); |
| 400 | 396 |
| 401 switch (pObjData->nType) { | 397 switch (pObjData->nType) { |
| 402 case JS_GLOBALDATA_TYPE_NUMBER: | 398 case JS_GLOBALDATA_TYPE_NUMBER: |
| 403 JS_PutObjectNumber(NULL, (v8::Local<v8::Object>)pObj, | 399 FXJS_PutObjectNumber(NULL, (v8::Local<v8::Object>)pObj, |
| 404 pObjData->sKey.UTF8Decode().c_str(), | 400 pObjData->sKey.UTF8Decode().c_str(), |
| 405 pObjData->dData); | 401 pObjData->dData); |
| 406 break; | 402 break; |
| 407 case JS_GLOBALDATA_TYPE_BOOLEAN: | 403 case JS_GLOBALDATA_TYPE_BOOLEAN: |
| 408 JS_PutObjectBoolean(NULL, (v8::Local<v8::Object>)pObj, | 404 FXJS_PutObjectBoolean(NULL, (v8::Local<v8::Object>)pObj, |
| 409 pObjData->sKey.UTF8Decode().c_str(), | 405 pObjData->sKey.UTF8Decode().c_str(), |
| 410 (bool)(pObjData->bData == 1)); | 406 (bool)(pObjData->bData == 1)); |
| 411 break; | 407 break; |
| 412 case JS_GLOBALDATA_TYPE_STRING: | 408 case JS_GLOBALDATA_TYPE_STRING: |
| 413 JS_PutObjectString(NULL, (v8::Local<v8::Object>)pObj, | 409 FXJS_PutObjectString(NULL, (v8::Local<v8::Object>)pObj, |
| 414 pObjData->sKey.UTF8Decode().c_str(), | 410 pObjData->sKey.UTF8Decode().c_str(), |
| 415 pObjData->sData.UTF8Decode().c_str()); | 411 pObjData->sData.UTF8Decode().c_str()); |
| 416 break; | 412 break; |
| 417 case JS_GLOBALDATA_TYPE_OBJECT: { | 413 case JS_GLOBALDATA_TYPE_OBJECT: { |
| 418 v8::Isolate* pRuntime = | 414 v8::Isolate* pRuntime = |
| 419 JS_GetRuntime((v8::Local<v8::Object>)(*m_pJSObject)); | 415 FXJS_GetRuntime((v8::Local<v8::Object>)(*m_pJSObject)); |
| 420 v8::Local<v8::Object> pNewObj = JS_NewFxDynamicObj(pRuntime, NULL, -1); | 416 v8::Local<v8::Object> pNewObj = |
| 417 FXJS_NewFxDynamicObj(pRuntime, NULL, -1); |
| 421 PutObjectProperty(pNewObj, pObjData); | 418 PutObjectProperty(pNewObj, pObjData); |
| 422 JS_PutObjectObject(NULL, (v8::Local<v8::Object>)pObj, | 419 FXJS_PutObjectObject(NULL, (v8::Local<v8::Object>)pObj, |
| 423 pObjData->sKey.UTF8Decode().c_str(), | 420 pObjData->sKey.UTF8Decode().c_str(), |
| 424 (v8::Local<v8::Object>)pNewObj); | 421 (v8::Local<v8::Object>)pNewObj); |
| 425 } break; | 422 } break; |
| 426 case JS_GLOBALDATA_TYPE_NULL: | 423 case JS_GLOBALDATA_TYPE_NULL: |
| 427 JS_PutObjectNull(NULL, (v8::Local<v8::Object>)pObj, | 424 FXJS_PutObjectNull(NULL, (v8::Local<v8::Object>)pObj, |
| 428 pObjData->sKey.UTF8Decode().c_str()); | 425 pObjData->sKey.UTF8Decode().c_str()); |
| 429 break; | 426 break; |
| 430 } | 427 } |
| 431 } | 428 } |
| 432 } | 429 } |
| 433 | 430 |
| 434 void JSGlobalAlternate::DestroyGlobalPersisitentVariables() { | 431 void JSGlobalAlternate::DestroyGlobalPersisitentVariables() { |
| 435 for (const auto& pair : m_mapGlobal) { | 432 for (const auto& pair : m_mapGlobal) { |
| 436 delete pair.second; | 433 delete pair.second; |
| 437 } | 434 } |
| 438 m_mapGlobal.clear(); | 435 m_mapGlobal.clear(); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 463 case JS_GLOBALDATA_TYPE_NUMBER: { | 460 case JS_GLOBALDATA_TYPE_NUMBER: { |
| 464 pTemp->dData = dData; | 461 pTemp->dData = dData; |
| 465 } break; | 462 } break; |
| 466 case JS_GLOBALDATA_TYPE_BOOLEAN: { | 463 case JS_GLOBALDATA_TYPE_BOOLEAN: { |
| 467 pTemp->bData = bData; | 464 pTemp->bData = bData; |
| 468 } break; | 465 } break; |
| 469 case JS_GLOBALDATA_TYPE_STRING: { | 466 case JS_GLOBALDATA_TYPE_STRING: { |
| 470 pTemp->sData = sData; | 467 pTemp->sData = sData; |
| 471 } break; | 468 } break; |
| 472 case JS_GLOBALDATA_TYPE_OBJECT: { | 469 case JS_GLOBALDATA_TYPE_OBJECT: { |
| 473 pTemp->pData.Reset(JS_GetRuntime(pData), pData); | 470 pTemp->pData.Reset(FXJS_GetRuntime(pData), pData); |
| 474 } break; | 471 } break; |
| 475 case JS_GLOBALDATA_TYPE_NULL: | 472 case JS_GLOBALDATA_TYPE_NULL: |
| 476 break; | 473 break; |
| 477 default: | 474 default: |
| 478 return FALSE; | 475 return FALSE; |
| 479 } | 476 } |
| 480 return TRUE; | 477 return TRUE; |
| 481 } | 478 } |
| 482 | 479 |
| 483 JSGlobalData* pNewData = NULL; | 480 JSGlobalData* pNewData = NULL; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 497 } break; | 494 } break; |
| 498 case JS_GLOBALDATA_TYPE_STRING: { | 495 case JS_GLOBALDATA_TYPE_STRING: { |
| 499 pNewData = new JSGlobalData; | 496 pNewData = new JSGlobalData; |
| 500 pNewData->nType = JS_GLOBALDATA_TYPE_STRING; | 497 pNewData->nType = JS_GLOBALDATA_TYPE_STRING; |
| 501 pNewData->sData = sData; | 498 pNewData->sData = sData; |
| 502 pNewData->bPersistent = bDefaultPersistent; | 499 pNewData->bPersistent = bDefaultPersistent; |
| 503 } break; | 500 } break; |
| 504 case JS_GLOBALDATA_TYPE_OBJECT: { | 501 case JS_GLOBALDATA_TYPE_OBJECT: { |
| 505 pNewData = new JSGlobalData; | 502 pNewData = new JSGlobalData; |
| 506 pNewData->nType = JS_GLOBALDATA_TYPE_OBJECT; | 503 pNewData->nType = JS_GLOBALDATA_TYPE_OBJECT; |
| 507 pNewData->pData.Reset(JS_GetRuntime(pData), pData); | 504 pNewData->pData.Reset(FXJS_GetRuntime(pData), pData); |
| 508 pNewData->bPersistent = bDefaultPersistent; | 505 pNewData->bPersistent = bDefaultPersistent; |
| 509 } break; | 506 } break; |
| 510 case JS_GLOBALDATA_TYPE_NULL: { | 507 case JS_GLOBALDATA_TYPE_NULL: { |
| 511 pNewData = new JSGlobalData; | 508 pNewData = new JSGlobalData; |
| 512 pNewData->nType = JS_GLOBALDATA_TYPE_NULL; | 509 pNewData->nType = JS_GLOBALDATA_TYPE_NULL; |
| 513 pNewData->bPersistent = bDefaultPersistent; | 510 pNewData->bPersistent = bDefaultPersistent; |
| 514 } break; | 511 } break; |
| 515 default: | 512 default: |
| 516 return FALSE; | 513 return FALSE; |
| 517 } | 514 } |
| 518 | 515 |
| 519 m_mapGlobal[propname] = pNewData; | 516 m_mapGlobal[propname] = pNewData; |
| 520 return TRUE; | 517 return TRUE; |
| 521 } | 518 } |
| 522 | 519 |
| 523 FXJSVALUETYPE GET_VALUE_TYPE(v8::Local<v8::Value> p) { | 520 CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p) { |
| 524 const unsigned int nHash = JS_CalcHash(JS_GetTypeof(p)); | 521 const unsigned int nHash = JS_CalcHash(FXJS_GetTypeof(p)); |
| 525 | 522 |
| 526 if (nHash == JSCONST_nUndefHash) | 523 if (nHash == JSCONST_nUndefHash) |
| 527 return VT_undefined; | 524 return CJS_Value::VT_undefined; |
| 528 if (nHash == JSCONST_nNullHash) | 525 if (nHash == JSCONST_nNullHash) |
| 529 return VT_null; | 526 return CJS_Value::VT_null; |
| 530 if (nHash == JSCONST_nStringHash) | 527 if (nHash == JSCONST_nStringHash) |
| 531 return VT_string; | 528 return CJS_Value::VT_string; |
| 532 if (nHash == JSCONST_nNumberHash) | 529 if (nHash == JSCONST_nNumberHash) |
| 533 return VT_number; | 530 return CJS_Value::VT_number; |
| 534 if (nHash == JSCONST_nBoolHash) | 531 if (nHash == JSCONST_nBoolHash) |
| 535 return VT_boolean; | 532 return CJS_Value::VT_boolean; |
| 536 if (nHash == JSCONST_nDateHash) | 533 if (nHash == JSCONST_nDateHash) |
| 537 return VT_date; | 534 return CJS_Value::VT_date; |
| 538 if (nHash == JSCONST_nObjectHash) | 535 if (nHash == JSCONST_nObjectHash) |
| 539 return VT_object; | 536 return CJS_Value::VT_object; |
| 540 if (nHash == JSCONST_nFXobjHash) | 537 if (nHash == JSCONST_nFXobjHash) |
| 541 return VT_fxobject; | 538 return CJS_Value::VT_fxobject; |
| 542 | 539 |
| 543 return VT_unknown; | 540 return CJS_Value::VT_unknown; |
| 544 } | 541 } |
| OLD | NEW |