Convert CFXJSE_FormCalcContext static methods to anon functions Change-Id: I44e870832c40486e5e0f37f8dfe08860ee227e54 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/67230 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fxjs/xfa/cfxjse_class.cpp b/fxjs/xfa/cfxjse_class.cpp index f6caf07..2934a85 100644 --- a/fxjs/xfa/cfxjse_class.cpp +++ b/fxjs/xfa/cfxjse_class.cpp
@@ -124,7 +124,8 @@ info.GetReturnValue().Set(result.Return()); } -void DynPropGetterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, +void DynPropGetterAdapter(v8::Isolate* pIsolate, + const FXJSE_CLASS_DESCRIPTOR* lpClass, CFXJSE_Value* pObject, ByteStringView szPropName, CFXJSE_Value* pValue) { @@ -139,14 +140,12 @@ lpClass->dynPropGetter(pObject, szPropName, pValue); } else if (nPropType == FXJSE_ClassPropType_Method) { if (lpClass->dynMethodCall && pValue) { - v8::Isolate* pIsolate = pValue->GetIsolate(); v8::HandleScope hscope(pIsolate); v8::Local<v8::ObjectTemplate> hCallBackInfoTemplate = v8::ObjectTemplate::New(pIsolate); hCallBackInfoTemplate->SetInternalFieldCount(2); v8::Local<v8::Object> hCallBackInfo = - hCallBackInfoTemplate - ->NewInstance(pValue->GetIsolate()->GetCurrentContext()) + hCallBackInfoTemplate->NewInstance(pIsolate->GetCurrentContext()) .ToLocalChecked(); hCallBackInfo->SetAlignedPointerInInternalField( 0, const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClass)); @@ -156,7 +155,7 @@ v8::NewStringType::kNormal, szPropName.GetLength()) .ToLocalChecked()); pValue->ForceSetValue( - v8::Function::New(pValue->GetIsolate()->GetCurrentContext(), + v8::Function::New(pIsolate->GetCurrentContext(), DynPropGetterAdapter_MethodCallback, hCallBackInfo, 0, v8::ConstructorBehavior::kThrow) .ToLocalChecked()); @@ -226,8 +225,8 @@ auto lpThisValue = pdfium::MakeUnique<CFXJSE_Value>(info.GetIsolate()); lpThisValue->ForceSetValue(thisObject); auto lpNewValue = pdfium::MakeUnique<CFXJSE_Value>(info.GetIsolate()); - DynPropGetterAdapter(lpClass, lpThisValue.get(), szFxPropName, - lpNewValue.get()); + DynPropGetterAdapter(info.GetIsolate(), lpClass, lpThisValue.get(), + szFxPropName, lpNewValue.get()); info.GetReturnValue().Set(lpNewValue->DirectGetValue()); }
diff --git a/fxjs/xfa/cfxjse_formcalc_context.cpp b/fxjs/xfa/cfxjse_formcalc_context.cpp index de05071..604f679 100644 --- a/fxjs/xfa/cfxjse_formcalc_context.cpp +++ b/fxjs/xfa/cfxjse_formcalc_context.cpp
@@ -1326,6 +1326,26 @@ return ByteString(strBuf); } +void GetObjectDefaultValue(CFXJSE_Value* pValue, CFXJSE_Value* pDefaultValue) { + CXFA_Node* pNode = ToNode(CFXJSE_Engine::ToObject(pValue)); + if (!pNode) { + pDefaultValue->SetNull(); + return; + } + pNode->JSObject()->ScriptSomDefaultValue(pDefaultValue, false, + XFA_Attribute::Unknown); +} + +bool SetObjectDefaultValue(CFXJSE_Value* pValue, CFXJSE_Value* hNewValue) { + CXFA_Node* pNode = ToNode(CFXJSE_Engine::ToObject(pValue)); + if (!pNode) + return false; + + pNode->JSObject()->ScriptSomDefaultValue(hNewValue, true, + XFA_Attribute::Unknown); + return true; +} + } // namespace const FXJSE_CLASS_DESCRIPTOR kFormCalcFM2JSDescriptor = { @@ -5325,29 +5345,6 @@ } // static -void CFXJSE_FormCalcContext::GetObjectDefaultValue( - CFXJSE_Value* pValue, - CFXJSE_Value* pDefaultValue) { - CXFA_Node* pNode = ToNode(CFXJSE_Engine::ToObject(pValue)); - if (!pNode) { - pDefaultValue->SetNull(); - return; - } - pNode->JSObject()->ScriptSomDefaultValue(pDefaultValue, false, - XFA_Attribute::Unknown); -} - -// static -bool CFXJSE_FormCalcContext::SetObjectDefaultValue(CFXJSE_Value* pValue, - CFXJSE_Value* hNewValue) { - CXFA_Node* pNode = ToNode(CFXJSE_Engine::ToObject(pValue)); - if (!pNode) - return false; - - pNode->JSObject()->ScriptSomDefaultValue(hNewValue, true, - XFA_Attribute::Unknown); - return true; -} // static ByteString CFXJSE_FormCalcContext::GenerateSomExpression(ByteStringView bsName,
diff --git a/fxjs/xfa/cfxjse_formcalc_context.h b/fxjs/xfa/cfxjse_formcalc_context.h index cf1bc95..d0c1dce 100644 --- a/fxjs/xfa/cfxjse_formcalc_context.h +++ b/fxjs/xfa/cfxjse_formcalc_context.h
@@ -347,10 +347,6 @@ static std::vector<std::unique_ptr<CFXJSE_Value>> unfoldArgs( CFXJSE_Value* pThis, CFXJSE_Arguments& args); - static void GetObjectDefaultValue(CFXJSE_Value* pObjectValue, - CFXJSE_Value* pDefaultValue); - static bool SetObjectDefaultValue(CFXJSE_Value* pObjectValue, - CFXJSE_Value* pNewValue); static ByteString GenerateSomExpression(ByteStringView bsName, int32_t iIndexFlags, int32_t iIndexValue,
diff --git a/fxjs/xfa/cfxjse_value.h b/fxjs/xfa/cfxjse_value.h index 44cc58c..4733dbd 100644 --- a/fxjs/xfa/cfxjse_value.h +++ b/fxjs/xfa/cfxjse_value.h
@@ -65,7 +65,6 @@ CFXJSE_Value* lpPropValue); bool SetFunctionBind(CFXJSE_Value* lpOldFunction, CFXJSE_Value* lpNewThis); - v8::Isolate* GetIsolate() const { return m_pIsolate.Get(); } const v8::Global<v8::Value>& DirectGetValue() const { return m_hValue; } void ForceSetValue(v8::Local<v8::Value> hValue) { m_hValue.Reset(GetIsolate(), hValue); @@ -84,6 +83,8 @@ CFXJSE_Value(const CFXJSE_Value&) = delete; CFXJSE_Value& operator=(const CFXJSE_Value&) = delete; + v8::Isolate* GetIsolate() const { return m_pIsolate.Get(); } + UnownedPtr<v8::Isolate> const m_pIsolate; v8::Global<v8::Value> m_hValue; };