7#ifndef FXJS_XFA_CJX_OBJECT_H_
8#define FXJS_XFA_CJX_OBJECT_H_
14#include "core/fxcrt/widestring.h"
15#include "fxjs/gc/heap.h"
16#include "fxjs/xfa/fxjse.h"
17#include "fxjs/xfa/jse_define.h"
18#include "third_party/abseil-cpp/absl/types/optional.h"
19#include "third_party/base/containers/span.h"
20#include "v8/include/cppgc/garbage-collected.h"
21#include "v8/include/cppgc/member.h"
22#include "v8/include/v8-forward.h"
23#include "xfa/fxfa/fxfa_basic.h"
38 pdfium::span<v8::Local<v8::Value>> params);
92 void Trace(cppgc::Visitor* visitor)
const;
106 virtual void Trace(cppgc::Visitor* visitor)
const;
121 bool HasMethod(
const WideString& func)
const;
123 const WideString& func,
130 bool bUseDefault)
const;
132 const WideString& wsValue,
137 WideString
GetContent(
bool bScriptModify)
const;
140 const WideString& wsXMLValue,
145 template <
typename T>
147 return static_cast<T*>(GetPropertyInternal(index, eType));
149 template <
typename T>
151 return static_cast<T*>(GetOrCreatePropertyInternal(index, eType));
155 const WideString& wsXMLValue);
179 bool bUseDefault)
const;
184 bool bUseDefault)
const;
189 bool bUseDefault)
const;
199 bool bUseDefault)
const;
215 const WideString& method)
const;
217 const WideString& obj)
const;
229 v8::Local<v8::Value>* pValue,
233 const WideString& wsXMLValue,
237 const WideString& wsValue,
256 CFX_XMLElement* SetValue(
XFA_Attribute eAttr, int32_t value,
bool bNotify);
257 int32_t Subform_and_SubformSet_InstanceIndex();
261 void SetMapModuleValue(uint32_t key, int32_t value);
262 void SetMapModuleString(uint32_t key,
const WideString& wsValue);
264 absl::optional<int32_t> GetMapModuleValue(uint32_t key)
const;
265 absl::optional<WideString> GetMapModuleString(uint32_t key)
const;
266 absl::optional<CXFA_Measurement> GetMapModuleMeasurement(uint32_t key)
const;
267 absl::optional<int32_t> GetMapModuleValueFollowingChain(uint32_t key)
const;
268 absl::optional<WideString> GetMapModuleStringFollowingChain(
270 absl::optional<CXFA_Measurement> GetMapModuleMeasurementFollowingChain(
272 bool HasMapModuleKey(uint32_t key)
const;
273 void RemoveMapModuleKey(uint32_t key);
276 cppgc::Member<CXFA_Object> object_;
277 cppgc::Member<CXFA_LayoutItem> layout_item_;
278 cppgc::Member<CalcData> calc_data_;
279 std::unique_ptr<CFXJSE_MapModule> map_module_;
280 std::map<ByteString, CJX_MethodCall> method_specs_;
281 size_t calc_recursion_count_ = 0;
void FXJSE_ClearObjectBinding(v8::Local< v8::Object > hJSObject)
CFXJSE_HostObject * FXJSE_RetrieveObjectBinding(v8::Local< v8::Value > hValue)
void FXJSE_UpdateObjectBinding(v8::Local< v8::Object > hObject, CFXJSE_HostObject *pNewBinding)
static CFXJSE_Class * Create(CFXJSE_Context *pContext, const FXJSE_CLASS_DESCRIPTOR *pClassDescriptor, bool bIsJSGlobal)
v8::Local< v8::Object > GetGlobalObject()
v8::Local< v8::Context > GetContext()
ExecutionResult ExecuteScript(ByteStringView bsScript, v8::Local< v8::Object > pNewThisObject)
void AddClass(std::unique_ptr< CFXJSE_Class > pClass)
void EnableCompatibleMode()
CFXJSE_Class * GetClassByName(ByteStringView szName) const
friend class EventParamScope
CFXJSE_ScopeUtil_IsolateHandleContext(CFXJSE_Context *pContext)
void Trace(cppgc::Visitor *visitor) const
virtual void Trace(cppgc::Visitor *visitor) const
WideString GetAttributeByString(WideStringView attr) const
void RemoveAttribute(WideStringView wsAttr)
void ScriptSomMessage(v8::Isolate *pIsolate, v8::Local< v8::Value > *pValue, bool bSetting, SOMMessageType iMessageType)
size_t GetCalcRecursionCount() const
float GetMeasureInUnit(XFA_Attribute eAttr, XFA_Unit unit) const
void DefineMethods(pdfium::span< const CJX_MethodSpec > methods)
void SetCDataImpl(XFA_Attribute eAttr, const WideString &wsValue, bool bNotify, bool bScriptModify)
WideString GetContent(bool bScriptModify) const
bool HasMethod(const WideString &func) const
CJX_Object * AsCJXObject() override
CXFA_Object * GetXFAObject() const
absl::optional< CXFA_Measurement > TryMeasure(XFA_Attribute eAttr, bool bUseDefault) const
CJS_Result RunMethod(CFXJSE_Engine *pScriptContext, const WideString &func, pdfium::span< v8::Local< v8::Value > > params)
void ThrowArgumentMismatchException(v8::Isolate *pIsolate) const
void ThrowIndexOutOfBoundsException(v8::Isolate *pIsolate) const
void SetAttributeByEnum(XFA_Attribute eAttr, const WideString &wsValue, bool bNotify)
void ThrowInvalidPropertyException(v8::Isolate *pIsolate) const
CXFA_Document * GetDocument() const
void ThrowParamCountMismatchException(v8::Isolate *pIsolate, const WideString &method) const
void SetCData(XFA_Attribute eAttr, const WideString &wsValue)
void SetBoolean(XFA_Attribute eAttr, bool bValue, bool bNotify)
absl::optional< WideString > TryCData(XFA_Attribute eAttr, bool bUseDefault) const
T * GetProperty(int32_t index, XFA_Element eType) const
absl::optional< bool > TryBoolean(XFA_Attribute eAttr, bool bUseDefault) const
void SetInteger(XFA_Attribute eAttr, int32_t iValue, bool bNotify)
XFA_AttributeValue GetEnum(XFA_Attribute eAttr) const
void SetAttributeByString(WideStringView wsAttr, const WideString &wsValue)
bool GetBoolean(XFA_Attribute eAttr) const
virtual bool DynamicTypeIs(TypeTag eType) const
void MoveBufferMapData(CXFA_Object *pSrcObj, CXFA_Object *pDstObj)
void SetLayoutItem(CXFA_LayoutItem *item)
bool HasAttribute(XFA_Attribute eAttr) const
int32_t GetInteger(XFA_Attribute eAttr) const
WideString GetCData(XFA_Attribute eAttr) const
void TakeCalcDataFrom(CJX_Object *that)
void ThrowException(v8::Isolate *pIsolate, const WideString &str) const
absl::optional< XFA_AttributeValue > TryEnum(XFA_Attribute eAttr, bool bUseDefault) const
absl::optional< WideString > TryAttribute(XFA_Attribute eAttr, bool bUseDefault) const
CXFA_Node * GetXFANode() const
CXFA_LayoutItem * GetLayoutItem() const
void SetEnum(XFA_Attribute eAttr, XFA_AttributeValue eValue, bool bNotify)
void SetContent(const WideString &wsContent, const WideString &wsXMLValue, bool bNotify, bool bScriptModify, bool bSyncData)
absl::optional< int32_t > TryInteger(XFA_Attribute eAttr, bool bUseDefault) const
CXFA_Measurement GetMeasure(XFA_Attribute eAttr) const
void SetAttributeValue(const WideString &wsValue, const WideString &wsXMLValue)
void SetMeasure(XFA_Attribute eAttr, const CXFA_Measurement &mValue, bool bNotify)
absl::optional< WideString > TryContent(bool bScriptModify, bool bProto) const
absl::optional< float > TryMeasureAsFloat(XFA_Attribute attr) const
void MergeAllData(CXFA_Object *pDstObj)
CalcData * GetCalcData() const
void SetCalcRecursionCount(size_t count)
absl::optional< WideString > TryNamespace() const
WideString GetAttributeByEnum(XFA_Attribute attr) const
CalcData * GetOrCreateCalcData(cppgc::Heap *heap)
void SetAttributeValueImpl(const WideString &wsValue, const WideString &wsXMLValue, bool bNotify, bool bScriptModify)
CJX_Object(CXFA_Object *obj)
T * GetOrCreateProperty(int32_t index, XFA_Element eType)
void ThrowTooManyOccurrencesException(v8::Isolate *pIsolate, const WideString &obj) const
#define CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED
#define JSE_PROP(prop_name)
ExecutionResult & operator=(ExecutionResult &&that) noexcept
ExecutionResult(ExecutionResult &&that) noexcept
ExecutionResult(bool sts, std::unique_ptr< CFXJSE_Value > val)
CJX_MethodCall pMethodCall