summaryrefslogtreecommitdiff
path: root/xfa
diff options
context:
space:
mode:
Diffstat (limited to 'xfa')
-rw-r--r--xfa/fxfa/parser/cxfa_nodelist.cpp78
-rw-r--r--xfa/fxfa/parser/cxfa_nodelist.h3
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;