| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fxfa/parser/xfa_object.h" | 7 #include "xfa/fxfa/parser/xfa_object.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); | 97 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); |
| 98 ASSERT(pAppProvider); | 98 ASSERT(pAppProvider); |
| 99 CFX_WideString wsFormat; | 99 CFX_WideString wsFormat; |
| 100 pAppProvider->LoadString(iStringID, wsFormat); | 100 pAppProvider->LoadString(iStringID, wsFormat); |
| 101 CFX_WideString wsMessage; | 101 CFX_WideString wsMessage; |
| 102 va_list arg_ptr; | 102 va_list arg_ptr; |
| 103 va_start(arg_ptr, iStringID); | 103 va_start(arg_ptr, iStringID); |
| 104 wsMessage.FormatV(wsFormat.c_str(), arg_ptr); | 104 wsMessage.FormatV(wsFormat.c_str(), arg_ptr); |
| 105 va_end(arg_ptr); | 105 va_end(arg_ptr); |
| 106 FXJSE_ThrowMessage( | 106 FXJSE_ThrowMessage( |
| 107 "", FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); | 107 FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); |
| 108 } | 108 } |
| 109 | 109 |
| 110 CXFA_Node::CXFA_Node(CXFA_Document* pDoc, | 110 CXFA_Node::CXFA_Node(CXFA_Document* pDoc, |
| 111 uint16_t ePacket, | 111 uint16_t ePacket, |
| 112 XFA_ELEMENT eElement) | 112 XFA_ELEMENT eElement) |
| 113 : CXFA_Object(pDoc, XFA_GetElementObjectType(eElement)), | 113 : CXFA_Object(pDoc, XFA_GetElementObjectType(eElement)), |
| 114 m_pNext(nullptr), | 114 m_pNext(nullptr), |
| 115 m_pChild(nullptr), | 115 m_pChild(nullptr), |
| 116 m_pLastChild(nullptr), | 116 m_pLastChild(nullptr), |
| 117 m_pParent(nullptr), | 117 m_pParent(nullptr), |
| (...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 738 XFA_ATTRIBUTE eAttribute) { | 738 XFA_ATTRIBUTE eAttribute) { |
| 739 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); | 739 CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); |
| 740 if (!pScriptContext) | 740 if (!pScriptContext) |
| 741 return; | 741 return; |
| 742 if (bSetting) { | 742 if (bSetting) { |
| 743 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); | 743 IXFA_AppProvider* pAppProvider = m_pDocument->GetNotify()->GetAppProvider(); |
| 744 ASSERT(pAppProvider); | 744 ASSERT(pAppProvider); |
| 745 CFX_WideString wsMessage; | 745 CFX_WideString wsMessage; |
| 746 pAppProvider->LoadString(XFA_IDS_Unable_TO_SET, wsMessage); | 746 pAppProvider->LoadString(XFA_IDS_Unable_TO_SET, wsMessage); |
| 747 FXJSE_ThrowMessage( | 747 FXJSE_ThrowMessage( |
| 748 "", | |
| 749 FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); | 748 FX_UTF8Encode(wsMessage.c_str(), wsMessage.GetLength()).AsStringC()); |
| 750 } else { | 749 } else { |
| 751 CXFA_AttachNodeList* pNodeList = new CXFA_AttachNodeList(m_pDocument, this); | 750 CXFA_AttachNodeList* pNodeList = new CXFA_AttachNodeList(m_pDocument, this); |
| 752 pValue->SetObject(pNodeList, pScriptContext->GetJseNormalClass()); | 751 pValue->SetObject(pNodeList, pScriptContext->GetJseNormalClass()); |
| 753 } | 752 } |
| 754 } | 753 } |
| 755 | 754 |
| 756 void CXFA_Node::Script_TreeClass_ClassAll(CFXJSE_Value* pValue, | 755 void CXFA_Node::Script_TreeClass_ClassAll(CFXJSE_Value* pValue, |
| 757 FX_BOOL bSetting, | 756 FX_BOOL bSetting, |
| 758 XFA_ATTRIBUTE eAttribute) { | 757 XFA_ATTRIBUTE eAttribute) { |
| (...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1613 return; | 1612 return; |
| 1614 } else if (classID == XFA_ELEMENT_Draw) { | 1613 } else if (classID == XFA_ELEMENT_Draw) { |
| 1615 Script_Draw_DefaultValue(pValue, bSetting, eAttribute); | 1614 Script_Draw_DefaultValue(pValue, bSetting, eAttribute); |
| 1616 return; | 1615 return; |
| 1617 } else if (classID == XFA_ELEMENT_Boolean) { | 1616 } else if (classID == XFA_ELEMENT_Boolean) { |
| 1618 Script_Boolean_Value(pValue, bSetting, eAttribute); | 1617 Script_Boolean_Value(pValue, bSetting, eAttribute); |
| 1619 return; | 1618 return; |
| 1620 } | 1619 } |
| 1621 if (bSetting) { | 1620 if (bSetting) { |
| 1622 CFX_ByteString newValue; | 1621 CFX_ByteString newValue; |
| 1623 if (!(FXJSE_Value_IsNull(pValue) || FXJSE_Value_IsUndefined(pValue))) | 1622 if (!(pValue && (pValue->IsNull() || pValue->IsUndefined()))) |
| 1624 pValue->ToString(newValue); | 1623 pValue->ToString(newValue); |
| 1625 | 1624 |
| 1626 CFX_WideString wsNewValue = CFX_WideString::FromUTF8(newValue.AsStringC()); | 1625 CFX_WideString wsNewValue = CFX_WideString::FromUTF8(newValue.AsStringC()); |
| 1627 CFX_WideString wsFormatValue(wsNewValue); | 1626 CFX_WideString wsFormatValue(wsNewValue); |
| 1628 CXFA_WidgetData* pContainerWidgetData = nullptr; | 1627 CXFA_WidgetData* pContainerWidgetData = nullptr; |
| 1629 if (GetPacketID() == XFA_XDPPACKET_Datasets) { | 1628 if (GetPacketID() == XFA_XDPPACKET_Datasets) { |
| 1630 CXFA_NodeArray formNodes; | 1629 CXFA_NodeArray formNodes; |
| 1631 GetBindItems(formNodes); | 1630 GetBindItems(formNodes); |
| 1632 CFX_WideString wsPicture; | 1631 CFX_WideString wsPicture; |
| 1633 for (int32_t i = 0; i < formNodes.GetSize(); i++) { | 1632 for (int32_t i = 0; i < formNodes.GetSize(); i++) { |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1681 } else { | 1680 } else { |
| 1682 pValue->SetString( | 1681 pValue->SetString( |
| 1683 FX_UTF8Encode(content.c_str(), content.GetLength()).AsStringC()); | 1682 FX_UTF8Encode(content.c_str(), content.GetLength()).AsStringC()); |
| 1684 } | 1683 } |
| 1685 } | 1684 } |
| 1686 void CXFA_Node::Script_Boolean_Value(CFXJSE_Value* pValue, | 1685 void CXFA_Node::Script_Boolean_Value(CFXJSE_Value* pValue, |
| 1687 FX_BOOL bSetting, | 1686 FX_BOOL bSetting, |
| 1688 XFA_ATTRIBUTE eAttribute) { | 1687 XFA_ATTRIBUTE eAttribute) { |
| 1689 if (bSetting) { | 1688 if (bSetting) { |
| 1690 CFX_ByteString newValue; | 1689 CFX_ByteString newValue; |
| 1691 if (!(FXJSE_Value_IsNull(pValue) || FXJSE_Value_IsUndefined(pValue))) | 1690 if (!(pValue && (pValue->IsNull() || pValue->IsUndefined()))) |
| 1692 pValue->ToString(newValue); | 1691 pValue->ToString(newValue); |
| 1693 | 1692 |
| 1694 int32_t iValue = FXSYS_atoi(newValue.c_str()); | 1693 int32_t iValue = FXSYS_atoi(newValue.c_str()); |
| 1695 CFX_WideString wsNewValue(iValue == 0 ? L"0" : L"1"); | 1694 CFX_WideString wsNewValue(iValue == 0 ? L"0" : L"1"); |
| 1696 CFX_WideString wsFormatValue(wsNewValue); | 1695 CFX_WideString wsFormatValue(wsNewValue); |
| 1697 CXFA_WidgetData* pContainerWidgetData = GetContainerWidgetData(); | 1696 CXFA_WidgetData* pContainerWidgetData = GetContainerWidgetData(); |
| 1698 if (pContainerWidgetData) { | 1697 if (pContainerWidgetData) { |
| 1699 pContainerWidgetData->GetFormatDataValue(wsNewValue, wsFormatValue); | 1698 pContainerWidgetData->GetFormatDataValue(wsNewValue, wsFormatValue); |
| 1700 } | 1699 } |
| 1701 SetScriptContent(wsNewValue, wsFormatValue, true, TRUE); | 1700 SetScriptContent(wsNewValue, wsFormatValue, true, TRUE); |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1889 pValue->SetNull(); | 1888 pValue->SetNull(); |
| 1890 } | 1889 } |
| 1891 } else { | 1890 } else { |
| 1892 ThrowException(XFA_IDS_INVAlID_PROP_SET); | 1891 ThrowException(XFA_IDS_INVAlID_PROP_SET); |
| 1893 } | 1892 } |
| 1894 } | 1893 } |
| 1895 void CXFA_Node::Script_Draw_DefaultValue(CFXJSE_Value* pValue, | 1894 void CXFA_Node::Script_Draw_DefaultValue(CFXJSE_Value* pValue, |
| 1896 FX_BOOL bSetting, | 1895 FX_BOOL bSetting, |
| 1897 XFA_ATTRIBUTE eAttribute) { | 1896 XFA_ATTRIBUTE eAttribute) { |
| 1898 if (bSetting) { | 1897 if (bSetting) { |
| 1899 if (FXJSE_Value_IsUTF8String(pValue)) { | 1898 if (pValue && pValue->IsString()) { |
| 1900 CXFA_WidgetData* pWidgetData = GetWidgetData(); | 1899 CXFA_WidgetData* pWidgetData = GetWidgetData(); |
| 1901 ASSERT(pWidgetData); | 1900 ASSERT(pWidgetData); |
| 1902 XFA_ELEMENT uiType = pWidgetData->GetUIType(); | 1901 XFA_ELEMENT uiType = pWidgetData->GetUIType(); |
| 1903 if (uiType == XFA_ELEMENT_Text) { | 1902 if (uiType == XFA_ELEMENT_Text) { |
| 1904 CFX_ByteString newValue; | 1903 CFX_ByteString newValue; |
| 1905 pValue->ToString(newValue); | 1904 pValue->ToString(newValue); |
| 1906 CFX_WideString wsNewValue = | 1905 CFX_WideString wsNewValue = |
| 1907 CFX_WideString::FromUTF8(newValue.AsStringC()); | 1906 CFX_WideString::FromUTF8(newValue.AsStringC()); |
| 1908 CFX_WideString wsFormatValue(wsNewValue); | 1907 CFX_WideString wsFormatValue(wsNewValue); |
| 1909 SetScriptContent(wsNewValue, wsFormatValue, true, TRUE); | 1908 SetScriptContent(wsNewValue, wsFormatValue, true, TRUE); |
| 1910 } else if (uiType != XFA_ELEMENT_Image) { | |
| 1911 } | 1909 } |
| 1912 } | 1910 } |
| 1913 } else { | 1911 } else { |
| 1914 CFX_WideString content = GetScriptContent(TRUE); | 1912 CFX_WideString content = GetScriptContent(TRUE); |
| 1915 if (content.IsEmpty()) { | 1913 if (content.IsEmpty()) { |
| 1916 pValue->SetNull(); | 1914 pValue->SetNull(); |
| 1917 } else { | 1915 } else { |
| 1918 pValue->SetString( | 1916 pValue->SetString( |
| 1919 FX_UTF8Encode(content.c_str(), content.GetLength()).AsStringC()); | 1917 FX_UTF8Encode(content.c_str(), content.GetLength()).AsStringC()); |
| 1920 } | 1918 } |
| 1921 } | 1919 } |
| 1922 } | 1920 } |
| 1923 void CXFA_Node::Script_Field_DefaultValue(CFXJSE_Value* pValue, | 1921 void CXFA_Node::Script_Field_DefaultValue(CFXJSE_Value* pValue, |
| 1924 FX_BOOL bSetting, | 1922 FX_BOOL bSetting, |
| 1925 XFA_ATTRIBUTE eAttribute) { | 1923 XFA_ATTRIBUTE eAttribute) { |
| 1926 CXFA_WidgetData* pWidgetData = GetWidgetData(); | 1924 CXFA_WidgetData* pWidgetData = GetWidgetData(); |
| 1927 if (!pWidgetData) { | 1925 if (!pWidgetData) { |
| 1928 return; | 1926 return; |
| 1929 } | 1927 } |
| 1930 if (bSetting) { | 1928 if (bSetting) { |
| 1931 if (FXJSE_Value_IsNull(pValue)) { | 1929 if (pValue && pValue->IsNull()) { |
| 1932 pWidgetData->m_bPreNull = pWidgetData->m_bIsNull; | 1930 pWidgetData->m_bPreNull = pWidgetData->m_bIsNull; |
| 1933 pWidgetData->m_bIsNull = TRUE; | 1931 pWidgetData->m_bIsNull = TRUE; |
| 1934 } else { | 1932 } else { |
| 1935 pWidgetData->m_bPreNull = pWidgetData->m_bIsNull; | 1933 pWidgetData->m_bPreNull = pWidgetData->m_bIsNull; |
| 1936 pWidgetData->m_bIsNull = FALSE; | 1934 pWidgetData->m_bIsNull = FALSE; |
| 1937 } | 1935 } |
| 1938 CFX_ByteString newValue; | 1936 CFX_ByteString newValue; |
| 1939 if (!(FXJSE_Value_IsNull(pValue) || FXJSE_Value_IsUndefined(pValue))) | 1937 if (!(pValue && (pValue->IsNull() || pValue->IsUndefined()))) |
| 1940 pValue->ToString(newValue); | 1938 pValue->ToString(newValue); |
| 1941 | 1939 |
| 1942 CFX_WideString wsNewText = CFX_WideString::FromUTF8(newValue.AsStringC()); | 1940 CFX_WideString wsNewText = CFX_WideString::FromUTF8(newValue.AsStringC()); |
| 1943 CXFA_Node* pUIChild = pWidgetData->GetUIChild(); | 1941 CXFA_Node* pUIChild = pWidgetData->GetUIChild(); |
| 1944 if (pUIChild->GetClassID() == XFA_ELEMENT_NumericEdit) { | 1942 if (pUIChild->GetClassID() == XFA_ELEMENT_NumericEdit) { |
| 1945 int32_t iLeadDigits = 0; | 1943 int32_t iLeadDigits = 0; |
| 1946 int32_t iFracDigits = 0; | 1944 int32_t iFracDigits = 0; |
| 1947 pWidgetData->GetLeadDigits(iLeadDigits); | 1945 pWidgetData->GetLeadDigits(iLeadDigits); |
| 1948 pWidgetData->GetFracDigits(iFracDigits); | 1946 pWidgetData->GetFracDigits(iFracDigits); |
| 1949 wsNewText = | 1947 wsNewText = |
| (...skipping 3330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5280 return m_pAttachNode->InsertChild(pNewNode, pBeforeNode); | 5278 return m_pAttachNode->InsertChild(pNewNode, pBeforeNode); |
| 5281 } | 5279 } |
| 5282 FX_BOOL CXFA_AttachNodeList::Remove(CXFA_Node* pNode) { | 5280 FX_BOOL CXFA_AttachNodeList::Remove(CXFA_Node* pNode) { |
| 5283 return m_pAttachNode->RemoveChild(pNode); | 5281 return m_pAttachNode->RemoveChild(pNode); |
| 5284 } | 5282 } |
| 5285 CXFA_Node* CXFA_AttachNodeList::Item(int32_t iIndex) { | 5283 CXFA_Node* CXFA_AttachNodeList::Item(int32_t iIndex) { |
| 5286 return m_pAttachNode->GetChild( | 5284 return m_pAttachNode->GetChild( |
| 5287 iIndex, XFA_ELEMENT_UNKNOWN, | 5285 iIndex, XFA_ELEMENT_UNKNOWN, |
| 5288 m_pAttachNode->GetClassID() == XFA_ELEMENT_Subform); | 5286 m_pAttachNode->GetClassID() == XFA_ELEMENT_Subform); |
| 5289 } | 5287 } |
| OLD | NEW |