Add const version of CXFA_Node::GetChild()

Use it in one place by adding missing const to CFA_Fill::GetColor(),
and then propagate the missing const to its callers.

Change-Id: Ic9296f302f76f948a0821656f9af81e98b846a18
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/84513
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_color.cpp b/xfa/fxfa/parser/cxfa_color.cpp
index 1164b8c..d16f14d 100644
--- a/xfa/fxfa/parser/cxfa_color.cpp
+++ b/xfa/fxfa/parser/cxfa_color.cpp
@@ -94,12 +94,12 @@
 
 CXFA_Color::~CXFA_Color() = default;
 
-FX_ARGB CXFA_Color::GetValue() {
+FX_ARGB CXFA_Color::GetValue() const {
   Optional<WideString> val = JSObject()->TryCData(XFA_Attribute::Value, false);
   return val.has_value() ? StringToFXARGB(val->AsStringView()) : 0xFF000000;
 }
 
-FX_ARGB CXFA_Color::GetValueOrDefault(FX_ARGB defaultValue) {
+FX_ARGB CXFA_Color::GetValueOrDefault(FX_ARGB defaultValue) const {
   Optional<WideString> val = JSObject()->TryCData(XFA_Attribute::Value, false);
   return val.has_value() ? StringToFXARGB(val->AsStringView()) : defaultValue;
 }
diff --git a/xfa/fxfa/parser/cxfa_color.h b/xfa/fxfa/parser/cxfa_color.h
index 683ce6e..71e03c6 100644
--- a/xfa/fxfa/parser/cxfa_color.h
+++ b/xfa/fxfa/parser/cxfa_color.h
@@ -18,8 +18,8 @@
   CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
   ~CXFA_Color() override;
 
-  FX_ARGB GetValue();
-  FX_ARGB GetValueOrDefault(FX_ARGB defaultValue);
+  FX_ARGB GetValue() const;
+  FX_ARGB GetValueOrDefault(FX_ARGB defaultValue) const;
   void SetValue(FX_ARGB color);
 
  private:
diff --git a/xfa/fxfa/parser/cxfa_fill.cpp b/xfa/fxfa/parser/cxfa_fill.cpp
index f8646ac..7a4801e 100644
--- a/xfa/fxfa/parser/cxfa_fill.cpp
+++ b/xfa/fxfa/parser/cxfa_fill.cpp
@@ -70,8 +70,8 @@
   pColor->SetValue(color);
 }
 
-FX_ARGB CXFA_Fill::GetColor(bool bText) {
-  CXFA_Color* pColor = GetChild<CXFA_Color>(0, XFA_Element::Color, false);
+FX_ARGB CXFA_Fill::GetColor(bool bText) const {
+  const auto* pColor = GetChild<CXFA_Color>(0, XFA_Element::Color, false);
   if (!pColor)
     return bText ? 0xFF000000 : 0xFFFFFFFF;
   return pColor->GetValueOrDefault(bText ? 0xFF000000 : 0xFFFFFFFF);
diff --git a/xfa/fxfa/parser/cxfa_fill.h b/xfa/fxfa/parser/cxfa_fill.h
index 2f7fb51..168543a 100644
--- a/xfa/fxfa/parser/cxfa_fill.h
+++ b/xfa/fxfa/parser/cxfa_fill.h
@@ -21,7 +21,7 @@
 
   bool IsVisible();
 
-  FX_ARGB GetColor(bool bText);
+  FX_ARGB GetColor(bool bText) const;
   void SetColor(FX_ARGB color);
 
   void Draw(CFGAS_GEGraphics* pGS,
diff --git a/xfa/fxfa/parser/cxfa_node.h b/xfa/fxfa/parser/cxfa_node.h
index 3c294e2..d7dd9c0 100644
--- a/xfa/fxfa/parser/cxfa_node.h
+++ b/xfa/fxfa/parser/cxfa_node.h
@@ -187,6 +187,11 @@
     return static_cast<T*>(GetChildInternal(index, eType, bOnlyChild));
   }
 
+  template <typename T>
+  const T* GetChild(size_t index, XFA_Element eType, bool bOnlyChild) const {
+    return static_cast<const T*>(GetChildInternal(index, eType, bOnlyChild));
+  }
+
   void InsertChildAndNotify(int32_t index, CXFA_Node* pNode);
   void InsertChildAndNotify(CXFA_Node* pNode, CXFA_Node* pBeforeNode);
   void RemoveChildAndNotify(CXFA_Node* pNode, bool bNotify);