summaryrefslogtreecommitdiff
path: root/xfa/fxfa/fm2js
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa/fm2js')
-rw-r--r--xfa/fxfa/fm2js/xfa_fm2jscontext.cpp661
-rw-r--r--xfa/fxfa/fm2js/xfa_fm2jscontext.h95
2 files changed, 264 insertions, 492 deletions
diff --git a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
index 4ef819a46d..56a99157d3 100644
--- a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
+++ b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
@@ -509,6 +509,40 @@ bool IsWhitespace(char c) {
c == 0x0D;
}
+IFX_Locale* LocaleFromString(CXFA_Document* pDoc,
+ CXFA_LocaleMgr* pMgr,
+ const CFX_ByteStringC& szLocale) {
+ if (!szLocale.IsEmpty())
+ return pMgr->GetLocaleByName(CFX_WideString::FromUTF8(szLocale));
+
+ CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject());
+ ASSERT(pThisNode);
+ return CXFA_WidgetData(pThisNode).GetLocal();
+}
+
+CFX_WideString FormatFromString(IFX_Locale* pLocale,
+ const CFX_ByteStringC& szFormat) {
+ if (!szFormat.IsEmpty())
+ return CFX_WideString::FromUTF8(szFormat);
+
+ return pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Default);
+}
+
+FX_LOCALEDATETIMESUBCATEGORY SubCategoryFromInt(int32_t iStyle) {
+ switch (iStyle) {
+ case 1:
+ return FX_LOCALEDATETIMESUBCATEGORY_Short;
+ case 3:
+ return FX_LOCALEDATETIMESUBCATEGORY_Long;
+ case 4:
+ return FX_LOCALEDATETIMESUBCATEGORY_Full;
+ case 0:
+ case 2:
+ default:
+ return FX_LOCALEDATETIMESUBCATEGORY_Medium;
+ }
+}
+
} // namespace
// static
@@ -1035,9 +1069,7 @@ void CXFA_FM2JSContext::Date2Num(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString dateString;
- ValueToUTF8String(dateValue.get(), dateString);
-
+ CFX_ByteString dateString = ValueToUTF8String(dateValue.get());
CFX_ByteString formatString;
if (argc > 1) {
std::unique_ptr<CFXJSE_Value> formatValue = GetSimpleValue(pThis, args, 1);
@@ -1045,7 +1077,7 @@ void CXFA_FM2JSContext::Date2Num(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(formatValue.get(), formatString);
+ formatString = ValueToUTF8String(formatValue.get());
}
CFX_ByteString localString;
@@ -1055,16 +1087,12 @@ void CXFA_FM2JSContext::Date2Num(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(localValue.get(), localString);
- }
-
- CFX_ByteString szIsoDateString;
- if (!Local2IsoDate(pThis, dateString.AsStringC(), formatString.AsStringC(),
- localString.AsStringC(), szIsoDateString)) {
- args.GetReturnValue()->SetInteger(0);
- return;
+ localString = ValueToUTF8String(localValue.get());
}
+ CFX_ByteString szIsoDateString =
+ Local2IsoDate(pThis, dateString.AsStringC(), formatString.AsStringC(),
+ localString.AsStringC());
args.GetReturnValue()->SetInteger(
DateString2Num(szIsoDateString.AsStringC()));
}
@@ -1099,11 +1127,11 @@ void CXFA_FM2JSContext::DateFmt(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(argLocal.get(), szLocal);
+ szLocal = ValueToUTF8String(argLocal.get());
}
- CFX_ByteString formatStr;
- GetStandardDateFormat(pThis, iStyle, szLocal.AsStringC(), formatStr);
+ CFX_ByteString formatStr =
+ GetStandardDateFormat(pThis, iStyle, szLocal.AsStringC());
args.GetReturnValue()->SetString(formatStr.AsStringC());
}
@@ -1116,15 +1144,12 @@ void CXFA_FM2JSContext::IsoDate2Num(CFXJSE_Value* pThis,
->ThrowParamCountMismatchException(L"IsoDate2Num");
return;
}
-
std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
if (argOne->IsNull()) {
args.GetReturnValue()->SetNull();
return;
}
-
- CFX_ByteString szArgString;
- ValueToUTF8String(argOne.get(), szArgString);
+ CFX_ByteString szArgString = ValueToUTF8String(argOne.get());
args.GetReturnValue()->SetInteger(DateString2Num(szArgString.AsStringC()));
}
@@ -1146,9 +1171,7 @@ void CXFA_FM2JSContext::IsoTime2Num(CFXJSE_Value* pThis,
CXFA_Document* pDoc = pContext->GetDocument();
CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
-
- CFX_ByteString szArgString;
- ValueToUTF8String(argOne.get(), szArgString);
+ CFX_ByteString szArgString = ValueToUTF8String(argOne.get());
szArgString = szArgString.Mid(szArgString.Find('T', 0) + 1);
if (szArgString.IsEmpty()) {
args.GetReturnValue()->SetInteger(0);
@@ -1213,11 +1236,11 @@ void CXFA_FM2JSContext::LocalDateFmt(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(argLocal.get(), szLocal);
+ szLocal = ValueToUTF8String(argLocal.get());
}
- CFX_ByteString formatStr;
- GetLocalDateFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, false);
+ CFX_ByteString formatStr =
+ GetLocalDateFormat(pThis, iStyle, szLocal.AsStringC(), false);
args.GetReturnValue()->SetString(formatStr.AsStringC());
}
@@ -1251,11 +1274,11 @@ void CXFA_FM2JSContext::LocalTimeFmt(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(argLocal.get(), szLocal);
+ szLocal = ValueToUTF8String(argLocal.get());
}
- CFX_ByteString formatStr;
- GetLocalTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr, false);
+ CFX_ByteString formatStr =
+ GetLocalTimeFormat(pThis, iStyle, szLocal.AsStringC(), false);
args.GetReturnValue()->SetString(formatStr.AsStringC());
}
@@ -1287,7 +1310,7 @@ void CXFA_FM2JSContext::Num2Date(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(formatValue.get(), formatString);
+ formatString = ValueToUTF8String(formatValue.get());
}
CFX_ByteString localString;
@@ -1297,7 +1320,7 @@ void CXFA_FM2JSContext::Num2Date(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(localValue.get(), localString);
+ localString = ValueToUTF8String(localValue.get());
}
int32_t iYear = 1900;
@@ -1394,9 +1417,9 @@ void CXFA_FM2JSContext::Num2Date(CFXJSE_Value* pThis,
CFX_ByteString szIsoDateString;
szIsoDateString.Format("%d%02d%02d", iYear + i, iMonth, iDay);
- CFX_ByteString szLocalDateString;
- IsoDate2Local(pThis, szIsoDateString.AsStringC(), formatString.AsStringC(),
- localString.AsStringC(), szLocalDateString);
+ CFX_ByteString szLocalDateString =
+ IsoDate2Local(pThis, szIsoDateString.AsStringC(),
+ formatString.AsStringC(), localString.AsStringC());
args.GetReturnValue()->SetString(szLocalDateString.AsStringC());
}
@@ -1429,7 +1452,7 @@ void CXFA_FM2JSContext::Num2GMTime(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(formatValue.get(), formatString);
+ formatString = ValueToUTF8String(formatValue.get());
}
CFX_ByteString localString;
@@ -1439,12 +1462,11 @@ void CXFA_FM2JSContext::Num2GMTime(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(localValue.get(), localString);
+ localString = ValueToUTF8String(localValue.get());
}
- CFX_ByteString szGMTTimeString;
- Num2AllTime(pThis, iTime, formatString.AsStringC(), localString.AsStringC(),
- true, szGMTTimeString);
+ CFX_ByteString szGMTTimeString = Num2AllTime(
+ pThis, iTime, formatString.AsStringC(), localString.AsStringC(), true);
args.GetReturnValue()->SetString(szGMTTimeString.AsStringC());
}
@@ -1476,7 +1498,7 @@ void CXFA_FM2JSContext::Num2Time(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(formatValue.get(), formatString);
+ formatString = ValueToUTF8String(formatValue.get());
}
CFX_ByteString localString;
@@ -1486,12 +1508,12 @@ void CXFA_FM2JSContext::Num2Time(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(localValue.get(), localString);
+ localString = ValueToUTF8String(localValue.get());
}
- CFX_ByteString szLocalTimeString;
- Num2AllTime(pThis, (int32_t)fTime, formatString.AsStringC(),
- localString.AsStringC(), false, szLocalTimeString);
+ CFX_ByteString szLocalTimeString =
+ Num2AllTime(pThis, static_cast<int32_t>(fTime), formatString.AsStringC(),
+ localString.AsStringC(), false);
args.GetReturnValue()->SetString(szLocalTimeString.AsStringC());
}
@@ -1528,7 +1550,7 @@ void CXFA_FM2JSContext::Time2Num(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(timeValue.get(), timeString);
+ timeString = ValueToUTF8String(timeValue.get());
CFX_ByteString formatString;
if (argc > 1) {
@@ -1537,7 +1559,7 @@ void CXFA_FM2JSContext::Time2Num(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(formatValue.get(), formatString);
+ formatString = ValueToUTF8String(formatValue.get());
}
CFX_ByteString localString;
@@ -1547,7 +1569,7 @@ void CXFA_FM2JSContext::Time2Num(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(localValue.get(), localString);
+ localString = ValueToUTF8String(localValue.get());
}
CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument();
@@ -1627,11 +1649,11 @@ void CXFA_FM2JSContext::TimeFmt(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(argLocal.get(), szLocal);
+ szLocal = ValueToUTF8String(argLocal.get());
}
- CFX_ByteString formatStr;
- GetStandardTimeFormat(pThis, iStyle, szLocal.AsStringC(), formatStr);
+ CFX_ByteString formatStr =
+ GetStandardTimeFormat(pThis, iStyle, szLocal.AsStringC());
args.GetReturnValue()->SetString(formatStr.AsStringC());
}
@@ -1911,195 +1933,76 @@ bool CXFA_FM2JSContext::IsIsoDateTimeFormat(const char* pData,
}
// static
-bool CXFA_FM2JSContext::Local2IsoDate(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szDate,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strIsoDate) {
+CFX_ByteString CXFA_FM2JSContext::Local2IsoDate(
+ CFXJSE_Value* pThis,
+ const CFX_ByteStringC& szDate,
+ const CFX_ByteStringC& szFormat,
+ const CFX_ByteStringC& szLocale) {
CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument();
if (!pDoc)
- return false;
+ return CFX_ByteString();
CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
- IFX_Locale* pLocale = nullptr;
- if (szLocale.IsEmpty()) {
- CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject());
- ASSERT(pThisNode);
-
- CXFA_WidgetData widgetData(pThisNode);
- pLocale = widgetData.GetLocal();
- } else {
- pLocale = pMgr->GetLocaleByName(CFX_WideString::FromUTF8(szLocale));
- }
+ IFX_Locale* pLocale = LocaleFromString(pDoc, pMgr, szLocale);
if (!pLocale)
- return false;
+ return CFX_ByteString();
- CFX_WideString wsFormat;
- if (szFormat.IsEmpty())
- wsFormat = pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Default);
- else
- wsFormat = CFX_WideString::FromUTF8(szFormat);
+ CFX_WideString wsFormat = FormatFromString(pLocale, szFormat);
+ CFX_DateTime dt =
+ CXFA_LocaleValue(XFA_VT_DATE, CFX_WideString::FromUTF8(szDate), wsFormat,
+ pLocale, pMgr)
+ .GetDate();
- CXFA_LocaleValue widgetValue(XFA_VT_DATE, CFX_WideString::FromUTF8(szDate),
- wsFormat, pLocale, pMgr);
- CFX_DateTime dt = widgetValue.GetDate();
+ CFX_ByteString strIsoDate;
strIsoDate.Format("%4d-%02d-%02d", dt.GetYear(), dt.GetMonth(), dt.GetDay());
- return true;
-}
-
-// static
-bool CXFA_FM2JSContext::Local2IsoTime(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szTime,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strIsoTime) {
- CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument();
- if (!pDoc)
- return false;
-
- CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
- IFX_Locale* pLocale = nullptr;
- if (szLocale.IsEmpty()) {
- CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject());
- ASSERT(pThisNode);
-
- CXFA_WidgetData widgetData(pThisNode);
- pLocale = widgetData.GetLocal();
- } else {
- pLocale = pMgr->GetLocaleByName(CFX_WideString::FromUTF8(szLocale));
- }
- if (!pLocale)
- return false;
-
- CFX_WideString wsFormat;
- if (szFormat.IsEmpty())
- wsFormat = pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Default);
- else
- wsFormat = CFX_WideString::FromUTF8(szFormat);
-
- wsFormat = L"time{" + wsFormat + L"}";
- CXFA_LocaleValue widgetValue(XFA_VT_TIME, CFX_WideString::FromUTF8(szTime),
- wsFormat, pLocale, pMgr);
- CFX_DateTime utime = widgetValue.GetTime();
- strIsoTime.Format("%02d:%02d:%02d.%03d", utime.GetHour(), utime.GetMinute(),
- utime.GetSecond(), utime.GetMillisecond());
- return true;
-}
-
-// static
-bool CXFA_FM2JSContext::IsoDate2Local(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szDate,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strLocalDate) {
- CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument();
- if (!pDoc)
- return false;
-
- CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
- IFX_Locale* pLocale = nullptr;
- if (szLocale.IsEmpty()) {
- CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject());
- ASSERT(pThisNode);
- CXFA_WidgetData widgetData(pThisNode);
- pLocale = widgetData.GetLocal();
- } else {
- pLocale = pMgr->GetLocaleByName(CFX_WideString::FromUTF8(szLocale));
- }
- if (!pLocale)
- return false;
-
- CFX_WideString wsFormat;
- if (szFormat.IsEmpty())
- wsFormat = pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Default);
- else
- wsFormat = CFX_WideString::FromUTF8(szFormat);
-
- CXFA_LocaleValue widgetValue(XFA_VT_DATE, CFX_WideString::FromUTF8(szDate),
- pMgr);
- CFX_WideString wsRet;
- widgetValue.FormatPatterns(wsRet, wsFormat, pLocale,
- XFA_VALUEPICTURE_Display);
- strLocalDate = wsRet.UTF8Encode();
- return true;
+ return strIsoDate;
}
// static
-bool CXFA_FM2JSContext::IsoTime2Local(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szTime,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strLocalTime) {
+CFX_ByteString CXFA_FM2JSContext::IsoDate2Local(
+ CFXJSE_Value* pThis,
+ const CFX_ByteStringC& szDate,
+ const CFX_ByteStringC& szFormat,
+ const CFX_ByteStringC& szLocale) {
CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument();
if (!pDoc)
- return false;
+ return CFX_ByteString();
CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
- IFX_Locale* pLocale = nullptr;
- if (szLocale.IsEmpty()) {
- CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject());
- ASSERT(pThisNode);
- CXFA_WidgetData widgetData(pThisNode);
- pLocale = widgetData.GetLocal();
- } else {
- pLocale = pMgr->GetLocaleByName(CFX_WideString::FromUTF8(szLocale));
- }
+ IFX_Locale* pLocale = LocaleFromString(pDoc, pMgr, szLocale);
if (!pLocale)
- return false;
+ return CFX_ByteString();
- CFX_WideString wsFormat;
- if (szFormat.IsEmpty())
- wsFormat = pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Default);
- else
- wsFormat = CFX_WideString::FromUTF8(szFormat);
-
- wsFormat = L"time{" + wsFormat + L"}";
- CXFA_LocaleValue widgetValue(XFA_VT_TIME, CFX_WideString::FromUTF8(szTime),
- pMgr);
+ CFX_WideString wsFormat = FormatFromString(pLocale, szFormat);
CFX_WideString wsRet;
- widgetValue.FormatPatterns(wsRet, wsFormat, pLocale,
- XFA_VALUEPICTURE_Display);
- strLocalTime = wsRet.UTF8Encode();
- return true;
+ CXFA_LocaleValue(XFA_VT_DATE, CFX_WideString::FromUTF8(szDate), pMgr)
+ .FormatPatterns(wsRet, wsFormat, pLocale, XFA_VALUEPICTURE_Display);
+ return wsRet.UTF8Encode();
}
// static
-bool CXFA_FM2JSContext::GetGMTTime(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szTime,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strGMTTime) {
+CFX_ByteString CXFA_FM2JSContext::IsoTime2Local(
+ CFXJSE_Value* pThis,
+ const CFX_ByteStringC& szTime,
+ const CFX_ByteStringC& szFormat,
+ const CFX_ByteStringC& szLocale) {
CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument();
if (!pDoc)
- return false;
+ return CFX_ByteString();
CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
- IFX_Locale* pLocale = nullptr;
- if (szLocale.IsEmpty()) {
- CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject());
- ASSERT(pThisNode);
- CXFA_WidgetData widgetData(pThisNode);
- pLocale = widgetData.GetLocal();
- } else {
- pLocale = pMgr->GetLocaleByName(CFX_WideString::FromUTF8(szLocale));
- }
+ IFX_Locale* pLocale = LocaleFromString(pDoc, pMgr, szLocale);
if (!pLocale)
- return false;
-
- CFX_WideString wsFormat;
- if (szFormat.IsEmpty())
- wsFormat = pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Default);
- else
- wsFormat = CFX_WideString::FromUTF8(szFormat);
+ return CFX_ByteString();
- wsFormat = L"time{" + wsFormat + L"}";
+ CFX_WideString wsFormat = {
+ L"time{", FormatFromString(pLocale, szFormat).AsStringC(), L"}"};
CXFA_LocaleValue widgetValue(XFA_VT_TIME, CFX_WideString::FromUTF8(szTime),
pMgr);
CFX_WideString wsRet;
widgetValue.FormatPatterns(wsRet, wsFormat, pLocale,
XFA_VALUEPICTURE_Display);
- strGMTTime = wsRet.UTF8Encode();
- return true;
+ return wsRet.UTF8Encode();
}
// static
@@ -2160,126 +2063,73 @@ int32_t CXFA_FM2JSContext::DateString2Num(const CFX_ByteStringC& szDateString) {
}
// static
-void CXFA_FM2JSContext::GetLocalDateFormat(CFXJSE_Value* pThis,
- int32_t iStyle,
- const CFX_ByteStringC& szLocalStr,
- CFX_ByteString& strFormat,
- bool bStandard) {
- FX_LOCALEDATETIMESUBCATEGORY strStyle;
- switch (iStyle) {
- case 1:
- strStyle = FX_LOCALEDATETIMESUBCATEGORY_Short;
- break;
- case 3:
- strStyle = FX_LOCALEDATETIMESUBCATEGORY_Long;
- break;
- case 4:
- strStyle = FX_LOCALEDATETIMESUBCATEGORY_Full;
- break;
- case 0:
- case 2:
- default:
- strStyle = FX_LOCALEDATETIMESUBCATEGORY_Medium;
- break;
- }
+CFX_ByteString CXFA_FM2JSContext::GetLocalDateFormat(
+ CFXJSE_Value* pThis,
+ int32_t iStyle,
+ const CFX_ByteStringC& szLocale,
+ bool bStandard) {
CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument();
if (!pDoc)
- return;
+ return CFX_ByteString();
- IFX_Locale* pLocale = nullptr;
- if (szLocalStr.IsEmpty()) {
- CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject());
- ASSERT(pThisNode);
-
- CXFA_WidgetData widgetData(pThisNode);
- pLocale = widgetData.GetLocal();
- } else {
- pLocale = pDoc->GetLocalMgr()->GetLocaleByName(
- CFX_WideString::FromUTF8(szLocalStr));
- }
+ CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
+ IFX_Locale* pLocale = LocaleFromString(pDoc, pMgr, szLocale);
if (!pLocale)
- return;
+ return CFX_ByteString();
- CFX_WideString strRet = pLocale->GetDatePattern(strStyle);
+ CFX_WideString strRet = pLocale->GetDatePattern(SubCategoryFromInt(iStyle));
if (!bStandard) {
AlternateDateTimeSymbols(strRet, pLocale->GetDateTimeSymbols(),
g_sAltTable_Date);
}
- strFormat = strRet.UTF8Encode();
+ return strRet.UTF8Encode();
}
// static
-void CXFA_FM2JSContext::GetLocalTimeFormat(CFXJSE_Value* pThis,
- int32_t iStyle,
- const CFX_ByteStringC& szLocalStr,
- CFX_ByteString& strFormat,
- bool bStandard) {
- FX_LOCALEDATETIMESUBCATEGORY strStyle;
- switch (iStyle) {
- case 1:
- strStyle = FX_LOCALEDATETIMESUBCATEGORY_Short;
- break;
- case 3:
- strStyle = FX_LOCALEDATETIMESUBCATEGORY_Long;
- break;
- case 4:
- strStyle = FX_LOCALEDATETIMESUBCATEGORY_Full;
- break;
- case 0:
- case 2:
- default:
- strStyle = FX_LOCALEDATETIMESUBCATEGORY_Medium;
- break;
- }
+CFX_ByteString CXFA_FM2JSContext::GetLocalTimeFormat(
+ CFXJSE_Value* pThis,
+ int32_t iStyle,
+ const CFX_ByteStringC& szLocale,
+ bool bStandard) {
CXFA_Document* pDoc = ToJSContext(pThis, nullptr)->GetDocument();
if (!pDoc)
- return;
+ return CFX_ByteString();
- IFX_Locale* pLocale = nullptr;
- if (szLocalStr.IsEmpty()) {
- CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject());
- ASSERT(pThisNode);
-
- CXFA_WidgetData widgetData(pThisNode);
- pLocale = widgetData.GetLocal();
- } else {
- pLocale = pDoc->GetLocalMgr()->GetLocaleByName(
- CFX_WideString::FromUTF8(szLocalStr));
- }
+ CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
+ IFX_Locale* pLocale = LocaleFromString(pDoc, pMgr, szLocale);
if (!pLocale)
- return;
+ return CFX_ByteString();
- CFX_WideString strRet = pLocale->GetTimePattern(strStyle);
+ CFX_WideString strRet = pLocale->GetTimePattern(SubCategoryFromInt(iStyle));
if (!bStandard) {
AlternateDateTimeSymbols(strRet, pLocale->GetDateTimeSymbols(),
g_sAltTable_Time);
}
- strFormat = strRet.UTF8Encode();
+ return strRet.UTF8Encode();
}
// static
-void CXFA_FM2JSContext::GetStandardDateFormat(CFXJSE_Value* pThis,
- int32_t iStyle,
- const CFX_ByteStringC& szLocalStr,
- CFX_ByteString& strFormat) {
- GetLocalDateFormat(pThis, iStyle, szLocalStr, strFormat, true);
+CFX_ByteString CXFA_FM2JSContext::GetStandardDateFormat(
+ CFXJSE_Value* pThis,
+ int32_t iStyle,
+ const CFX_ByteStringC& szLocalStr) {
+ return GetLocalDateFormat(pThis, iStyle, szLocalStr, true);
}
// static
-void CXFA_FM2JSContext::GetStandardTimeFormat(CFXJSE_Value* pThis,
- int32_t iStyle,
- const CFX_ByteStringC& szLocalStr,
- CFX_ByteString& strFormat) {
- GetLocalTimeFormat(pThis, iStyle, szLocalStr, strFormat, true);
+CFX_ByteString CXFA_FM2JSContext::GetStandardTimeFormat(
+ CFXJSE_Value* pThis,
+ int32_t iStyle,
+ const CFX_ByteStringC& szLocalStr) {
+ return GetLocalTimeFormat(pThis, iStyle, szLocalStr, true);
}
// static
-void CXFA_FM2JSContext::Num2AllTime(CFXJSE_Value* pThis,
- int32_t iTime,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- bool bGM,
- CFX_ByteString& strTime) {
+CFX_ByteString CXFA_FM2JSContext::Num2AllTime(CFXJSE_Value* pThis,
+ int32_t iTime,
+ const CFX_ByteStringC& szFormat,
+ const CFX_ByteStringC& szLocale,
+ bool bGM) {
int32_t iHour = 0;
int32_t iMin = 0;
int32_t iSec = 0;
@@ -2297,18 +2147,9 @@ void CXFA_FM2JSContext::Num2AllTime(CFXJSE_Value* pThis,
iSec += iZoneSec;
}
- bool iRet = false;
CFX_ByteString strIsoTime;
strIsoTime.Format("%02d:%02d:%02d", iHour, iMin, iSec);
- if (bGM) {
- iRet =
- GetGMTTime(pThis, strIsoTime.AsStringC(), szFormat, szLocale, strTime);
- } else {
- iRet = IsoTime2Local(pThis, strIsoTime.AsStringC(), szFormat, szLocale,
- strTime);
- }
- if (!iRet)
- strTime = "";
+ return IsoTime2Local(pThis, strIsoTime.AsStringC(), szFormat, szLocale);
}
// static
@@ -2791,17 +2632,15 @@ void CXFA_FM2JSContext::Choose(CFXJSE_Value* pThis,
jsObjectValue->GetObjectProperty(
propertyValue->ToString().AsStringC(), newPropertyValue.get());
}
- CFX_ByteString bsChoosed;
- ValueToUTF8String(newPropertyValue.get(), bsChoosed);
- args.GetReturnValue()->SetString(bsChoosed.AsStringC());
+ CFX_ByteString bsChosen = ValueToUTF8String(newPropertyValue.get());
+ args.GetReturnValue()->SetString(bsChosen.AsStringC());
bFound = true;
}
} else {
iValueIndex++;
if (iValueIndex == iIndex) {
- CFX_ByteString bsChoosed;
- ValueToUTF8String(argIndexValue.get(), bsChoosed);
- args.GetReturnValue()->SetString(bsChoosed.AsStringC());
+ CFX_ByteString bsChosen = ValueToUTF8String(argIndexValue.get());
+ args.GetReturnValue()->SetString(bsChosen.AsStringC());
bFound = true;
}
}
@@ -2892,12 +2731,9 @@ void CXFA_FM2JSContext::Within(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString oneString;
- CFX_ByteString lowString;
- CFX_ByteString heightString;
- ValueToUTF8String(argOne.get(), oneString);
- ValueToUTF8String(argLow.get(), lowString);
- ValueToUTF8String(argHigh.get(), heightString);
+ CFX_ByteString oneString = ValueToUTF8String(argOne.get());
+ CFX_ByteString lowString = ValueToUTF8String(argLow.get());
+ CFX_ByteString heightString = ValueToUTF8String(argHigh.get());
args.GetReturnValue()->SetInteger(
(oneString.Compare(lowString.AsStringC()) >= 0) &&
(oneString.Compare(heightString.AsStringC()) <= 0));
@@ -2929,8 +2765,7 @@ void CXFA_FM2JSContext::Eval(CFXJSE_Value* pThis,
v8::Isolate* pIsolate = pContext->GetScriptRuntime();
std::unique_ptr<CFXJSE_Value> scriptValue = GetSimpleValue(pThis, args, 0);
- CFX_ByteString utf8ScriptString;
- ValueToUTF8String(scriptValue.get(), utf8ScriptString);
+ CFX_ByteString utf8ScriptString = ValueToUTF8String(scriptValue.get());
if (utf8ScriptString.IsEmpty()) {
args.GetReturnValue()->SetNull();
return;
@@ -3024,8 +2859,7 @@ void CXFA_FM2JSContext::UnitType(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString unitspanString;
- ValueToUTF8String(unitspanValue.get(), unitspanString);
+ CFX_ByteString unitspanString = ValueToUTF8String(unitspanValue.get());
if (unitspanString.IsEmpty()) {
args.GetReturnValue()->SetString("in");
return;
@@ -3137,8 +2971,7 @@ void CXFA_FM2JSContext::UnitValue(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString unitspanString;
- ValueToUTF8String(unitspanValue.get(), unitspanString);
+ CFX_ByteString unitspanString = ValueToUTF8String(unitspanValue.get());
const char* pData = unitspanString.c_str();
if (!pData) {
args.GetReturnValue()->SetInteger(0);
@@ -3176,8 +3009,7 @@ void CXFA_FM2JSContext::UnitValue(CFXJSE_Value* pThis,
CFX_ByteString strUnit;
if (argc > 1) {
std::unique_ptr<CFXJSE_Value> unitValue = GetSimpleValue(pThis, args, 1);
- CFX_ByteString unitTempString;
- ValueToUTF8String(unitValue.get(), unitTempString);
+ CFX_ByteString unitTempString = ValueToUTF8String(unitValue.get());
const char* pChar = unitTempString.c_str();
int32_t uVal = 0;
while (IsWhitespace(pChar[uVal]))
@@ -3281,15 +3113,13 @@ void CXFA_FM2JSContext::At(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString stringTwo;
- ValueToUTF8String(argTwo.get(), stringTwo);
+ CFX_ByteString stringTwo = ValueToUTF8String(argTwo.get());
if (stringTwo.IsEmpty()) {
args.GetReturnValue()->SetInteger(1);
return;
}
- CFX_ByteString stringOne;
- ValueToUTF8String(argOne.get(), stringOne);
+ CFX_ByteString stringOne = ValueToUTF8String(argOne.get());
FX_STRSIZE iPosition = stringOne.Find(stringTwo.AsStringC());
args.GetReturnValue()->SetInteger(iPosition + 1);
}
@@ -3312,10 +3142,7 @@ void CXFA_FM2JSContext::Concat(CFXJSE_Value* pThis,
continue;
bAllNull = false;
-
- CFX_ByteString valueStr;
- ValueToUTF8String(value.get(), valueStr);
- resultString += valueStr;
+ resultString += ValueToUTF8String(value.get());
}
if (bAllNull) {
@@ -3343,8 +3170,7 @@ void CXFA_FM2JSContext::Decode(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString toDecodeString;
- ValueToUTF8String(argOne.get(), toDecodeString);
+ CFX_ByteString toDecodeString = ValueToUTF8String(argOne.get());
CFX_ByteTextBuf resultBuf;
DecodeURL(toDecodeString.AsStringC(), resultBuf);
args.GetReturnValue()->SetString(resultBuf.AsStringC());
@@ -3358,12 +3184,8 @@ void CXFA_FM2JSContext::Decode(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString toDecodeString;
- ValueToUTF8String(argOne.get(), toDecodeString);
-
- CFX_ByteString identifyString;
- ValueToUTF8String(argTwo.get(), identifyString);
-
+ CFX_ByteString toDecodeString = ValueToUTF8String(argOne.get());
+ CFX_ByteString identifyString = ValueToUTF8String(argTwo.get());
CFX_ByteTextBuf resultBuf;
if (identifyString.EqualNoCase("html"))
DecodeHTML(toDecodeString.AsStringC(), resultBuf);
@@ -3610,8 +3432,7 @@ void CXFA_FM2JSContext::Encode(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString toEncodeString;
- ValueToUTF8String(argOne.get(), toEncodeString);
+ CFX_ByteString toEncodeString = ValueToUTF8String(argOne.get());
CFX_ByteTextBuf resultBuf;
EncodeURL(toEncodeString.AsStringC(), resultBuf);
args.GetReturnValue()->SetString(resultBuf.AsStringC());
@@ -3625,10 +3446,8 @@ void CXFA_FM2JSContext::Encode(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString toEncodeString;
- ValueToUTF8String(argOne.get(), toEncodeString);
- CFX_ByteString identifyString;
- ValueToUTF8String(argTwo.get(), identifyString);
+ CFX_ByteString toEncodeString = ValueToUTF8String(argOne.get());
+ CFX_ByteString identifyString = ValueToUTF8String(argTwo.get());
CFX_ByteTextBuf resultBuf;
if (identifyString.EqualNoCase("html"))
EncodeHTML(toEncodeString.AsStringC(), resultBuf);
@@ -3916,12 +3735,10 @@ void CXFA_FM2JSContext::Format(CFXJSE_Value* pThis,
}
std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- CFX_ByteString szPattern;
- ValueToUTF8String(argOne.get(), szPattern);
+ CFX_ByteString szPattern = ValueToUTF8String(argOne.get());
std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
- CFX_ByteString szValue;
- ValueToUTF8String(argTwo.get(), szValue);
+ CFX_ByteString szValue = ValueToUTF8String(argTwo.get());
CXFA_Document* pDoc = pContext->GetDocument();
CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
@@ -4000,8 +3817,7 @@ void CXFA_FM2JSContext::Left(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString sourceString;
- ValueToUTF8String(argOne.get(), sourceString);
+ CFX_ByteString sourceString = ValueToUTF8String(argOne.get());
int32_t count = std::max(0, ValueToInteger(pThis, argTwo.get()));
args.GetReturnValue()->SetString(sourceString.Left(count).AsStringC());
}
@@ -4021,8 +3837,7 @@ void CXFA_FM2JSContext::Len(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString sourceString;
- ValueToUTF8String(argOne.get(), sourceString);
+ CFX_ByteString sourceString = ValueToUTF8String(argOne.get());
args.GetReturnValue()->SetInteger(sourceString.GetLength());
}
@@ -4036,15 +3851,14 @@ void CXFA_FM2JSContext::Lower(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString argString;
std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
if (ValueIsNull(pThis, argOne.get())) {
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(argOne.get(), argString);
CFX_WideTextBuf lowStringBuf;
+ CFX_ByteString argString = ValueToUTF8String(argOne.get());
CFX_WideString wsArgString = CFX_WideString::FromUTF8(argString.AsStringC());
const wchar_t* pData = wsArgString.c_str();
int32_t i = 0;
@@ -4079,8 +3893,7 @@ void CXFA_FM2JSContext::Ltrim(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString sourceString;
- ValueToUTF8String(argOne.get(), sourceString);
+ CFX_ByteString sourceString = ValueToUTF8String(argOne.get());
sourceString.TrimLeft();
args.GetReturnValue()->SetString(sourceString.AsStringC());
}
@@ -4102,11 +3915,8 @@ void CXFA_FM2JSContext::Parse(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString szPattern;
- ValueToUTF8String(argOne.get(), szPattern);
- CFX_ByteString szValue;
- ValueToUTF8String(argTwo.get(), szValue);
-
+ CFX_ByteString szPattern = ValueToUTF8String(argOne.get());
+ CFX_ByteString szValue = ValueToUTF8String(argTwo.get());
CXFA_Document* pDoc = pContext->GetDocument();
CXFA_LocaleMgr* pMgr = pDoc->GetLocalMgr();
CXFA_Node* pThisNode = ToNode(pDoc->GetScriptContext()->GetThisObject());
@@ -4231,14 +4041,14 @@ void CXFA_FM2JSContext::Replace(CFXJSE_Value* pThis,
CFX_ByteString oneString;
CFX_ByteString twoString;
if (!ValueIsNull(pThis, argOne.get()) && !ValueIsNull(pThis, argTwo.get())) {
- ValueToUTF8String(argOne.get(), oneString);
- ValueToUTF8String(argTwo.get(), twoString);
+ oneString = ValueToUTF8String(argOne.get());
+ twoString = ValueToUTF8String(argTwo.get());
}
CFX_ByteString threeString;
if (argc > 2) {
std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
- ValueToUTF8String(argThree.get(), threeString);
+ threeString = ValueToUTF8String(argThree.get());
}
int32_t iFindLen = twoString.GetLength();
@@ -4292,8 +4102,7 @@ void CXFA_FM2JSContext::Right(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString sourceString;
- ValueToUTF8String(argOne.get(), sourceString);
+ CFX_ByteString sourceString = ValueToUTF8String(argOne.get());
int32_t count = std::max(0, ValueToInteger(pThis, argTwo.get()));
args.GetReturnValue()->SetString(sourceString.Right(count).AsStringC());
}
@@ -4313,8 +4122,7 @@ void CXFA_FM2JSContext::Rtrim(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString sourceString;
- ValueToUTF8String(argOne.get(), sourceString);
+ CFX_ByteString sourceString = ValueToUTF8String(argOne.get());
sourceString.TrimRight();
args.GetReturnValue()->SetString(sourceString.AsStringC());
}
@@ -4481,7 +4289,7 @@ void CXFA_FM2JSContext::Stuff(CFXJSE_Value* pThis,
std::unique_ptr<CFXJSE_Value> deleteValue = GetSimpleValue(pThis, args, 2);
if (!sourceValue->IsNull() && !startValue->IsNull() &&
!deleteValue->IsNull()) {
- ValueToUTF8String(sourceValue.get(), sourceString);
+ sourceString = ValueToUTF8String(sourceValue.get());
iLength = sourceString.GetLength();
iStart = pdfium::clamp(
static_cast<int32_t>(ValueToFloat(pThis, startValue.get())), 1,
@@ -4492,7 +4300,7 @@ void CXFA_FM2JSContext::Stuff(CFXJSE_Value* pThis,
if (argc > 3) {
std::unique_ptr<CFXJSE_Value> insertValue = GetSimpleValue(pThis, args, 3);
- ValueToUTF8String(insertValue.get(), insertString);
+ insertString = ValueToUTF8String(insertValue.get());
}
iStart -= 1;
@@ -4531,10 +4339,9 @@ void CXFA_FM2JSContext::Substr(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString szSourceStr;
int32_t iStart = 0;
int32_t iCount = 0;
- ValueToUTF8String(stringValue.get(), szSourceStr);
+ CFX_ByteString szSourceStr = ValueToUTF8String(stringValue.get());
int32_t iLength = szSourceStr.GetLength();
if (iLength == 0) {
args.GetReturnValue()->SetString("");
@@ -4588,10 +4395,8 @@ void CXFA_FM2JSContext::Upper(CFXJSE_Value* pThis,
return;
}
- CFX_ByteString argString;
- ValueToUTF8String(argOne.get(), argString);
-
CFX_WideTextBuf upperStringBuf;
+ CFX_ByteString argString = ValueToUTF8String(argOne.get());
CFX_WideString wsArgString = CFX_WideString::FromUTF8(argString.AsStringC());
const wchar_t* pData = wsArgString.c_str();
int32_t i = 0;
@@ -4647,7 +4452,7 @@ void CXFA_FM2JSContext::WordNum(CFXJSE_Value* pThis,
args.GetReturnValue()->SetNull();
return;
}
- ValueToUTF8String(localeValue.get(), localeString);
+ localeString = ValueToUTF8String(localeValue.get());
}
if (fNumber < 0.0f || fNumber > 922337203685477550.0f) {
@@ -4830,8 +4635,7 @@ void CXFA_FM2JSContext::Get(CFXJSE_Value* pThis,
return;
std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- CFX_ByteString urlString;
- ValueToUTF8String(argOne.get(), urlString);
+ CFX_ByteString urlString = ValueToUTF8String(argOne.get());
CFX_RetainPtr<IFX_SeekableReadStream> pFile = pAppProvider->DownloadURL(
CFX_WideString::FromUTF8(urlString.AsStringC()));
if (!pFile)
@@ -4862,30 +4666,28 @@ void CXFA_FM2JSContext::Post(CFXJSE_Value* pThis,
if (!pAppProvider)
return;
- CFX_ByteString bsURL;
std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- ValueToUTF8String(argOne.get(), bsURL);
+ CFX_ByteString bsURL = ValueToUTF8String(argOne.get());
- CFX_ByteString bsData;
std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
- ValueToUTF8String(argTwo.get(), bsData);
+ CFX_ByteString bsData = ValueToUTF8String(argTwo.get());
CFX_ByteString bsContentType;
if (argc > 2) {
std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
- ValueToUTF8String(argThree.get(), bsContentType);
+ bsContentType = ValueToUTF8String(argThree.get());
}
CFX_ByteString bsEncode;
if (argc > 3) {
std::unique_ptr<CFXJSE_Value> argFour = GetSimpleValue(pThis, args, 3);
- ValueToUTF8String(argFour.get(), bsEncode);
+ bsEncode = ValueToUTF8String(argFour.get());
}
CFX_ByteString bsHeader;
if (argc > 4) {
std::unique_ptr<CFXJSE_Value> argFive = GetSimpleValue(pThis, args, 4);
- ValueToUTF8String(argFive.get(), bsHeader);
+ bsHeader = ValueToUTF8String(argFive.get());
}
CFX_WideString decodedResponse;
@@ -4920,18 +4722,16 @@ void CXFA_FM2JSContext::Put(CFXJSE_Value* pThis,
if (!pAppProvider)
return;
- CFX_ByteString bsURL;
std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- ValueToUTF8String(argOne.get(), bsURL);
+ CFX_ByteString bsURL = ValueToUTF8String(argOne.get());
- CFX_ByteString bsData;
std::unique_ptr<CFXJSE_Value> argTwo = GetSimpleValue(pThis, args, 1);
- ValueToUTF8String(argTwo.get(), bsData);
+ CFX_ByteString bsData = ValueToUTF8String(argTwo.get());
CFX_ByteString bsEncode;
if (argc > 2) {
std::unique_ptr<CFXJSE_Value> argThree = GetSimpleValue(pThis, args, 2);
- ValueToUTF8String(argThree.get(), bsEncode);
+ bsEncode = ValueToUTF8String(argThree.get());
}
if (!pAppProvider->PutRequestURL(
@@ -5398,9 +5198,8 @@ void CXFA_FM2JSContext::dot_accessor(CFXJSE_Value* pThis,
}
CFX_ByteString szName = args.GetUTF8String(2);
- CFX_ByteString szSomExp;
- GenerateSomExpression(szName.AsStringC(), args.GetInt32(3), iIndexValue,
- bIsStar, szSomExp);
+ CFX_ByteString szSomExp = GenerateSomExpression(
+ szName.AsStringC(), args.GetInt32(3), iIndexValue, bIsStar);
std::unique_ptr<CFXJSE_Value> argAccessor = args.GetValue(0);
if (argAccessor->IsArray()) {
@@ -5516,10 +5315,9 @@ void CXFA_FM2JSContext::dotdot_accessor(CFXJSE_Value* pThis,
iIndexValue = ValueToInteger(pThis, args.GetValue(4).get());
}
- CFX_ByteString szSomExp;
CFX_ByteString szName = args.GetUTF8String(2);
- GenerateSomExpression(szName.AsStringC(), args.GetInt32(3), iIndexValue,
- bIsStar, szSomExp);
+ CFX_ByteString szSomExp = GenerateSomExpression(
+ szName.AsStringC(), args.GetInt32(3), iIndexValue, bIsStar);
std::unique_ptr<CFXJSE_Value> argAccessor = args.GetValue(0);
if (argAccessor->IsArray()) {
@@ -5627,8 +5425,7 @@ void CXFA_FM2JSContext::eval_translation(CFXJSE_Value* pThis,
}
std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, args, 0);
- CFX_ByteString argString;
- ValueToUTF8String(argOne.get(), argString);
+ CFX_ByteString argString = ValueToUTF8String(argOne.get());
if (argString.IsEmpty()) {
pContext->ThrowArgumentMismatchException();
return;
@@ -5926,18 +5723,17 @@ bool CXFA_FM2JSContext::simpleValueCompare(CFXJSE_Value* pThis,
return false;
if (firstValue->IsString()) {
- CFX_ByteString firstString, secondString;
- ValueToUTF8String(firstValue, firstString);
- ValueToUTF8String(secondValue, secondString);
+ CFX_ByteString firstString = ValueToUTF8String(firstValue);
+ CFX_ByteString secondString = ValueToUTF8String(secondValue);
return firstString == secondString;
}
if (firstValue->IsNumber()) {
float first = ValueToFloat(pThis, firstValue);
float second = ValueToFloat(pThis, secondValue);
- return (first == second);
+ return first == second;
}
if (firstValue->IsBoolean())
- return (firstValue->ToBoolean() == secondValue->ToBoolean());
+ return firstValue->ToBoolean() == secondValue->ToBoolean();
return firstValue->IsNull() && secondValue && secondValue->IsNull();
}
@@ -6030,24 +5826,23 @@ bool CXFA_FM2JSContext::SetObjectDefaultValue(CFXJSE_Value* pValue,
}
// static
-void CXFA_FM2JSContext::GenerateSomExpression(const CFX_ByteStringC& szName,
- int32_t iIndexFlags,
- int32_t iIndexValue,
- bool bIsStar,
- CFX_ByteString& szSomExp) {
- if (bIsStar) {
- szSomExp = szName + "[*]";
- return;
- }
- if (iIndexFlags == 0) {
- szSomExp = szName;
- return;
- }
+CFX_ByteString CXFA_FM2JSContext::GenerateSomExpression(
+ const CFX_ByteStringC& szName,
+ int32_t iIndexFlags,
+ int32_t iIndexValue,
+ bool bIsStar) {
+ if (bIsStar)
+ return CFX_ByteString(szName, "[*]");
+
+ if (iIndexFlags == 0)
+ return CFX_ByteString(szName);
+
if (iIndexFlags == 1 || iIndexValue == 0) {
- szSomExp = szName + "[" +
- CFX_ByteString::FormatInteger(iIndexValue, FXFORMAT_SIGNED) +
- "]";
- } else if (iIndexFlags == 2) {
+ return CFX_ByteString(szName, "[") +
+ CFX_ByteString::FormatInteger(iIndexValue, FXFORMAT_SIGNED) + "]";
+ }
+ CFX_ByteString szSomExp;
+ if (iIndexFlags == 2) {
szSomExp = (iIndexValue < 0) ? (szName + "[-") : (szName + "[+");
iIndexValue = (iIndexValue < 0) ? (0 - iIndexValue) : iIndexValue;
szSomExp += CFX_ByteString::FormatInteger(iIndexValue);
@@ -6058,6 +5853,7 @@ void CXFA_FM2JSContext::GenerateSomExpression(const CFX_ByteStringC& szName,
szSomExp += CFX_ByteString::FormatInteger(iIndexValue);
szSomExp += "]";
}
+ return szSomExp;
}
// static
@@ -6309,17 +6105,12 @@ double CXFA_FM2JSContext::ExtractDouble(CFXJSE_Value* pThis,
}
// static
-void CXFA_FM2JSContext::ValueToUTF8String(CFXJSE_Value* arg,
- CFX_ByteString& szOutputString) {
- if (!arg)
- return;
-
- if (arg->IsNull() || arg->IsUndefined())
- szOutputString = "";
- else if (arg->IsBoolean())
- szOutputString = arg->ToBoolean() ? "1" : "0";
- else
- szOutputString = arg->ToString();
+CFX_ByteString CXFA_FM2JSContext::ValueToUTF8String(CFXJSE_Value* arg) {
+ if (!arg || arg->IsNull() || arg->IsUndefined())
+ return CFX_ByteString();
+ if (arg->IsBoolean())
+ return arg->ToBoolean() ? "1" : "0";
+ return arg->ToString();
}
// static.
diff --git a/xfa/fxfa/fm2js/xfa_fm2jscontext.h b/xfa/fxfa/fm2js/xfa_fm2jscontext.h
index d7f00091ed..33f739f1cc 100644
--- a/xfa/fxfa/fm2js/xfa_fm2jscontext.h
+++ b/xfa/fxfa/fm2js/xfa_fm2jscontext.h
@@ -118,57 +118,40 @@ class CXFA_FM2JSContext : public CFXJSE_HostObject {
int32_t& iMillionSecond,
int32_t& iZoneHour,
int32_t& iZoneMinute);
- static bool Local2IsoDate(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szDate,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strIsoDate);
- static bool Local2IsoTime(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szTime,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strIsoTime);
- static bool IsoDate2Local(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szDate,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strLocalDate);
- static bool IsoTime2Local(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szTime,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strLocalTime);
- static bool GetGMTTime(CFXJSE_Value* pThis,
- const CFX_ByteStringC& szTime,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- CFX_ByteString& strGMTTime);
+ static CFX_ByteString Local2IsoDate(CFXJSE_Value* pThis,
+ const CFX_ByteStringC& szDate,
+ const CFX_ByteStringC& szFormat,
+ const CFX_ByteStringC& szLocale);
+ static CFX_ByteString IsoDate2Local(CFXJSE_Value* pThis,
+ const CFX_ByteStringC& szDate,
+ const CFX_ByteStringC& szFormat,
+ const CFX_ByteStringC& szLocale);
+ static CFX_ByteString IsoTime2Local(CFXJSE_Value* pThis,
+ const CFX_ByteStringC& szTime,
+ const CFX_ByteStringC& szFormat,
+ const CFX_ByteStringC& szLocale);
static int32_t DateString2Num(const CFX_ByteStringC& szDateString);
- static void GetLocalDateFormat(CFXJSE_Value* pThis,
- int32_t iStyle,
- const CFX_ByteStringC& szLocalStr,
- CFX_ByteString& strFormat,
- bool bStandard);
- static void GetLocalTimeFormat(CFXJSE_Value* pThis,
- int32_t iStyle,
- const CFX_ByteStringC& szLocalStr,
- CFX_ByteString& strFormat,
- bool bStandard);
- static void GetStandardDateFormat(CFXJSE_Value* pThis,
- int32_t iStyle,
- const CFX_ByteStringC& szLocalStr,
- CFX_ByteString& strFormat);
- static void GetStandardTimeFormat(CFXJSE_Value* pThis,
- int32_t iStyle,
- const CFX_ByteStringC& szLocalStr,
- CFX_ByteString& strFormat);
-
- static void Num2AllTime(CFXJSE_Value* pThis,
- int32_t iTime,
- const CFX_ByteStringC& szFormat,
- const CFX_ByteStringC& szLocale,
- bool bGM,
- CFX_ByteString& strTime);
+ static CFX_ByteString GetLocalDateFormat(CFXJSE_Value* pThis,
+ int32_t iStyle,
+ const CFX_ByteStringC& szLocalStr,
+ bool bStandard);
+ static CFX_ByteString GetLocalTimeFormat(CFXJSE_Value* pThis,
+ int32_t iStyle,
+ const CFX_ByteStringC& szLocalStr,
+ bool bStandard);
+ static CFX_ByteString GetStandardDateFormat(
+ CFXJSE_Value* pThis,
+ int32_t iStyle,
+ const CFX_ByteStringC& szLocalStr);
+ static CFX_ByteString GetStandardTimeFormat(
+ CFXJSE_Value* pThis,
+ int32_t iStyle,
+ const CFX_ByteStringC& szLocalStr);
+ static CFX_ByteString Num2AllTime(CFXJSE_Value* pThis,
+ int32_t iTime,
+ const CFX_ByteStringC& szFormat,
+ const CFX_ByteStringC& szLocale,
+ bool bGM);
static void GetLocalTimeZone(int32_t& iHour, int32_t& iMin, int32_t& iSec);
static void Apr(CFXJSE_Value* pThis,
@@ -412,11 +395,10 @@ class CXFA_FM2JSContext : public CFXJSE_HostObject {
CFXJSE_Value* pDefaultValue);
static bool SetObjectDefaultValue(CFXJSE_Value* pObjectValue,
CFXJSE_Value* pNewValue);
- static void GenerateSomExpression(const CFX_ByteStringC& szName,
- int32_t iIndexFlags,
- int32_t iIndexValue,
- bool bIsStar,
- CFX_ByteString& szSomExp);
+ static CFX_ByteString GenerateSomExpression(const CFX_ByteStringC& szName,
+ int32_t iIndexFlags,
+ int32_t iIndexValue,
+ bool bIsStar);
static bool GetObjectForName(CFXJSE_Value* pThis,
CFXJSE_Value* accessorValue,
const CFX_ByteStringC& szAccessorName);
@@ -440,8 +422,7 @@ class CXFA_FM2JSContext : public CFXJSE_HostObject {
static int32_t ValueToInteger(CFXJSE_Value* pThis, CFXJSE_Value* pValue);
static float ValueToFloat(CFXJSE_Value* pThis, CFXJSE_Value* pValue);
static double ValueToDouble(CFXJSE_Value* pThis, CFXJSE_Value* pValue);
- static void ValueToUTF8String(CFXJSE_Value* pValue,
- CFX_ByteString& outputValue);
+ static CFX_ByteString ValueToUTF8String(CFXJSE_Value* pValue);
static double ExtractDouble(CFXJSE_Value* pThis,
CFXJSE_Value* src,
bool* ret);