diff --git a/BUILD.gn b/BUILD.gn
index 062cfdc..da23f0b 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -295,6 +295,7 @@
 
 source_set("constants") {
   sources = [
+    "constants/form_flags.h",
     "constants/page_object.h",
     "constants/stream_dict_common.h",
     "constants/transparency.h",
diff --git a/constants/form_flags.h b/constants/form_flags.h
new file mode 100644
index 0000000..a2220bd
--- /dev/null
+++ b/constants/form_flags.h
@@ -0,0 +1,20 @@
+// Copyright 2018 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONSTANTS_FORM_FLAGS_H_
+#define CONSTANTS_FORM_FLAGS_H_
+
+namespace pdfium {
+namespace form_flags {
+
+// PDF 1.7 spec, table 8.70.
+// Field flags common to all field types.
+constexpr uint32_t kReadOnly = 1 << 0;
+constexpr uint32_t kRequired = 1 << 1;
+constexpr uint32_t kNoExport = 1 << 2;
+
+}  // namespace form_flags
+}  // namespace pdfium
+
+#endif  // CONSTANTS_FORM_FLAGS_H_
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index c26a0a6..7694aea 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -10,6 +10,7 @@
 #include <set>
 #include <utility>
 
+#include "constants/form_flags.h"
 #include "core/fpdfapi/parser/cfdf_document.h"
 #include "core/fpdfapi/parser/cpdf_array.h"
 #include "core/fpdfapi/parser/cpdf_document.h"
@@ -25,6 +26,7 @@
 
 namespace {
 
+// TODO(thestig): Move into constants/form_flags.h.
 const int kFormListMultiSelect = 0x100;
 
 const int kFormComboEdit = 0x100;
@@ -100,23 +102,28 @@
 
 CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict)
     : m_pForm(pForm), m_pDict(pDict) {
-  SyncFieldFlags();
+  InitFieldFlags();
 }
 
 CPDF_FormField::~CPDF_FormField() {}
 
-void CPDF_FormField::SyncFieldFlags() {
+void CPDF_FormField::InitFieldFlags() {
   const CPDF_Object* ft_attr = FPDF_GetFieldAttr(m_pDict.Get(), "FT");
   ByteString type_name = ft_attr ? ft_attr->GetString() : ByteString();
   const CPDF_Object* ff_attr = FPDF_GetFieldAttr(m_pDict.Get(), "Ff");
   uint32_t flags = ff_attr ? ff_attr->GetInteger() : 0;
-  m_Flags = 0;
-  if (flags & FORMFLAG_READONLY)
-    m_Flags |= FORMFLAG_READONLY;
-  if (flags & FORMFLAG_REQUIRED)
-    m_Flags |= FORMFLAG_REQUIRED;
-  if (flags & FORMFLAG_NOEXPORT)
-    m_Flags |= FORMFLAG_NOEXPORT;
+  if (flags & pdfium::form_flags::kReadOnly) {
+    m_Flags |= pdfium::form_flags::kReadOnly;
+    m_bReadOnly = true;
+  }
+  if (flags & pdfium::form_flags::kRequired) {
+    m_Flags |= pdfium::form_flags::kRequired;
+    m_bRequired = true;
+  }
+  if (flags & pdfium::form_flags::kNoExport) {
+    m_Flags |= pdfium::form_flags::kNoExport;
+    m_bNoExport = true;
+  }
 
   if (type_name == "Btn") {
     if (flags & 0x8000) {
diff --git a/core/fpdfdoc/cpdf_formfield.h b/core/fpdfdoc/cpdf_formfield.h
index a3af10b..1f07084 100644
--- a/core/fpdfdoc/cpdf_formfield.h
+++ b/core/fpdfdoc/cpdf_formfield.h
@@ -70,10 +70,6 @@
 #endif  // PDF_ENABLE_XFA
 };
 
-#define FORMFLAG_READONLY 0x01
-#define FORMFLAG_REQUIRED 0x02
-#define FORMFLAG_NOEXPORT 0x04
-
 class CPDF_Dictionary;
 class CPDF_Font;
 class CPDF_FormControl;
@@ -132,9 +128,9 @@
   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); }
+  bool IsReadOnly() const { return m_bReadOnly; }
+  bool IsRequired() const { return m_bRequired; }
+  bool IsNoExport() const { return m_bNoExport; }
 
   WideString GetValue() const;
   WideString GetDefaultValue() const;
@@ -191,7 +187,7 @@
   bool SetValue(const WideString& value,
                 bool bDefault,
                 NotificationOption notify);
-  void SyncFieldFlags();
+  void InitFieldFlags();
   int FindListSel(CPDF_String* str);
   WideString GetOptionText(int index, int sub_index) const;
   void LoadDA();
@@ -206,7 +202,11 @@
   void NotifyListOrComboBoxAfterChange();
 
   CPDF_FormField::Type m_Type = Unknown;
-  uint32_t m_Flags;
+  uint32_t m_Flags = 0;
+  bool m_bReadOnly = false;
+  bool m_bRequired = false;
+  bool m_bNoExport = false;
+
   UnownedPtr<CPDF_InterForm> const m_pForm;
   UnownedPtr<CPDF_Dictionary> const m_pDict;
   // Owned by InterForm parent.
