Add more helper functions to check field types in CJS_Field.

These types are commonly checked together.

- IsComboBoxOrListBox()
- IsComboBoxOrTextField()

Change-Id: Ia363bd9822f8dfe61e11cf552ec516f9403a8fcc
Reviewed-on: https://pdfium-review.googlesource.com/37673
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
diff --git a/fxjs/cjs_field.cpp b/fxjs/cjs_field.cpp
index 00f1ce2..1cfb4ba 100644
--- a/fxjs/cjs_field.cpp
+++ b/fxjs/cjs_field.cpp
@@ -67,6 +67,16 @@
          pFormField->GetFieldType() == FormFieldType::kRadioButton;
 }
 
+bool IsComboBoxOrListBox(const CPDF_FormField* pFormField) {
+  return pFormField->GetFieldType() == FormFieldType::kComboBox ||
+         pFormField->GetFieldType() == FormFieldType::kListBox;
+}
+
+bool IsComboBoxOrTextField(const CPDF_FormField* pFormField) {
+  return pFormField->GetFieldType() == FormFieldType::kComboBox ||
+         pFormField->GetFieldType() == FormFieldType::kTextField;
+}
+
 }  // namespace
 
 const JSPropertySpec CJS_Field::PropertySpecs[] = {
@@ -268,9 +278,7 @@
     std::vector<CPDFSDK_Annot::ObservedPtr> widgets;
     pInterForm->GetWidgets(pFormField, &widgets);
 
-    FormFieldType fieldType = pFormField->GetFieldType();
-    if (fieldType == FormFieldType::kComboBox ||
-        fieldType == FormFieldType::kTextField) {
+    if (IsComboBoxOrTextField(pFormField)) {
       for (auto& pObserved : widgets) {
         if (pObserved) {
           bool bFormatted = false;
@@ -705,10 +713,8 @@
     return CJS_Return(JSMessage::kBadObjectError);
 
   CPDF_FormField* pFormField = FieldArray[0];
-  if (pFormField->GetFieldType() != FormFieldType::kComboBox &&
-      pFormField->GetFieldType() != FormFieldType::kTextField) {
+  if (!IsComboBoxOrTextField(pFormField))
     return CJS_Return(JSMessage::kObjectTypeError);
-  }
 
   CPDFSDK_InterForm* pRDInterForm = m_pFormFillEnv->GetInterForm();
   CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
@@ -776,10 +782,8 @@
     return CJS_Return(JSMessage::kBadObjectError);
 
   CPDF_FormField* pFormField = FieldArray[0];
-  if (pFormField->GetFieldType() != FormFieldType::kComboBox &&
-      pFormField->GetFieldType() != FormFieldType::kListBox) {
+  if (!IsComboBoxOrListBox(pFormField))
     return CJS_Return(JSMessage::kObjectTypeError);
-  }
 
   return CJS_Return(pRuntime->NewBoolean(
       !!(pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE)));
@@ -799,10 +803,8 @@
     return CJS_Return(JSMessage::kBadObjectError);
 
   CPDF_FormField* pFormField = FieldArray[0];
-  if (pFormField->GetFieldType() != FormFieldType::kComboBox &&
-      pFormField->GetFieldType() != FormFieldType::kListBox) {
+  if (!IsComboBoxOrListBox(pFormField))
     return CJS_Return(JSMessage::kObjectTypeError);
-  }
 
   int count = pFormField->CountSelectedItems();
   if (count <= 0)
@@ -855,21 +857,20 @@
       GetFormFields(pFormFillEnv, swFieldName);
 
   for (CPDF_FormField* pFormField : FieldArray) {
-    FormFieldType fieldType = pFormField->GetFieldType();
-    if (fieldType == FormFieldType::kComboBox ||
-        fieldType == FormFieldType::kListBox) {
-      uint32_t dwFieldFlags = pFormField->GetFieldFlags();
-      pFormField->ClearSelection(true);
-      for (size_t i = 0; i < array.size(); ++i) {
-        if (i != 0 && !(dwFieldFlags & (1 << 21)))
-          break;
-        if (array[i] < static_cast<uint32_t>(pFormField->CountOptions()) &&
-            !pFormField->IsItemSelected(array[i])) {
-          pFormField->SetItemSelection(array[i], true);
-        }
+    if (!IsComboBoxOrListBox(pFormField))
+      continue;
+
+    uint32_t dwFieldFlags = pFormField->GetFieldFlags();
+    pFormField->ClearSelection(true);
+    for (size_t i = 0; i < array.size(); ++i) {
+      if (i != 0 && !(dwFieldFlags & (1 << 21)))
+        break;
+      if (array[i] < static_cast<uint32_t>(pFormField->CountOptions()) &&
+          !pFormField->IsItemSelected(array[i])) {
+        pFormField->SetItemSelection(array[i], true);
       }
-      UpdateFormField(pFormFillEnv, pFormField, true, true, true);
     }
+    UpdateFormField(pFormFillEnv, pFormField, true, true, true);
   }
 }
 
@@ -938,10 +939,8 @@
     return CJS_Return(JSMessage::kBadObjectError);
 
   CPDF_FormField* pFormField = FieldArray[0];
-  if (pFormField->GetFieldType() != FormFieldType::kTextField &&
-      pFormField->GetFieldType() != FormFieldType::kComboBox) {
+  if (!IsComboBoxOrTextField(pFormField))
     return CJS_Return(JSMessage::kObjectTypeError);
-  }
 
   return CJS_Return(pRuntime->NewBoolean(
       !!(pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK)));
@@ -1435,10 +1434,8 @@
     return CJS_Return(JSMessage::kBadObjectError);
 
   CPDF_FormField* pFormField = FieldArray[0];
-  if (pFormField->GetFieldType() != FormFieldType::kComboBox &&
-      pFormField->GetFieldType() != FormFieldType::kListBox) {
+  if (!IsComboBoxOrListBox(pFormField))
     return CJS_Return(JSMessage::kObjectTypeError);
-  }
 
   return CJS_Return(pRuntime->NewNumber(pFormField->CountOptions()));
 }
@@ -2488,22 +2485,22 @@
     return CJS_Return(JSMessage::kBadObjectError);
 
   CPDF_FormField* pFormField = FieldArray[0];
-  if ((pFormField->GetFieldType() == FormFieldType::kListBox) ||
-      (pFormField->GetFieldType() == FormFieldType::kComboBox)) {
-    if (nIdx == -1 || nIdx > pFormField->CountOptions())
-      nIdx = pFormField->CountOptions() - 1;
-    if (bExport) {
-      WideString strval = pFormField->GetOptionValue(nIdx);
-      if (strval.IsEmpty()) {
-        return CJS_Return(pRuntime->NewString(
-            pFormField->GetOptionLabel(nIdx).AsStringView()));
-      }
-      return CJS_Return(pRuntime->NewString(strval.AsStringView()));
-    }
+  if (!IsComboBoxOrListBox(pFormField))
+    return CJS_Return(JSMessage::kObjectTypeError);
+
+  if (nIdx == -1 || nIdx > pFormField->CountOptions())
+    nIdx = pFormField->CountOptions() - 1;
+  if (!bExport) {
     return CJS_Return(
         pRuntime->NewString(pFormField->GetOptionLabel(nIdx).AsStringView()));
   }
-  return CJS_Return(JSMessage::kObjectTypeError);
+
+  WideString strval = pFormField->GetOptionValue(nIdx);
+  if (strval.IsEmpty()) {
+    return CJS_Return(
+        pRuntime->NewString(pFormField->GetOptionLabel(nIdx).AsStringView()));
+  }
+  return CJS_Return(pRuntime->NewString(strval.AsStringView()));
 }
 
 CJS_Return CJS_Field::getLock(CJS_Runtime* pRuntime,