Add methods to read specific field flags in CPDF_FormField.

Instead of reading the entire field flags value and applying bitmasks.
Also read an unused setter and make a member const.

Change-Id: I4ad645765ac58864b9c155ee9fe740aca4396d52
Reviewed-on: https://pdfium-review.googlesource.com/c/43532
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index c3bddd1..c26a0a6 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -99,11 +99,7 @@
 }
 
 CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict)
-    : m_Type(Unknown),
-      m_pForm(pForm),
-      m_pDict(pDict),
-      m_FontSize(0),
-      m_pFont(nullptr) {
+    : m_pForm(pForm), m_pDict(pDict) {
   SyncFieldFlags();
 }
 
diff --git a/core/fpdfdoc/cpdf_formfield.h b/core/fpdfdoc/cpdf_formfield.h
index 0a02596..a3af10b 100644
--- a/core/fpdfdoc/cpdf_formfield.h
+++ b/core/fpdfdoc/cpdf_formfield.h
@@ -110,7 +110,6 @@
   uint32_t GetFlags() const { return m_Flags; }
 
   CPDF_Dictionary* GetFieldDict() const { return m_pDict.Get(); }
-  void SetFieldDict(CPDF_Dictionary* pDict) { m_pDict = pDict; }
 
   bool ResetField(NotificationOption notify);
 
@@ -132,6 +131,11 @@
   uint32_t GetFieldFlags() const;
   ByteString GetDefaultStyle() const;
 
+  // TODO(thestig): Figure out what to do with unused methods here.
+  bool IsReadOnly() const { return !!(m_Flags & FORMFLAG_READONLY); }
+  bool IsRequired() const { return !!(m_Flags & FORMFLAG_REQUIRED); }
+  bool IsNoExport() const { return !!(m_Flags & FORMFLAG_NOEXPORT); }
+
   WideString GetValue() const;
   WideString GetDefaultValue() const;
   bool SetValue(const WideString& value, NotificationOption notify);
@@ -201,13 +205,13 @@
   bool NotifyListOrComboBoxBeforeChange(const WideString& value);
   void NotifyListOrComboBoxAfterChange();
 
-  CPDF_FormField::Type m_Type;
+  CPDF_FormField::Type m_Type = Unknown;
   uint32_t m_Flags;
   UnownedPtr<CPDF_InterForm> const m_pForm;
-  UnownedPtr<CPDF_Dictionary> m_pDict;
+  UnownedPtr<CPDF_Dictionary> const m_pDict;
   // Owned by InterForm parent.
   std::vector<UnownedPtr<CPDF_FormControl>> m_ControlList;
-  float m_FontSize;
+  float m_FontSize = 0;
   UnownedPtr<CPDF_Font> m_pFont;
 };
 
diff --git a/core/fpdfdoc/cpdf_interform.cpp b/core/fpdfdoc/cpdf_interform.cpp
index bacf6fd..8a88791 100644
--- a/core/fpdfdoc/cpdf_interform.cpp
+++ b/core/fpdfdoc/cpdf_interform.cpp
@@ -969,9 +969,7 @@
         iType == CPDF_FormField::CheckBox || iType == CPDF_FormField::ListBox) {
       continue;
     }
-    uint32_t dwFlags = pField->GetFieldFlags();
-    // TODO(thestig): Look up these magic numbers and add constants for them.
-    if (dwFlags & FORMFLAG_NOEXPORT)
+    if (pField->IsNoExport())
       continue;
 
     bool bFind = true;
@@ -979,10 +977,8 @@
       bFind = pdfium::ContainsValue(*fields, pField);
     if (bIncludeOrExclude == bFind) {
       const CPDF_Dictionary* pFieldDict = pField->GetDict();
-      if ((dwFlags & FORMFLAG_REQUIRED) != 0 &&
-          pFieldDict->GetStringFor("V").IsEmpty()) {
+      if (pField->IsRequired() && pFieldDict->GetStringFor("V").IsEmpty())
         return false;
-      }
     }
   }
   return true;