Add constants for form field types.
BUG=pdfium:1049
Change-Id: I16f90720f6779ba026ed61fea0f96aec263112e4
Reviewed-on: https://pdfium-review.googlesource.com/c/51233
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/constants/form_fields.h b/constants/form_fields.h
index 248991b..5b7c169 100644
--- a/constants/form_fields.h
+++ b/constants/form_fields.h
@@ -21,6 +21,12 @@
constexpr char kDV[] = "DV";
constexpr char kAA[] = "AA";
+// FT values from PDF 1.7 spec, table 8.69.
+constexpr char kBtn[] = "Btn";
+constexpr char kTx[] = "Tx";
+constexpr char kCh[] = "Ch";
+constexpr char kSig[] = "Sig";
+
} // namespace form_fields
} // namespace pdfium
diff --git a/core/fpdfapi/parser/cpdf_crypto_handler.cpp b/core/fpdfapi/parser/cpdf_crypto_handler.cpp
index a87211f..335a57b 100644
--- a/core/fpdfapi/parser/cpdf_crypto_handler.cpp
+++ b/core/fpdfapi/parser/cpdf_crypto_handler.cpp
@@ -28,7 +28,6 @@
constexpr char kContentsKey[] = "Contents";
constexpr char kTypeKey[] = "Type";
-constexpr char kSignTypeValue[] = "Sig";
} // namespace
@@ -40,7 +39,7 @@
const CPDF_Object* type_obj = dictionary->GetDirectObjectFor(kTypeKey);
if (!type_obj)
type_obj = dictionary->GetDirectObjectFor(pdfium::form_fields::kFT);
- return type_obj && type_obj->GetString() == kSignTypeValue;
+ return type_obj && type_obj->GetString() == pdfium::form_fields::kSig;
}
void CPDF_CryptoHandler::CryptBlock(bool bEncrypt,
diff --git a/core/fpdfdoc/cpdf_annotlist.cpp b/core/fpdfdoc/cpdf_annotlist.cpp
index f249ab8..836d5d4 100644
--- a/core/fpdfdoc/cpdf_annotlist.cpp
+++ b/core/fpdfdoc/cpdf_annotlist.cpp
@@ -134,7 +134,7 @@
return;
ByteString field_type = pFieldTypeObj->GetString();
- if (field_type == "Tx") {
+ if (field_type == pdfium::form_fields::kTx) {
CPVT_GenerateAP::GenerateFormAP(pDoc, pAnnotDict,
CPVT_GenerateAP::kTextField);
return;
@@ -143,7 +143,7 @@
CPDF_Object* pFieldFlagsObj =
FPDF_GetFieldAttr(pAnnotDict, pdfium::form_fields::kFf);
uint32_t flags = pFieldFlagsObj ? pFieldFlagsObj->GetInteger() : 0;
- if (field_type == "Ch") {
+ if (field_type == pdfium::form_fields::kCh) {
auto type = (flags & pdfium::form_flags::kChoiceCombo)
? CPVT_GenerateAP::kComboBox
: CPVT_GenerateAP::kListBox;
@@ -151,7 +151,7 @@
return;
}
- if (field_type != "Btn")
+ if (field_type != pdfium::form_fields::kBtn)
return;
if (flags & pdfium::form_flags::kButtonPushbutton)
return;
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index 15b9066..ba15e1e 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -131,7 +131,7 @@
m_bNoExport = true;
}
- if (type_name == "Btn") {
+ if (type_name == pdfium::form_fields::kBtn) {
if (flags & 0x8000) {
m_Type = kRadioButton;
if (flags & 0x4000)
@@ -143,7 +143,7 @@
} else {
m_Type = kCheckBox;
}
- } else if (type_name == "Tx") {
+ } else if (type_name == pdfium::form_fields::kTx) {
if (flags & 0x100000) {
m_Type = kFile;
} else if (flags & 0x2000000) {
@@ -160,7 +160,7 @@
m_Flags |= kFormTextComb;
}
LoadDA();
- } else if (type_name == "Ch") {
+ } else if (type_name == pdfium::form_fields::kCh) {
if (flags & 0x20000) {
m_Type = kComboBox;
if (flags & 0x40000)
@@ -171,7 +171,7 @@
m_Flags |= kFormListMultiSelect;
}
LoadDA();
- } else if (type_name == "Sig") {
+ } else if (type_name == pdfium::form_fields::kSig) {
m_Type = kSign;
}
}
diff --git a/fpdfsdk/cpdfsdk_helpers.cpp b/fpdfsdk/cpdfsdk_helpers.cpp
index 6715c99..18a2c3a 100644
--- a/fpdfsdk/cpdfsdk_helpers.cpp
+++ b/fpdfsdk/cpdfsdk_helpers.cpp
@@ -392,7 +392,7 @@
case CPDF_Annot::Subtype::WIDGET: {
const CPDF_Dictionary* pAnnotDict = pAnnot->GetAnnotDict();
ByteString cbString = pAnnotDict->GetStringFor(pdfium::form_fields::kFT);
- if (cbString == "Sig")
+ if (cbString == pdfium::form_fields::kSig)
RaiseUnSupportError(FPDF_UNSP_ANNOT_SIG);
break;
}