Index: fpdfsdk/javascript/global.cpp |
diff --git a/fpdfsdk/javascript/global.cpp b/fpdfsdk/javascript/global.cpp |
index 5ffc5594a67e76cf9c4cdaddc411a5ccc0151345..27c156e5276871cbd7478a6fa5ccb12b74e0c0dd 100644 |
--- a/fpdfsdk/javascript/global.cpp |
+++ b/fpdfsdk/javascript/global.cpp |
@@ -168,11 +168,11 @@ FX_BOOL JSGlobalAlternate::setPersistent(IJS_Context* cc, |
return FALSE; |
} |
- auto it = m_mapGlobal.find(params[0].ToCFXByteString(pRuntime->GetIsolate())); |
+ auto it = m_mapGlobal.find(params[0].ToCFXByteString(pRuntime)); |
if (it != m_mapGlobal.end()) { |
JSGlobalData* pData = it->second; |
if (!pData->bDeleted) { |
- pData->bPersistent = params[1].ToBool(pRuntime->GetIsolate()); |
+ pData->bPersistent = params[1].ToBool(pRuntime); |
return TRUE; |
} |
} |
@@ -182,6 +182,10 @@ FX_BOOL JSGlobalAlternate::setPersistent(IJS_Context* cc, |
} |
void JSGlobalAlternate::UpdateGlobalPersistentVariables() { |
+ CJS_Runtime* pRuntime = |
+ static_cast<CJS_Runtime*>(CFXJS_Engine::CurrentEngineFromIsolate( |
+ m_pJSObject->ToV8Object()->GetIsolate())); |
+ |
for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { |
CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); |
switch (pData->data.nType) { |
@@ -189,43 +193,41 @@ void JSGlobalAlternate::UpdateGlobalPersistentVariables() { |
SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::NUMBER, |
pData->data.dData, false, "", |
v8::Local<v8::Object>(), pData->bPersistent == 1); |
- FXJS_PutObjectNumber(nullptr, m_pJSObject->ToV8Object(), |
- pData->data.sKey.UTF8Decode(), pData->data.dData); |
+ pRuntime->PutObjectNumber(m_pJSObject->ToV8Object(), |
+ pData->data.sKey.UTF8Decode(), |
+ pData->data.dData); |
break; |
case JS_GlobalDataType::BOOLEAN: |
SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::BOOLEAN, 0, |
(bool)(pData->data.bData == 1), "", |
v8::Local<v8::Object>(), pData->bPersistent == 1); |
- FXJS_PutObjectBoolean(nullptr, m_pJSObject->ToV8Object(), |
- pData->data.sKey.UTF8Decode(), |
- (bool)(pData->data.bData == 1)); |
+ pRuntime->PutObjectBoolean(m_pJSObject->ToV8Object(), |
+ pData->data.sKey.UTF8Decode(), |
+ (bool)(pData->data.bData == 1)); |
break; |
case JS_GlobalDataType::STRING: |
SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::STRING, 0, |
false, pData->data.sData, v8::Local<v8::Object>(), |
pData->bPersistent == 1); |
- FXJS_PutObjectString(nullptr, m_pJSObject->ToV8Object(), |
- pData->data.sKey.UTF8Decode(), |
- pData->data.sData.UTF8Decode()); |
+ pRuntime->PutObjectString(m_pJSObject->ToV8Object(), |
+ pData->data.sKey.UTF8Decode(), |
+ pData->data.sData.UTF8Decode()); |
break; |
case JS_GlobalDataType::OBJECT: { |
- v8::Isolate* pRuntime = m_pJSObject->ToV8Object()->GetIsolate(); |
- v8::Local<v8::Object> pObj = |
- FXJS_NewFxDynamicObj(pRuntime, nullptr, -1); |
+ v8::Local<v8::Object> pObj = pRuntime->NewFxDynamicObj(-1); |
PutObjectProperty(pObj, &pData->data); |
- |
SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::OBJECT, 0, |
false, "", pObj, pData->bPersistent == 1); |
- FXJS_PutObjectObject(nullptr, m_pJSObject->ToV8Object(), |
- pData->data.sKey.UTF8Decode(), pObj); |
+ pRuntime->PutObjectObject(m_pJSObject->ToV8Object(), |
+ pData->data.sKey.UTF8Decode(), pObj); |
} break; |
case JS_GlobalDataType::NULLOBJ: |
SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::NULLOBJ, 0, |
false, "", v8::Local<v8::Object>(), |
pData->bPersistent == 1); |
- FXJS_PutObjectNull(nullptr, m_pJSObject->ToV8Object(), |
- pData->data.sKey.UTF8Decode()); |
+ pRuntime->PutObjectNull(m_pJSObject->ToV8Object(), |
+ pData->data.sKey.UTF8Decode()); |
break; |
} |
} |
@@ -271,31 +273,29 @@ void JSGlobalAlternate::CommitGlobalPersisitentVariables(IJS_Context* cc) { |
void JSGlobalAlternate::ObjectToArray(IJS_Context* cc, |
v8::Local<v8::Object> pObj, |
CJS_GlobalVariableArray& array) { |
- v8::Isolate* isolate = pObj->GetIsolate(); |
CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); |
- std::vector<CFX_WideString> pKeyList = |
- FXJS_GetObjectPropertyNames(isolate, pObj); |
+ std::vector<CFX_WideString> pKeyList = pRuntime->GetObjectPropertyNames(pObj); |
for (const auto& ws : pKeyList) { |
CFX_ByteString sKey = ws.UTF8Encode(); |
- v8::Local<v8::Value> v = FXJS_GetObjectProperty(isolate, pObj, ws); |
+ v8::Local<v8::Value> v = pRuntime->GetObjectProperty(pObj, ws); |
switch (CJS_Value::GetValueType(v)) { |
case CJS_Value::VT_number: { |
CJS_KeyValue* pObjElement = new CJS_KeyValue; |
pObjElement->nType = JS_GlobalDataType::NUMBER; |
pObjElement->sKey = sKey; |
- pObjElement->dData = FXJS_ToNumber(isolate, v); |
+ pObjElement->dData = pRuntime->ToNumber(v); |
array.Add(pObjElement); |
} break; |
case CJS_Value::VT_boolean: { |
CJS_KeyValue* pObjElement = new CJS_KeyValue; |
pObjElement->nType = JS_GlobalDataType::BOOLEAN; |
pObjElement->sKey = sKey; |
- pObjElement->dData = FXJS_ToBoolean(isolate, v); |
+ pObjElement->dData = pRuntime->ToBoolean(v); |
array.Add(pObjElement); |
} break; |
case CJS_Value::VT_string: { |
CFX_ByteString sValue = |
- CJS_Value(pRuntime, v).ToCFXByteString(pRuntime->GetIsolate()); |
+ CJS_Value(pRuntime, v).ToCFXByteString(pRuntime); |
CJS_KeyValue* pObjElement = new CJS_KeyValue; |
pObjElement->nType = JS_GlobalDataType::STRING; |
pObjElement->sKey = sKey; |
@@ -306,7 +306,7 @@ void JSGlobalAlternate::ObjectToArray(IJS_Context* cc, |
CJS_KeyValue* pObjElement = new CJS_KeyValue; |
pObjElement->nType = JS_GlobalDataType::OBJECT; |
pObjElement->sKey = sKey; |
- ObjectToArray(cc, FXJS_ToObject(isolate, v), pObjElement->objData); |
+ ObjectToArray(cc, pRuntime->ToObject(v), pObjElement->objData); |
array.Add(pObjElement); |
} break; |
case CJS_Value::VT_null: { |
@@ -323,31 +323,31 @@ void JSGlobalAlternate::ObjectToArray(IJS_Context* cc, |
void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj, |
CJS_KeyValue* pData) { |
+ CJS_Runtime* pRuntime = CJS_Runtime::CurrentRuntimeFromIsolate( |
+ m_pJSObject->ToV8Object()->GetIsolate()); |
+ |
for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { |
CJS_KeyValue* pObjData = pData->objData.GetAt(i); |
switch (pObjData->nType) { |
case JS_GlobalDataType::NUMBER: |
- FXJS_PutObjectNumber(nullptr, pObj, pObjData->sKey.UTF8Decode(), |
- pObjData->dData); |
+ pRuntime->PutObjectNumber(pObj, pObjData->sKey.UTF8Decode(), |
+ pObjData->dData); |
break; |
case JS_GlobalDataType::BOOLEAN: |
- FXJS_PutObjectBoolean(nullptr, pObj, pObjData->sKey.UTF8Decode(), |
- pObjData->bData == 1); |
+ pRuntime->PutObjectBoolean(pObj, pObjData->sKey.UTF8Decode(), |
+ pObjData->bData == 1); |
break; |
case JS_GlobalDataType::STRING: |
- FXJS_PutObjectString(nullptr, pObj, pObjData->sKey.UTF8Decode(), |
- pObjData->sData.UTF8Decode()); |
+ pRuntime->PutObjectString(pObj, pObjData->sKey.UTF8Decode(), |
+ pObjData->sData.UTF8Decode()); |
break; |
case JS_GlobalDataType::OBJECT: { |
- v8::Isolate* pRuntime = m_pJSObject->ToV8Object()->GetIsolate(); |
- v8::Local<v8::Object> pNewObj = |
- FXJS_NewFxDynamicObj(pRuntime, nullptr, -1); |
+ v8::Local<v8::Object> pNewObj = pRuntime->NewFxDynamicObj(-1); |
PutObjectProperty(pNewObj, pObjData); |
- FXJS_PutObjectObject(nullptr, pObj, pObjData->sKey.UTF8Decode(), |
- pNewObj); |
+ pRuntime->PutObjectObject(pObj, pObjData->sKey.UTF8Decode(), pNewObj); |
} break; |
case JS_GlobalDataType::NULLOBJ: |
- FXJS_PutObjectNull(nullptr, pObj, pObjData->sKey.UTF8Decode()); |
+ pRuntime->PutObjectNull(pObj, pObjData->sKey.UTF8Decode()); |
break; |
} |
} |