Make CFX_CSSVALUETYPE an enum class

Change-Id: Iefe56727ff3ac6aa9f8ef4ff1b93a4e181c58455
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/84077
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/css/cfx_css.h b/core/fxcrt/css/cfx_css.h
index b2b0121..a6e3109 100644
--- a/core/fxcrt/css/cfx_css.h
+++ b/core/fxcrt/css/cfx_css.h
@@ -164,13 +164,13 @@
   SmallCaps,
 };
 
-enum CFX_CSSTEXTDECORATION {
-  CFX_CSSTEXTDECORATION_None = 0,
-  CFX_CSSTEXTDECORATION_Underline = 1 << 0,
-  CFX_CSSTEXTDECORATION_Overline = 1 << 1,
-  CFX_CSSTEXTDECORATION_LineThrough = 1 << 2,
-  CFX_CSSTEXTDECORATION_Blink = 1 << 3,
-  CFX_CSSTEXTDECORATION_Double = 1 << 4,
+enum class CFX_CSSTEXTDECORATION : uint8_t {
+  kNone = 0,
+  kUnderline = 1 << 0,
+  kOverline = 1 << 1,
+  kLineThrough = 1 << 2,
+  kBlink = 1 << 3,
+  kDouble = 1 << 4,
 };
 
 class CFX_CSSLength {
diff --git a/core/fxcrt/css/cfx_csscomputedstyle.cpp b/core/fxcrt/css/cfx_csscomputedstyle.cpp
index dcd7cc1..87cf08a 100644
--- a/core/fxcrt/css/cfx_csscomputedstyle.cpp
+++ b/core/fxcrt/css/cfx_csscomputedstyle.cpp
@@ -126,7 +126,7 @@
   return m_NonInheritedData.m_fVerticalAlign;
 }
 
-uint32_t CFX_CSSComputedStyle::GetTextDecoration() const {
+Mask<CFX_CSSTEXTDECORATION> CFX_CSSComputedStyle::GetTextDecoration() const {
   return m_NonInheritedData.m_dwTextDecoration;
 }
 
@@ -151,7 +151,8 @@
   m_NonInheritedData.m_fVerticalAlign = fAlign;
 }
 
-void CFX_CSSComputedStyle::SetTextDecoration(uint32_t dwTextDecoration) {
+void CFX_CSSComputedStyle::SetTextDecoration(
+    Mask<CFX_CSSTEXTDECORATION> dwTextDecoration) {
   m_NonInheritedData.m_dwTextDecoration = dwTextDecoration;
 }
 
diff --git a/core/fxcrt/css/cfx_csscomputedstyle.h b/core/fxcrt/css/cfx_csscomputedstyle.h
index 4da15a7..921c66c 100644
--- a/core/fxcrt/css/cfx_csscomputedstyle.h
+++ b/core/fxcrt/css/cfx_csscomputedstyle.h
@@ -12,6 +12,7 @@
 #include "core/fxcrt/css/cfx_css.h"
 #include "core/fxcrt/css/cfx_csscustomproperty.h"
 #include "core/fxcrt/fx_string.h"
+#include "core/fxcrt/mask.h"
 #include "core/fxcrt/retain_ptr.h"
 #include "core/fxge/dib/fx_dib.h"
 #include "third_party/base/optional.h"
@@ -52,7 +53,7 @@
     float m_fVerticalAlign = 0.0f;
     CFX_CSSDisplay m_eDisplay = CFX_CSSDisplay::Inline;
     CFX_CSSVerticalAlign m_eVerticalAlignType = CFX_CSSVerticalAlign::Baseline;
-    uint8_t m_dwTextDecoration = 0;
+    Mask<CFX_CSSTEXTDECORATION> m_dwTextDecoration;
     bool m_bHasMargin = false;
     bool m_bHasBorder = false;
     bool m_bHasPadding = false;
@@ -85,13 +86,13 @@
   CFX_CSSTextAlign GetTextAlign() const;
   CFX_CSSVerticalAlign GetVerticalAlign() const;
   float GetNumberVerticalAlign() const;
-  uint32_t GetTextDecoration() const;
+  Mask<CFX_CSSTEXTDECORATION> GetTextDecoration() const;
   const CFX_CSSLength& GetLetterSpacing() const;
   void SetLineHeight(float fLineHeight);
   void SetTextIndent(const CFX_CSSLength& textIndent);
   void SetTextAlign(CFX_CSSTextAlign eTextAlign);
   void SetNumberVerticalAlign(float fAlign);
-  void SetTextDecoration(uint32_t dwTextDecoration);
+  void SetTextDecoration(Mask<CFX_CSSTEXTDECORATION> dwTextDecoration);
   void SetLetterSpacing(const CFX_CSSLength& letterSpacing);
   void AddCustomStyle(const CFX_CSSCustomProperty& prop);
 
diff --git a/core/fxcrt/css/cfx_cssstyleselector.cpp b/core/fxcrt/css/cfx_cssstyleselector.cpp
index 8c7dcb0..a60d131 100644
--- a/core/fxcrt/css/cfx_cssstyleselector.cpp
+++ b/core/fxcrt/css/cfx_cssstyleselector.cpp
@@ -560,9 +560,9 @@
   }
 }
 
