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 |