From f7aa204aafe97505b98f38a7b52a74f5e2a59a8e Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Tue, 12 Dec 2017 18:24:09 +0000 Subject: Move Script_Attribute_String to CJX_Object The CJX_Node isn't the root of the CJX hierarchy. This causes issues now that CJX_Object has child objects which don't inherit from CJX_Node. This CL moves Script_Attribute_String from CJX_Node to CJX_Object. Change-Id: Icbf1cb3ea132e358fd53f00008c0b748ed4cc941 Reviewed-on: https://pdfium-review.googlesource.com/20950 Reviewed-by: Henrique Nakashima Commit-Queue: dsinclair --- fxjs/xfa/cjx_node.cpp | 67 --------------------------------------------------- 1 file changed, 67 deletions(-) (limited to 'fxjs/xfa/cjx_node.cpp') diff --git a/fxjs/xfa/cjx_node.cpp b/fxjs/xfa/cjx_node.cpp index d8a3b1c74f..7627a3f783 100644 --- a/fxjs/xfa/cjx_node.cpp +++ b/fxjs/xfa/cjx_node.cpp @@ -635,73 +635,6 @@ void CJX_Node::Script_Attribute_BOOLRead(CFXJSE_Value* pValue, pValue->SetString(GetBoolean(eAttribute) ? "1" : "0"); } -void CJX_Node::Script_Attribute_String(CFXJSE_Value* pValue, - bool bSetting, - XFA_Attribute eAttribute) { - if (!bSetting) { - pValue->SetString(GetAttribute(eAttribute).UTF8Encode().AsStringView()); - return; - } - - WideString wsValue = pValue->ToWideString(); - SetAttribute(eAttribute, wsValue.AsStringView(), true); - if (eAttribute != XFA_Attribute::Use || - GetXFANode()->GetElementType() != XFA_Element::Desc) { - return; - } - - CXFA_Node* pTemplateNode = - ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Template)); - CXFA_Node* pProtoRoot = - pTemplateNode->GetFirstChildByClass(XFA_Element::Subform) - ->GetFirstChildByClass(XFA_Element::Proto); - - WideString wsID; - WideString wsSOM; - if (!wsValue.IsEmpty()) { - if (wsValue[0] == '#') - wsID = WideString(wsValue.c_str() + 1, wsValue.GetLength() - 1); - else - wsSOM = wsValue; - } - - CXFA_Node* pProtoNode = nullptr; - if (!wsSOM.IsEmpty()) { - XFA_RESOLVENODE_RS resolveNodeRS; - bool iRet = GetDocument()->GetScriptContext()->ResolveObjects( - pProtoRoot, wsSOM.AsStringView(), &resolveNodeRS, - XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Attributes | - XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | - XFA_RESOLVENODE_Siblings, - nullptr); - if (iRet && resolveNodeRS.objects.front()->IsNode()) - pProtoNode = resolveNodeRS.objects.front()->AsNode(); - - } else if (!wsID.IsEmpty()) { - pProtoNode = GetDocument()->GetNodeByID(pProtoRoot, wsID.AsStringView()); - } - if (!pProtoNode) - return; - - CXFA_Node* pHeadChild = GetXFANode()->GetNodeItem(XFA_NODEITEM_FirstChild); - while (pHeadChild) { - CXFA_Node* pSibling = pHeadChild->GetNodeItem(XFA_NODEITEM_NextSibling); - GetXFANode()->RemoveChild(pHeadChild, true); - pHeadChild = pSibling; - } - - std::unique_ptr pProtoForm(pProtoNode->CloneTemplateToForm(true)); - pHeadChild = pProtoForm->GetNodeItem(XFA_NODEITEM_FirstChild); - while (pHeadChild) { - CXFA_Node* pSibling = pHeadChild->GetNodeItem(XFA_NODEITEM_NextSibling); - pProtoForm->RemoveChild(pHeadChild, true); - GetXFANode()->InsertChild(pHeadChild, nullptr); - pHeadChild = pSibling; - } - - GetDocument()->RemovePurgeNode(pProtoForm.get()); -} - void CJX_Node::Script_Attribute_StringRead(CFXJSE_Value* pValue, bool bSetting, XFA_Attribute eAttribute) { -- cgit v1.2.3