-uint32_t CFX_CSSStyleSelector::ToTextDecoration(
+Mask<CFX_CSSTEXTDECORATION> CFX_CSSStyleSelector::ToTextDecoration(
     const RetainPtr<CFX_CSSValueList>& pValue) {
-  uint32_t dwDecoration = 0;
+  Mask<CFX_CSSTEXTDECORATION> dwDecoration;
   for (const RetainPtr<CFX_CSSValue>& val :
        pdfium::base::Reversed(pValue->values())) {
     if (val->GetType() != CFX_CSSValue::PrimitiveType::kEnum)
@@ -570,19 +570,19 @@
 
     switch (val.As<CFX_CSSEnumValue>()->Value()) {
       case CFX_CSSPropertyValue::Underline:
-        dwDecoration |= CFX_CSSTEXTDECORATION_Underline;
+        dwDecoration |= CFX_CSSTEXTDECORATION::kUnderline;
         break;
       case CFX_CSSPropertyValue::LineThrough:
-        dwDecoration |= CFX_CSSTEXTDECORATION_LineThrough;
+        dwDecoration |= CFX_CSSTEXTDECORATION::kLineThrough;
         break;
       case CFX_CSSPropertyValue::Overline:
-        dwDecoration |= CFX_CSSTEXTDECORATION_Overline;
+        dwDecoration |= CFX_CSSTEXTDECORATION::kOverline;
         break;
       case CFX_CSSPropertyValue::Blink:
-        dwDecoration |= CFX_CSSTEXTDECORATION_Blink;
+        dwDecoration |= CFX_CSSTEXTDECORATION::kBlink;
         break;
       case CFX_CSSPropertyValue::Double:
-        dwDecoration |= CFX_CSSTEXTDECORATION_Double;
+        dwDecoration |= CFX_CSSTEXTDECORATION::kDouble;
         break;
       default:
         break;
diff --git a/core/fxcrt/css/cfx_cssstyleselector.h b/core/fxcrt/css/cfx_cssstyleselector.h
index 94a0b8d..eebfc3d 100644
--- a/core/fxcrt/css/cfx_cssstyleselector.h
+++ b/core/fxcrt/css/cfx_cssstyleselector.h
@@ -15,6 +15,7 @@
 #include "core/fxcrt/css/cfx_css.h"
 #include "core/fxcrt/css/cfx_cssrulecollection.h"
 #include "core/fxcrt/css/cfx_cssvalue.h"
+#include "core/fxcrt/mask.h"
 #include "core/fxcrt/retain_ptr.h"
 
 class CFX_CSSComputedStyle;
@@ -74,7 +75,8 @@
   uint16_t ToFontWeight(CFX_CSSPropertyValue eValue);
   CFX_CSSFontStyle ToFontStyle(CFX_CSSPropertyValue eValue);
   CFX_CSSVerticalAlign ToVerticalAlign(CFX_CSSPropertyValue eValue);
-  uint32_t ToTextDecoration(const RetainPtr<CFX_CSSValueList>& pList);
+  Mask<CFX_CSSTEXTDECORATION> ToTextDecoration(
+      const RetainPtr<CFX_CSSValueList>& pList);
   CFX_CSSFontVariant ToFontVariant(CFX_CSSPropertyValue eValue);
 
   float m_fDefaultFontSize = 12.0f;
diff --git a/xfa/fxfa/cxfa_textparser.cpp b/xfa/fxfa/cxfa_textparser.cpp
index 40d8134..227c044 100644
--- a/xfa/fxfa/cxfa_textparser.cpp
+++ b/xfa/fxfa/cxfa_textparser.cpp
@@ -158,13 +158,13 @@
     CFX_CSSLength letterSpacing;
     letterSpacing.Set(CFX_CSSLengthUnit::Point, font->GetLetterSpacing());
     pStyle->SetLetterSpacing(letterSpacing);
-    uint32_t dwDecoration = 0;
+    Mask<CFX_CSSTEXTDECORATION> dwDecoration;
     if (font->GetLineThrough() > 0)
-      dwDecoration |= CFX_CSSTEXTDECORATION_LineThrough;
+      dwDecoration |= CFX_CSSTEXTDECORATION::kLineThrough;
     if (font->GetUnderline() > 1)
-      dwDecoration |= CFX_CSSTEXTDECORATION_Double;
+      dwDecoration |= CFX_CSSTEXTDECORATION::kDouble;
     else if (font->GetUnderline() > 0)
-      dwDecoration |= CFX_CSSTEXTDECORATION_Underline;
+      dwDecoration |= CFX_CSSTEXTDECORATION::kUnderline;
 
     pStyle->SetTextDecoration(dwDecoration);
   }
@@ -180,7 +180,7 @@
   if (!pParentStyle)
     return pNewStyle;
 
-  uint32_t dwDecoration = pParentStyle->GetTextDecoration();
+  Mask<CFX_CSSTEXTDECORATION> dwDecoration = pParentStyle->GetTextDecoration();
   float fBaseLine = 0;
   if (pParentStyle->GetVerticalAlign() == CFX_CSSVerticalAlign::Number)
     fBaseLine = pParentStyle->GetNumberVerticalAlign();
@@ -420,10 +420,10 @@
   if (!pStyle)
     return font ? font->GetUnderline() : 0;
 
-  const uint32_t dwDecoration = pStyle->GetTextDecoration();
-  if (dwDecoration & CFX_CSSTEXTDECORATION_Double)
+  const Mask<CFX_CSSTEXTDECORATION> dwDecoration = pStyle->GetTextDecoration();
+  if (dwDecoration & CFX_CSSTEXTDECORATION::kDouble)
     return 2;
-  if (dwDecoration & CFX_CSSTEXTDECORATION_Underline)
+  if (dwDecoration & CFX_CSSTEXTDECORATION::kUnderline)
     return 1;
   return 0;
 }
@@ -444,8 +444,9 @@
     CXFA_TextProvider* pTextProvider,
     const CFX_CSSComputedStyle* pStyle) const {
   if (pStyle) {
-    const uint32_t dwDecoration = pStyle->GetTextDecoration();
-    return (dwDecoration & CFX_CSSTEXTDECORATION_LineThrough) ? 1 : 0;
+    const Mask<CFX_CSSTEXTDECORATION> dwDecoration =
+        pStyle->GetTextDecoration();
+    return (dwDecoration & CFX_CSSTEXTDECORATION::kLineThrough) ? 1 : 0;
   }
   CXFA_Font* font = pTextProvider->GetFontIfExists();
   return font ? font->GetLineThrough() : 0;