De-duplicate some code between cxfa_node.cpp and cxfa_util.cpp
Introduce XFA_GetLocaleValueType() helper function.
Change-Id: Idd7104753eeed8d0ab1019aaf7dd5c43ccee003c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/80831
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 16335e0..b8ff3fb 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -4897,36 +4897,8 @@
if (!pValueChild)
return wsValue;
- CXFA_LocaleValue::ValueType iVTType;
- switch (pValueChild->GetElementType()) {
- case XFA_Element::Decimal:
- iVTType = CXFA_LocaleValue::ValueType::kDecimal;
- break;
- case XFA_Element::Float:
- iVTType = CXFA_LocaleValue::ValueType::kFloat;
- break;
- case XFA_Element::Date:
- iVTType = CXFA_LocaleValue::ValueType::kDate;
- break;
- case XFA_Element::Time:
- iVTType = CXFA_LocaleValue::ValueType::kTime;
- break;
- case XFA_Element::DateTime:
- iVTType = CXFA_LocaleValue::ValueType::kDateTime;
- break;
- case XFA_Element::Boolean:
- iVTType = CXFA_LocaleValue::ValueType::kBoolean;
- break;
- case XFA_Element::Integer:
- iVTType = CXFA_LocaleValue::ValueType::kInteger;
- break;
- case XFA_Element::Text:
- iVTType = CXFA_LocaleValue::ValueType::kText;
- break;
- default:
- iVTType = CXFA_LocaleValue::ValueType::kNull;
- break;
- }
+ CXFA_LocaleValue::ValueType iVTType =
+ XFA_GetLocaleValueType(pValueChild->GetElementType());
CXFA_LocaleMgr* pLocaleMgr = GetDocument()->GetLocaleMgr();
CXFA_LocaleValue widgetValue(iVTType, wsValue, pLocaleMgr);
switch (widgetValue.GetType()) {
diff --git a/xfa/fxfa/parser/xfa_utils.cpp b/xfa/fxfa/parser/xfa_utils.cpp
index 451060a..b4c05ca 100644
--- a/xfa/fxfa/parser/xfa_utils.cpp
+++ b/xfa/fxfa/parser/xfa_utils.cpp
@@ -22,7 +22,6 @@
#include "third_party/base/stl_util.h"
#include "xfa/fxfa/parser/cxfa_document.h"
#include "xfa/fxfa/parser/cxfa_localemgr.h"
-#include "xfa/fxfa/parser/cxfa_localevalue.h"
#include "xfa/fxfa/parser/cxfa_measurement.h"
#include "xfa/fxfa/parser/cxfa_node.h"
#include "xfa/fxfa/parser/cxfa_ui.h"
@@ -386,40 +385,34 @@
if (!pValueChild)
return CXFA_LocaleValue();
- CXFA_LocaleValue::ValueType iVTType;
- switch (pValueChild->GetElementType()) {
- case XFA_Element::Decimal:
- iVTType = CXFA_LocaleValue::ValueType::kDecimal;
- break;
- case XFA_Element::Float:
- iVTType = CXFA_LocaleValue::ValueType::kFloat;
- break;
- case XFA_Element::Date:
- iVTType = CXFA_LocaleValue::ValueType::kDate;
- break;
- case XFA_Element::Time:
- iVTType = CXFA_LocaleValue::ValueType::kTime;
- break;
- case XFA_Element::DateTime:
- iVTType = CXFA_LocaleValue::ValueType::kDateTime;
- break;
- case XFA_Element::Boolean:
- iVTType = CXFA_LocaleValue::ValueType::kBoolean;
- break;
- case XFA_Element::Integer:
- iVTType = CXFA_LocaleValue::ValueType::kInteger;
- break;
- case XFA_Element::Text:
- iVTType = CXFA_LocaleValue::ValueType::kText;
- break;
- default:
- iVTType = CXFA_LocaleValue::ValueType::kNull;
- break;
- }
- return CXFA_LocaleValue(iVTType, pNode->GetRawValue(),
+ return CXFA_LocaleValue(XFA_GetLocaleValueType(pValueChild->GetElementType()),
+ pNode->GetRawValue(),
pNode->GetDocument()->GetLocaleMgr());
}
+CXFA_LocaleValue::ValueType XFA_GetLocaleValueType(XFA_Element element) {
+ switch (element) {
+ case XFA_Element::Decimal:
+ return CXFA_LocaleValue::ValueType::kDecimal;
+ case XFA_Element::Float:
+ return CXFA_LocaleValue::ValueType::kFloat;
+ case XFA_Element::Date:
+ return CXFA_LocaleValue::ValueType::kDate;
+ case XFA_Element::Time:
+ return CXFA_LocaleValue::ValueType::kTime;
+ case XFA_Element::DateTime:
+ return CXFA_LocaleValue::ValueType::kDateTime;
+ case XFA_Element::Boolean:
+ return CXFA_LocaleValue::ValueType::kBoolean;
+ case XFA_Element::Integer:
+ return CXFA_LocaleValue::ValueType::kInteger;
+ case XFA_Element::Text:
+ return CXFA_LocaleValue::ValueType::kText;
+ default:
+ return CXFA_LocaleValue::ValueType::kNull;
+ }
+}
+
bool XFA_FDEExtension_ResolveNamespaceQualifier(CFX_XMLElement* pNode,
const WideString& wsQualifier,
WideString* wsNamespaceURI) {
diff --git a/xfa/fxfa/parser/xfa_utils.h b/xfa/fxfa/parser/xfa_utils.h
index 2a43b43..704aec1 100644
--- a/xfa/fxfa/parser/xfa_utils.h
+++ b/xfa/fxfa/parser/xfa_utils.h
@@ -11,9 +11,9 @@
#include "core/fxcrt/retain_ptr.h"
#include "xfa/fxfa/fxfa.h"
#include "xfa/fxfa/fxfa_basic.h"
+#include "xfa/fxfa/parser/cxfa_localevalue.h"
class CFX_XMLElement;
-class CXFA_LocaleValue;
class CXFA_Node;
bool XFA_FDEExtension_ResolveNamespaceQualifier(CFX_XMLElement* pNode,
@@ -21,6 +21,7 @@
WideString* wsNamespaceURI);
CXFA_LocaleValue XFA_GetLocaleValue(CXFA_Node* pNode);
+CXFA_LocaleValue::ValueType XFA_GetLocaleValueType(XFA_Element element);
int32_t XFA_MapRotation(int32_t nRotation);
bool XFA_RecognizeRichText(CFX_XMLElement* pRichTextXMLNode);