Chromium Code Reviews| Index: xfa/fxfa/parser/xfa_object_imp.cpp |
| diff --git a/xfa/fxfa/parser/xfa_object_imp.cpp b/xfa/fxfa/parser/xfa_object_imp.cpp |
| index d3d076d302ecbc8471523768fa34f54613b82b60..fe08c0e42bf8a9b18d1f6e757b426b0cfa5a722d 100644 |
| --- a/xfa/fxfa/parser/xfa_object_imp.cpp |
| +++ b/xfa/fxfa/parser/xfa_object_imp.cpp |
| @@ -1430,22 +1430,22 @@ void CXFA_Node::Script_Attribute_String(CFXJSE_Value* pValue, |
| FX_BOOL bSetting, |
| XFA_ATTRIBUTE eAttribute) { |
| if (bSetting) { |
| - CFX_ByteString szValue; |
| - pValue->ToString(szValue); |
| - CFX_WideString wsValue = CFX_WideString::FromUTF8(szValue.AsStringC()); |
| + CFX_WideString wsValue = pValue->ToWideString(); |
| SetAttribute(eAttribute, wsValue.AsStringC(), true); |
| if (eAttribute == XFA_ATTRIBUTE_Use && GetClassID() == XFA_ELEMENT_Desc) { |
| - CFX_WideString wsUseVal = wsValue, wsID, wsSOM; |
|
dsinclair
2016/06/09 16:30:38
This syntax is bonkers.
|
| CXFA_Node* pTemplateNode = |
| ToNode(m_pDocument->GetXFAObject(XFA_HASHCODE_Template)); |
| CXFA_Node* pProtoRoot = |
| pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Subform) |
| ->GetFirstChildByClass(XFA_ELEMENT_Proto); |
| - if (!wsUseVal.IsEmpty()) { |
| - if (wsUseVal[0] == '#') { |
| - wsID = CFX_WideString(wsUseVal.c_str() + 1, wsUseVal.GetLength() - 1); |
| + |
| + CFX_WideString wsID; |
| + CFX_WideString wsSOM; |
| + if (!wsValue.IsEmpty()) { |
| + if (wsValue[0] == '#') { |
| + wsID = CFX_WideString(wsValue.c_str() + 1, wsValue.GetLength() - 1); |
| } else { |
| - wsSOM = wsUseVal; |
| + wsSOM = wsValue; |
| } |
| } |
| CXFA_Node* pProtoNode = nullptr; |
| @@ -1541,20 +1541,15 @@ void CXFA_Node::Script_Som_Message(CFXJSE_Value* pValue, |
| bNew = TRUE; |
| } |
| if (bSetting) { |
| - CFX_ByteString bsMessage; |
| - pValue->ToString(bsMessage); |
| switch (iMessageType) { |
| case XFA_SOM_ValidationMessage: |
| - validate.SetScriptMessageText( |
| - CFX_WideString::FromUTF8(bsMessage.AsStringC())); |
| + validate.SetScriptMessageText(pValue->ToWideString()); |
| break; |
| case XFA_SOM_FormatMessage: |
| - validate.SetFormatMessageText( |
| - CFX_WideString::FromUTF8(bsMessage.AsStringC())); |
| + validate.SetFormatMessageText(pValue->ToWideString()); |
| break; |
| case XFA_SOM_MandatoryMessage: |
| - validate.SetNullMessageText( |
| - CFX_WideString::FromUTF8(bsMessage.AsStringC())); |
| + validate.SetNullMessageText(pValue->ToWideString()); |
| break; |
| default: |
| break; |
| @@ -1618,11 +1613,10 @@ void CXFA_Node::Script_Som_DefaultValue(CFXJSE_Value* pValue, |
| return; |
| } |
| if (bSetting) { |
| - CFX_ByteString newValue; |
| + CFX_WideString wsNewValue; |
| if (!(pValue && (pValue->IsNull() || pValue->IsUndefined()))) |
| - pValue->ToString(newValue); |
| + wsNewValue = pValue->ToWideString(); |
| - CFX_WideString wsNewValue = CFX_WideString::FromUTF8(newValue.AsStringC()); |
| CFX_WideString wsFormatValue(wsNewValue); |
| CXFA_WidgetData* pContainerWidgetData = nullptr; |
| if (GetPacketID() == XFA_XDPPACKET_Datasets) { |
| @@ -1688,7 +1682,7 @@ void CXFA_Node::Script_Boolean_Value(CFXJSE_Value* pValue, |
| if (bSetting) { |
| CFX_ByteString newValue; |
| if (!(pValue && (pValue->IsNull() || pValue->IsUndefined()))) |
| - pValue->ToString(newValue); |
| + newValue = pValue->ToString(); |
| int32_t iValue = FXSYS_atoi(newValue.c_str()); |
| CFX_WideString wsNewValue(iValue == 0 ? L"0" : L"1"); |
| @@ -1756,13 +1750,14 @@ const XFA_ExecEventParaInfo* GetEventParaInfoByName( |
| } while (iStart <= iEnd); |
| return nullptr; |
| } |
| -void XFA_STRING_TO_RGB(CFX_WideString& strRGB, |
| +void XFA_STRING_TO_RGB(const CFX_WideString& strRGB, |
| int32_t& r, |
| int32_t& g, |
| int32_t& b) { |
| r = 0; |
| g = 0; |
| b = 0; |
| + |
| FX_WCHAR zero = '0'; |
| int32_t iIndex = 0; |
| int32_t iLen = strRGB.GetLength(); |
| @@ -1799,13 +1794,11 @@ void CXFA_Node::Script_Som_BorderColor(CFXJSE_Value* pValue, |
| } |
| CXFA_Border border = pWidgetData->GetBorder(TRUE); |
| int32_t iSize = border.CountEdges(); |
| - CFX_WideString strColor; |
| if (bSetting) { |
| - CFX_ByteString bsValue; |
| - pValue->ToString(bsValue); |
| - strColor = CFX_WideString::FromUTF8(bsValue.AsStringC()); |
| - int32_t r = 0, g = 0, b = 0; |
| - XFA_STRING_TO_RGB(strColor, r, g, b); |
| + int32_t r = 0; |
| + int32_t g = 0; |
| + int32_t b = 0; |
| + XFA_STRING_TO_RGB(pValue->ToWideString(), r, g, b); |
| FX_ARGB rgb = ArgbEncode(100, r, g, b); |
| for (int32_t i = 0; i < iSize; ++i) { |
| CXFA_Edge edge = border.GetEdge(i); |
| @@ -1816,6 +1809,7 @@ void CXFA_Node::Script_Som_BorderColor(CFXJSE_Value* pValue, |
| FX_ARGB color = edge.GetColor(); |
| int32_t a, r, g, b; |
| ArgbDecode(color, a, r, g, b); |
| + CFX_WideString strColor; |
| strColor.Format(L"%d,%d,%d", r, g, b); |
| pValue->SetString(FX_UTF8Encode(strColor).AsStringC()); |
| } |
| @@ -1831,9 +1825,7 @@ void CXFA_Node::Script_Som_BorderWidth(CFXJSE_Value* pValue, |
| int32_t iSize = border.CountEdges(); |
| CFX_WideString wsThickness; |
| if (bSetting) { |
| - CFX_ByteString bsValue; |
| - pValue->ToString(bsValue); |
| - wsThickness = CFX_WideString::FromUTF8(bsValue.AsStringC()); |
| + wsThickness = pValue->ToWideString(); |
| for (int32_t i = 0; i < iSize; ++i) { |
| CXFA_Edge edge = border.GetEdge(i); |
| CXFA_Measurement thickness(wsThickness.AsStringC()); |
| @@ -1859,19 +1851,21 @@ void CXFA_Node::Script_Som_FillColor(CFXJSE_Value* pValue, |
| if (!pNode) { |
| return; |
| } |
| - CFX_WideString wsColor; |
| if (bSetting) { |
| - CFX_ByteString bsValue; |
| - pValue->ToString(bsValue); |
| - wsColor = CFX_WideString::FromUTF8(bsValue.AsStringC()); |
| - int32_t r, g, b; |
| - XFA_STRING_TO_RGB(wsColor, r, g, b); |
| + int32_t r; |
| + int32_t g; |
| + int32_t b; |
| + XFA_STRING_TO_RGB(pValue->ToWideString(), r, g, b); |
| FX_ARGB color = ArgbEncode(0xff, r, g, b); |
| borderfill.SetColor(color); |
| } else { |
| FX_ARGB color = borderfill.GetColor(); |
| - int32_t a, r, g, b; |
| + int32_t a; |
| + int32_t r; |
| + int32_t g; |
| + int32_t b; |
| ArgbDecode(color, a, r, g, b); |
| + CFX_WideString wsColor; |
| wsColor.Format(L"%d,%d,%d", r, g, b); |
| pValue->SetString(FX_UTF8Encode(wsColor).AsStringC()); |
| } |
| @@ -1900,10 +1894,7 @@ void CXFA_Node::Script_Draw_DefaultValue(CFXJSE_Value* pValue, |
| ASSERT(pWidgetData); |
| XFA_ELEMENT uiType = pWidgetData->GetUIType(); |
| if (uiType == XFA_ELEMENT_Text) { |
| - CFX_ByteString newValue; |
| - pValue->ToString(newValue); |
| - CFX_WideString wsNewValue = |
| - CFX_WideString::FromUTF8(newValue.AsStringC()); |
| + CFX_WideString wsNewValue = pValue->ToWideString(); |
| CFX_WideString wsFormatValue(wsNewValue); |
| SetScriptContent(wsNewValue, wsFormatValue, true, TRUE); |
| } |
| @@ -1933,11 +1924,10 @@ void CXFA_Node::Script_Field_DefaultValue(CFXJSE_Value* pValue, |
| pWidgetData->m_bPreNull = pWidgetData->m_bIsNull; |
| pWidgetData->m_bIsNull = FALSE; |
| } |
| - CFX_ByteString newValue; |
| + CFX_WideString wsNewText; |
| if (!(pValue && (pValue->IsNull() || pValue->IsUndefined()))) |
| - pValue->ToString(newValue); |
| + wsNewText = pValue->ToWideString(); |
| - CFX_WideString wsNewText = CFX_WideString::FromUTF8(newValue.AsStringC()); |
| CXFA_Node* pUIChild = pWidgetData->GetUIChild(); |
| if (pUIChild->GetClassID() == XFA_ELEMENT_NumericEdit) { |
| int32_t iLeadDigits = 0; |
| @@ -1992,13 +1982,10 @@ void CXFA_Node::Script_Field_EditValue(CFXJSE_Value* pValue, |
| if (!pWidgetData) { |
| return; |
| } |
| - CFX_WideString wsValue; |
| if (bSetting) { |
| - CFX_ByteString bsValue; |
| - pValue->ToString(bsValue); |
| - wsValue = CFX_WideString::FromUTF8(bsValue.AsStringC()); |
| - pWidgetData->SetValue(wsValue, XFA_VALUEPICTURE_Edit); |
| + pWidgetData->SetValue(pValue->ToWideString(), XFA_VALUEPICTURE_Edit); |
| } else { |
| + CFX_WideString wsValue; |
| pWidgetData->GetValue(wsValue, XFA_VALUEPICTURE_Edit); |
| pValue->SetString(FX_UTF8Encode(wsValue).AsStringC()); |
| } |
| @@ -2015,19 +2002,21 @@ void CXFA_Node::Script_Som_FontColor(CFXJSE_Value* pValue, |
| if (!pNode) { |
| return; |
| } |
| - CFX_WideString wsColor; |
| if (bSetting) { |
| - CFX_ByteString bsValue; |
| - pValue->ToString(bsValue); |
| - wsColor = CFX_WideString::FromUTF8(bsValue.AsStringC()); |
| - int32_t r, g, b; |
| - XFA_STRING_TO_RGB(wsColor, r, g, b); |
| + int32_t r; |
| + int32_t g; |
| + int32_t b; |
| + XFA_STRING_TO_RGB(pValue->ToWideString(), r, g, b); |
| FX_ARGB color = ArgbEncode(0xff, r, g, b); |
| font.SetColor(color); |
| } else { |
| FX_ARGB color = font.GetColor(); |
| - int32_t a, r, g, b; |
| + int32_t a; |
| + int32_t r; |
| + int32_t g; |
| + int32_t b; |
| ArgbDecode(color, a, r, g, b); |
| + CFX_WideString wsColor; |
| wsColor.Format(L"%d,%d,%d", r, g, b); |
| pValue->SetString(FX_UTF8Encode(wsColor).AsStringC()); |
| } |
| @@ -2044,13 +2033,10 @@ void CXFA_Node::Script_Field_FormattedValue(CFXJSE_Value* pValue, |
| if (!pWidgetData) { |
| return; |
| } |
| - CFX_WideString wsValue; |
| if (bSetting) { |
| - CFX_ByteString bsValue; |
| - pValue->ToString(bsValue); |
| - wsValue = CFX_WideString::FromUTF8(bsValue.AsStringC()); |
| - pWidgetData->SetValue(wsValue, XFA_VALUEPICTURE_Display); |
| + pWidgetData->SetValue(pValue->ToWideString(), XFA_VALUEPICTURE_Display); |
| } else { |
| + CFX_WideString wsValue; |
| pWidgetData->GetValue(wsValue, XFA_VALUEPICTURE_Display); |
| pValue->SetString(FX_UTF8Encode(wsValue).AsStringC()); |
| } |
| @@ -2063,19 +2049,15 @@ void CXFA_Node::Script_Som_Mandatory(CFXJSE_Value* pValue, |
| return; |
| } |
| CXFA_Validate validate = pWidgetData->GetValidate(TRUE); |
| - CFX_WideString wsValue; |
| if (bSetting) { |
| - CFX_ByteString bsValue; |
| - pValue->ToString(bsValue); |
| - wsValue = CFX_WideString::FromUTF8(bsValue.AsStringC()); |
| - validate.SetNullTest(wsValue); |
| + validate.SetNullTest(pValue->ToWideString()); |
| } else { |
| int32_t iValue = validate.GetNullTest(); |
| const XFA_ATTRIBUTEENUMINFO* pInfo = |
| XFA_GetAttributeEnumByID((XFA_ATTRIBUTEENUM)iValue); |
| - if (pInfo) { |
| + CFX_WideString wsValue; |
| + if (pInfo) |
| wsValue = pInfo->pName; |
| - } |
| pValue->SetString(FX_UTF8Encode(wsValue).AsStringC()); |
| } |
| } |
| @@ -2330,11 +2312,8 @@ void CXFA_Node::Script_ExclGroup_DefaultAndRawValue(CFXJSE_Value* pValue, |
| return; |
| } |
| if (bSetting) { |
| - CFX_ByteString bsValue; |
| - pValue->ToString(bsValue); |
| - pWidgetData->SetSelectedMemberByValue( |
| - CFX_WideString::FromUTF8(bsValue.AsStringC()).AsStringC(), true, TRUE, |
| - TRUE); |
| + pWidgetData->SetSelectedMemberByValue(pValue->ToWideString().AsStringC(), |
| + true, TRUE, TRUE); |
| } else { |
| CFX_WideString wsValue = GetScriptContent(TRUE); |
| XFA_VERSION curVersion = GetDocument()->GetCurVersionMode(); |
| @@ -2529,10 +2508,7 @@ void CXFA_Node::Script_Subform_Locale(CFXJSE_Value* pValue, |
| FX_BOOL bSetting, |
| XFA_ATTRIBUTE eAttribute) { |
| if (bSetting) { |
| - CFX_ByteString bsLocaleName; |
| - pValue->ToString(bsLocaleName); |
| - SetCData(XFA_ATTRIBUTE_Locale, |
| - CFX_WideString::FromUTF8(bsLocaleName.AsStringC()), true, TRUE); |
| + SetCData(XFA_ATTRIBUTE_Locale, pValue->ToWideString(), true, TRUE); |
| } else { |
| CFX_WideString wsLocaleName; |
| GetLocaleName(wsLocaleName); |
| @@ -3386,10 +3362,7 @@ void CXFA_Node::Script_Form_Checksum(CFXJSE_Value* pValue, |
| FX_BOOL bSetting, |
| XFA_ATTRIBUTE eAttribute) { |
| if (bSetting) { |
| - CFX_ByteString bsChecksum; |
| - pValue->ToString(bsChecksum); |
| - SetAttribute(XFA_ATTRIBUTE_Checksum, |
| - CFX_WideString::FromUTF8(bsChecksum.AsStringC()).AsStringC()); |
| + SetAttribute(XFA_ATTRIBUTE_Checksum, pValue->ToWideString().AsStringC()); |
| } else { |
| CFX_WideString wsChecksum; |
| GetAttribute(XFA_ATTRIBUTE_Checksum, wsChecksum, FALSE); |
| @@ -3452,13 +3425,10 @@ void CXFA_Node::Script_Packet_Content(CFXJSE_Value* pValue, |
| FX_BOOL bSetting, |
| XFA_ATTRIBUTE eAttribute) { |
| if (bSetting) { |
| - CFX_ByteString bsNewContent; |
| - pValue->ToString(bsNewContent); |
| CFDE_XMLNode* pXMLNode = GetXMLMappingNode(); |
| if (pXMLNode && pXMLNode->GetType() == FDE_XMLNODE_Element) { |
| CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLNode); |
| - pXMLElement->SetTextData( |
| - CFX_WideString::FromUTF8(bsNewContent.AsStringC())); |
| + pXMLElement->SetTextData(pValue->ToWideString()); |
| } |
| } else { |
| CFX_WideString wsTextData; |