diff options
Diffstat (limited to 'xfa')
-rw-r--r-- | xfa/fxfa/parser/cxfa_nodelist.cpp | 78 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_nodelist.h | 3 |
2 files changed, 11 insertions, 70 deletions
diff --git a/xfa/fxfa/parser/cxfa_nodelist.cpp b/xfa/fxfa/parser/cxfa_nodelist.cpp index 4c5e5435c2..31e3bf6764 100644 --- a/xfa/fxfa/parser/cxfa_nodelist.cpp +++ b/xfa/fxfa/parser/cxfa_nodelist.cpp @@ -10,6 +10,7 @@ #include "core/fxcrt/fx_extension.h" #include "fxjs/cfxjse_engine.h" +#include "fxjs/cjx_nodelist.h" #include "xfa/fxfa/parser/cxfa_document.h" #include "xfa/fxfa/parser/cxfa_node.h" @@ -18,7 +19,7 @@ CXFA_NodeList::CXFA_NodeList(CXFA_Document* pDocument) XFA_ObjectType::NodeList, XFA_Element::NodeList, WideStringView(L"nodeList"), - pdfium::MakeUnique<CJX_Object>(this)) { + pdfium::MakeUnique<CJX_NodeList>(this)) { m_pDocument->GetScriptContext()->AddToCacheList( std::unique_ptr<CXFA_NodeList>(this)); } @@ -37,91 +38,28 @@ CXFA_Node* CXFA_NodeList::NamedItem(const WideStringView& wsName) { } void CXFA_NodeList::Script_ListClass_Append(CFXJSE_Arguments* pArguments) { - int32_t argc = pArguments->GetLength(); - if (argc != 1) { - JSObject()->ThrowParamCountMismatchException(L"append"); - return; - } - - CXFA_Node* pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); - if (!pNode) { - JSObject()->ThrowArgumentMismatchException(); - return; - } - Append(pNode); + JSNodeList()->Script_ListClass_Append(pArguments); } void CXFA_NodeList::Script_ListClass_Insert(CFXJSE_Arguments* pArguments) { - int32_t argc = pArguments->GetLength(); - if (argc != 2) { - JSObject()->ThrowParamCountMismatchException(L"insert"); - return; - } - - CXFA_Node* pNewNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); - CXFA_Node* pBeforeNode = static_cast<CXFA_Node*>(pArguments->GetObject(1)); - if (!pNewNode) { - JSObject()->ThrowArgumentMismatchException(); - return; - } - Insert(pNewNode, pBeforeNode); + JSNodeList()->Script_ListClass_Insert(pArguments); } void CXFA_NodeList::Script_ListClass_Remove(CFXJSE_Arguments* pArguments) { - int32_t argc = pArguments->GetLength(); - if (argc != 1) { - JSObject()->ThrowParamCountMismatchException(L"remove"); - return; - } - - CXFA_Node* pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); - if (!pNode) { - JSObject()->ThrowArgumentMismatchException(); - return; - } - Remove(pNode); + JSNodeList()->Script_ListClass_Remove(pArguments); } void CXFA_NodeList::Script_ListClass_Item(CFXJSE_Arguments* pArguments) { - int32_t argc = pArguments->GetLength(); - if (argc != 1) { - JSObject()->ThrowParamCountMismatchException(L"item"); - return; - } - - int32_t iIndex = pArguments->GetInt32(0); - if (iIndex < 0 || iIndex >= GetLength()) { - JSObject()->ThrowIndexOutOfBoundsException(); - return; - } - pArguments->GetReturnValue()->Assign( - m_pDocument->GetScriptContext()->GetJSValueFromMap(Item(iIndex))); + JSNodeList()->Script_ListClass_Item(pArguments); } void CXFA_NodeList::Script_TreelistClass_NamedItem( CFXJSE_Arguments* pArguments) { - int32_t argc = pArguments->GetLength(); - if (argc != 1) { - JSObject()->ThrowParamCountMismatchException(L"namedItem"); - return; - } - - ByteString szName = pArguments->GetUTF8String(0); - CXFA_Node* pNode = - NamedItem(WideString::FromUTF8(szName.AsStringView()).AsStringView()); - if (!pNode) - return; - - pArguments->GetReturnValue()->Assign( - m_pDocument->GetScriptContext()->GetJSValueFromMap(pNode)); + JSNodeList()->Script_TreelistClass_NamedItem(pArguments); } void CXFA_NodeList::Script_ListClass_Length(CFXJSE_Value* pValue, bool bSetting, XFA_ATTRIBUTE eAttribute) { - if (bSetting) { - JSObject()->ThrowInvalidPropertyException(); - return; - } - pValue->SetInteger(GetLength()); + JSNodeList()->Script_ListClass_Length(pValue, bSetting, eAttribute); } diff --git a/xfa/fxfa/parser/cxfa_nodelist.h b/xfa/fxfa/parser/cxfa_nodelist.h index 2fccd5d7a5..ec2176e44d 100644 --- a/xfa/fxfa/parser/cxfa_nodelist.h +++ b/xfa/fxfa/parser/cxfa_nodelist.h @@ -7,6 +7,7 @@ #ifndef XFA_FXFA_PARSER_CXFA_NODELIST_H_ #define XFA_FXFA_PARSER_CXFA_NODELIST_H_ +#include "fxjs/cjx_nodelist.h" #include "xfa/fxfa/fxfa_basic.h" #include "xfa/fxfa/parser/cxfa_object.h" @@ -19,6 +20,8 @@ class CXFA_NodeList : public CXFA_Object { explicit CXFA_NodeList(CXFA_Document* pDocument); ~CXFA_NodeList() override; + CJX_NodeList* JSNodeList() { return static_cast<CJX_NodeList*>(JSObject()); } + CXFA_Node* NamedItem(const WideStringView& wsName); virtual int32_t GetLength() = 0; virtual bool Append(CXFA_Node* pNode) = 0; |