Add constants for common form field dictionary entries.
BUG=pdfium:1049
Change-Id: I34c8ab59ce684de2e06ab6c3c2acfa46d3b0acb9
Reviewed-on: https://pdfium-review.googlesource.com/c/51232
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/constants/BUILD.gn b/constants/BUILD.gn
index 9216738..30c6978 100644
--- a/constants/BUILD.gn
+++ b/constants/BUILD.gn
@@ -9,6 +9,7 @@
sources = [
"annotation_common.h",
"annotation_flags.h",
+ "form_fields.h",
"form_flags.h",
"page_object.h",
"stream_dict_common.h",
diff --git a/constants/form_fields.h b/constants/form_fields.h
new file mode 100644
index 0000000..248991b
--- /dev/null
+++ b/constants/form_fields.h
@@ -0,0 +1,27 @@
+// Copyright 2019 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_FIELDS_H_
+#define CONSTANTS_FORM_FIELDS_H_
+
+namespace pdfium {
+namespace form_fields {
+
+// PDF 1.7 spec, table 8.69.
+// Entries common to all field dictionaries.
+constexpr char kFT[] = "FT";
+constexpr char kParent[] = "Parent";
+constexpr char kKids[] = "Kids";
+constexpr char kT[] = "T";
+constexpr char kTU[] = "TU";
+constexpr char kTM[] = "TM";
+constexpr char kFf[] = "Ff";
+constexpr char kV[] = "V";
+constexpr char kDV[] = "DV";
+constexpr char kAA[] = "AA";
+
+} // namespace form_fields
+} // namespace pdfium
+
+#endif // CONSTANTS_FORM_FIELDS_H_
diff --git a/core/fpdfapi/parser/cpdf_crypto_handler.cpp b/core/fpdfapi/parser/cpdf_crypto_handler.cpp
index d0335fc..a87211f 100644
--- a/core/fpdfapi/parser/cpdf_crypto_handler.cpp
+++ b/core/fpdfapi/parser/cpdf_crypto_handler.cpp
@@ -12,6 +12,7 @@
#include <stack>
#include <utility>
+#include "constants/form_fields.h"
#include "core/fdrm/fx_crypt.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_number.h"
@@ -27,7 +28,6 @@
constexpr char kContentsKey[] = "Contents";
constexpr char kTypeKey[] = "Type";
-constexpr char kFTKey[] = "FT";
constexpr char kSignTypeValue[] = "Sig";
} // namespace
@@ -39,7 +39,7 @@
return false;
const CPDF_Object* type_obj = dictionary->GetDirectObjectFor(kTypeKey);
if (!type_obj)
- type_obj = dictionary->GetDirectObjectFor(kFTKey);
+ type_obj = dictionary->GetDirectObjectFor(pdfium::form_fields::kFT);
return type_obj && type_obj->GetString() == kSignTypeValue;
}
@@ -302,7 +302,8 @@
const CPDF_Dictionary* parent_dict =
walker.GetParent() ? walker.GetParent()->GetDict() : nullptr;
if (walker.dictionary_key() == kContentsKey &&
- (parent_dict->KeyExist(kTypeKey) || parent_dict->KeyExist(kFTKey))) {
+ (parent_dict->KeyExist(kTypeKey) ||
+ parent_dict->KeyExist(pdfium::form_fields::kFT))) {
// This object may be contents of signature dictionary.
// But now values of 'Type' and 'FT' of dictionary keys are encrypted,
// and we can not check this.
diff --git a/core/fpdfdoc/cpdf_annotlist.cpp b/core/fpdfdoc/cpdf_annotlist.cpp
index 482c79e..f249ab8 100644
--- a/core/fpdfdoc/cpdf_annotlist.cpp
+++ b/core/fpdfdoc/cpdf_annotlist.cpp
@@ -12,6 +12,7 @@
#include "constants/annotation_common.h"
#include "constants/annotation_flags.h"
+#include "constants/form_fields.h"
#include "constants/form_flags.h"
#include "core/fpdfapi/page/cpdf_page.h"
#include "core/fpdfapi/parser/cpdf_array.h"
@@ -88,8 +89,9 @@
auto pAnnotDict = pDocument->New<CPDF_Dictionary>();
pAnnotDict->SetNewFor<CPDF_Name>(pdfium::annotation::kType, "Annot");
pAnnotDict->SetNewFor<CPDF_Name>(pdfium::annotation::kSubtype, "Popup");
- pAnnotDict->SetNewFor<CPDF_String>("T", pParentDict->GetStringFor("T"),
- false);
+ pAnnotDict->SetNewFor<CPDF_String>(
+ pdfium::form_fields::kT,
+ pParentDict->GetStringFor(pdfium::form_fields::kT), false);
pAnnotDict->SetNewFor<CPDF_String>(pdfium::annotation::kContents,
sContents.ToUTF8(), false);
@@ -126,7 +128,8 @@
return;
}
- CPDF_Object* pFieldTypeObj = FPDF_GetFieldAttr(pAnnotDict, "FT");
+ CPDF_Object* pFieldTypeObj =
+ FPDF_GetFieldAttr(pAnnotDict, pdfium::form_fields::kFT);
if (!pFieldTypeObj)
return;
@@ -137,7 +140,8 @@
return;
}
- CPDF_Object* pFieldFlagsObj = FPDF_GetFieldAttr(pAnnotDict, "Ff");
+ CPDF_Object* pFieldFlagsObj =
+ FPDF_GetFieldAttr(pAnnotDict, pdfium::form_fields::kFf);
uint32_t flags = pFieldFlagsObj ? pFieldFlagsObj->GetInteger() : 0;
if (field_type == "Ch") {
auto type = (flags & pdfium::form_flags::kChoiceCombo)
@@ -154,7 +158,8 @@
if (pAnnotDict->KeyExist(pdfium::annotation::kAS))
return;
- CPDF_Dictionary* pParentDict = pAnnotDict->GetDictFor("Parent");
+ CPDF_Dictionary* pParentDict =
+ pAnnotDict->GetDictFor(pdfium::form_fields::kParent);
if (!pParentDict || !pParentDict->KeyExist(pdfium::annotation::kAS))
return;
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index 1c9ea00..15b9066 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -10,6 +10,7 @@
#include <set>
#include <utility>
+#include "constants/form_fields.h"
#include "constants/form_flags.h"
#include "core/fpdfapi/parser/cfdf_document.h"
#include "core/fpdfapi/parser/cpdf_array.h"
@@ -58,8 +59,8 @@
if (pAttr)
return pAttr;
- return FPDF_GetFieldAttrRecursive(pFieldDict->GetDictFor("Parent"), name,
- nLevel + 1);
+ return FPDF_GetFieldAttrRecursive(
+ pFieldDict->GetDictFor(pdfium::form_fields::kParent), name, nLevel + 1);
}
} // namespace
@@ -88,14 +89,14 @@
CPDF_Dictionary* pLevel = pFieldDict;
while (pLevel) {
visited.insert(pLevel);
- WideString short_name = pLevel->GetUnicodeTextFor("T");
+ WideString short_name = pLevel->GetUnicodeTextFor(pdfium::form_fields::kT);
if (!short_name.IsEmpty()) {
if (full_name.IsEmpty())
full_name = std::move(short_name);
else
full_name = short_name + L'.' + full_name;
}
- pLevel = pLevel->GetDictFor("Parent");
+ pLevel = pLevel->GetDictFor(pdfium::form_fields::kParent);
if (pdfium::ContainsKey(visited, pLevel))
break;
}
@@ -111,9 +112,11 @@
CPDF_FormField::~CPDF_FormField() {}
void CPDF_FormField::InitFieldFlags() {
- const CPDF_Object* ft_attr = FPDF_GetFieldAttr(m_pDict.Get(), "FT");
+ const CPDF_Object* ft_attr =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kFT);
ByteString type_name = ft_attr ? ft_attr->GetString() : ByteString();
- const CPDF_Object* ff_attr = FPDF_GetFieldAttr(m_pDict.Get(), "Ff");
+ const CPDF_Object* ff_attr =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kFf);
uint32_t flags = ff_attr ? ff_attr->GetInteger() : 0;
if (flags & pdfium::form_flags::kReadOnly) {
m_Flags |= pdfium::form_flags::kReadOnly;
@@ -212,12 +215,14 @@
case kRichText:
case kFile:
default: {
- const CPDF_Object* pDV = FPDF_GetFieldAttr(m_pDict.Get(), "DV");
+ const CPDF_Object* pDV =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kDV);
WideString csDValue;
if (pDV)
csDValue = pDV->GetUnicodeText();
- const CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict.Get(), "V");
+ const CPDF_Object* pV =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kV);
WideString csValue;
if (pV)
csValue = pV->GetUnicodeText();
@@ -235,14 +240,16 @@
if (!pClone)
return false;
- m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("V"));
- m_pDict->SetFor("V", std::move(pClone));
+ m_pForm->GetDocument()->AddOrphan(
+ m_pDict->RemoveFor(pdfium::form_fields::kV));
+ m_pDict->SetFor(pdfium::form_fields::kV, std::move(pClone));
if (pRV) {
m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("RV"));
m_pDict->SetFor("RV", pDV->Clone());
}
} else {
- m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("V"));
+ m_pForm->GetDocument()->AddOrphan(
+ m_pDict->RemoveFor(pdfium::form_fields::kV));
m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("RV"));
}
if (notify == NotificationOption::kNotify)
@@ -294,22 +301,26 @@
}
CPDF_AAction CPDF_FormField::GetAdditionalAction() const {
- const CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict.Get(), "AA");
+ const CPDF_Object* pObj =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kAA);
return CPDF_AAction(pObj ? pObj->GetDict() : nullptr);
}
WideString CPDF_FormField::GetAlternateName() const {
- const CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict.Get(), "TU");
+ const CPDF_Object* pObj =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kTU);
return pObj ? pObj->GetUnicodeText() : WideString();
}
WideString CPDF_FormField::GetMappingName() const {
- const CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict.Get(), "TM");
+ const CPDF_Object* pObj =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kTM);
return pObj ? pObj->GetUnicodeText() : WideString();
}
uint32_t CPDF_FormField::GetFieldFlags() const {
- const CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict.Get(), "Ff");
+ const CPDF_Object* pObj =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kFf);
return pObj ? pObj->GetInteger() : 0;
}
@@ -327,13 +338,14 @@
return GetCheckValue(bDefault);
const CPDF_Object* pValue =
- FPDF_GetFieldAttr(m_pDict.Get(), bDefault ? "DV" : "V");
+ FPDF_GetFieldAttr(m_pDict.Get(), bDefault ? pdfium::form_fields::kDV
+ : pdfium::form_fields::kV);
if (!pValue) {
if (!bDefault) {
if (m_Type == kRichText)
- pValue = FPDF_GetFieldAttr(m_pDict.Get(), "V");
+ pValue = FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kV);
if (!pValue && m_Type != kText)
- pValue = FPDF_GetFieldAttr(m_pDict.Get(), "DV");
+ pValue = FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kDV);
}
if (!pValue)
return WideString();
@@ -380,7 +392,8 @@
!NotifyBeforeValueChange(csValue)) {
return false;
}
- ByteString key(bDefault ? "DV" : "V");
+ ByteString key(bDefault ? pdfium::form_fields::kDV
+ : pdfium::form_fields::kV);
m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor(key));
m_pDict->SetNewFor<CPDF_String>(key, csValue);
int iIndex = FindOptionValue(csValue);
@@ -447,7 +460,8 @@
}
int CPDF_FormField::CountSelectedItems() const {
- const CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict.Get(), "V");
+ const CPDF_Object* pValue =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kV);
if (!pValue) {
pValue = FPDF_GetFieldAttr(m_pDict.Get(), "I");
if (!pValue)
@@ -461,7 +475,8 @@
}
int CPDF_FormField::GetSelectedIndex(int index) const {
- const CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict.Get(), "V");
+ const CPDF_Object* pValue =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kV);
if (!pValue) {
pValue = FPDF_GetFieldAttr(m_pDict.Get(), "I");
if (!pValue)
@@ -505,7 +520,8 @@
if (!NotifyListOrComboBoxBeforeChange(csValue))
return false;
}
- m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("V"));
+ m_pForm->GetDocument()->AddOrphan(
+ m_pDict->RemoveFor(pdfium::form_fields::kV));
m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("I"));
if (notify == NotificationOption::kNotify)
NotifyListOrComboBoxAfterChange();
@@ -520,7 +536,8 @@
return true;
WideString opt_value = GetOptionValue(index);
- const CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict.Get(), "V");
+ const CPDF_Object* pValue =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kV);
if (!pValue) {
pValue = FPDF_GetFieldAttr(m_pDict.Get(), "I");
if (!pValue)
@@ -581,7 +598,7 @@
void CPDF_FormField::SetItemSelectionSelected(int index,
const WideString& opt_value) {
if (GetType() != kListBox) {
- m_pDict->SetNewFor<CPDF_String>("V", opt_value);
+ m_pDict->SetNewFor<CPDF_String>(pdfium::form_fields::kV, opt_value);
CPDF_Array* pI = m_pDict->SetNewFor<CPDF_Array>("I");
pI->AddNew<CPDF_Number>(index);
return;
@@ -589,11 +606,11 @@
SelectOption(index, true, NotificationOption::kDoNotNotify);
if (!(m_Flags & kFormListMultiSelect)) {
- m_pDict->SetNewFor<CPDF_String>("V", opt_value);
+ m_pDict->SetNewFor<CPDF_String>(pdfium::form_fields::kV, opt_value);
return;
}
- CPDF_Array* pArray = m_pDict->SetNewFor<CPDF_Array>("V");
+ CPDF_Array* pArray = m_pDict->SetNewFor<CPDF_Array>(pdfium::form_fields::kV);
for (int i = 0; i < CountOptions(); i++) {
if (i == index || IsItemSelected(i))
pArray->AddNew<CPDF_String>(GetOptionValue(i));
@@ -602,20 +619,24 @@
void CPDF_FormField::SetItemSelectionUnselected(int index,
const WideString& opt_value) {
- const CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict.Get(), "V");
+ const CPDF_Object* pValue =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kV);
if (!pValue)
return;
if (GetType() != kListBox) {
- m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("V"));
+ m_pForm->GetDocument()->AddOrphan(
+ m_pDict->RemoveFor(pdfium::form_fields::kV));
m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("I"));
return;
}
SelectOption(index, false, NotificationOption::kDoNotNotify);
if (pValue->IsString()) {
- if (pValue->GetUnicodeText() == opt_value)
- m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("V"));
+ if (pValue->GetUnicodeText() == opt_value) {
+ m_pForm->GetDocument()->AddOrphan(
+ m_pDict->RemoveFor(pdfium::form_fields::kV));
+ }
return;
}
@@ -628,8 +649,9 @@
pArray->AddNew<CPDF_String>(GetOptionValue(i));
}
if (pArray->size() > 0) {
- m_pForm->GetDocument()->AddOrphan(m_pDict->RemoveFor("V"));
- m_pDict->SetFor("V", std::move(pArray));
+ m_pForm->GetDocument()->AddOrphan(
+ m_pDict->RemoveFor(pdfium::form_fields::kV));
+ m_pDict->SetFor(pdfium::form_fields::kV, std::move(pArray));
}
}
@@ -643,7 +665,8 @@
int CPDF_FormField::GetDefaultSelectedItem() const {
ASSERT(GetType() == kComboBox || GetType() == kListBox);
- const CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict.Get(), "DV");
+ const CPDF_Object* pValue =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kDV);
if (!pValue)
return -1;
WideString csDV = pValue->GetUnicodeText();
@@ -737,17 +760,19 @@
if (!ToArray(pOpt)) {
ByteString csBExport = PDF_EncodeText(csWExport);
if (bChecked) {
- m_pDict->SetNewFor<CPDF_Name>("V", csBExport);
+ m_pDict->SetNewFor<CPDF_Name>(pdfium::form_fields::kV, csBExport);
} else {
ByteString csV;
- const CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict.Get(), "V");
+ const CPDF_Object* pV =
+ FPDF_GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kV);
if (pV)
csV = pV->GetString();
if (csV == csBExport)
- m_pDict->SetNewFor<CPDF_Name>("V", "Off");
+ m_pDict->SetNewFor<CPDF_Name>(pdfium::form_fields::kV, "Off");
}
} else if (bChecked) {
- m_pDict->SetNewFor<CPDF_Name>("V", ByteString::Format("%d", iControlIndex));
+ m_pDict->SetNewFor<CPDF_Name>(pdfium::form_fields::kV,
+ ByteString::Format("%d", iControlIndex));
}
if (notify == NotificationOption::kNotify && m_pForm->GetFormNotify())
m_pForm->GetFormNotify()->AfterCheckedStatusChange(this);
diff --git a/core/fpdfdoc/cpdf_interactiveform.cpp b/core/fpdfdoc/cpdf_interactiveform.cpp
index 5555904..5507763 100644
--- a/core/fpdfdoc/cpdf_interactiveform.cpp
+++ b/core/fpdfdoc/cpdf_interactiveform.cpp
@@ -9,6 +9,7 @@
#include <utility>
#include <vector>
+#include "constants/form_fields.h"
#include "constants/stream_dict_common.h"
#include "core/fpdfapi/font/cpdf_font.h"
#include "core/fpdfapi/font/cpdf_fontencoding.h"
@@ -841,7 +842,7 @@
return;
uint32_t dwParentObjNum = pFieldDict->GetObjNum();
- CPDF_Array* pKids = pFieldDict->GetArrayFor("Kids");
+ CPDF_Array* pKids = pFieldDict->GetArrayFor(pdfium::form_fields::kKids);
if (!pKids) {
AddTerminalField(pFieldDict);
return;
@@ -851,7 +852,8 @@
if (!pFirstKid)
return;
- if (pFirstKid->KeyExist("T") || pFirstKid->KeyExist("Kids")) {
+ if (pFirstKid->KeyExist(pdfium::form_fields::kT) ||
+ pFirstKid->KeyExist(pdfium::form_fields::kKids)) {
for (size_t i = 0; i < pKids->size(); i++) {
CPDF_Dictionary* pChildDict = pKids->GetDictAt(i);
if (pChildDict) {
@@ -885,10 +887,11 @@
}
void CPDF_InteractiveForm::AddTerminalField(CPDF_Dictionary* pFieldDict) {
- if (!pFieldDict->KeyExist("FT")) {
+ if (!pFieldDict->KeyExist(pdfium::form_fields::kFT)) {
// Key "FT" is required for terminal fields, it is also inheritable.
- CPDF_Dictionary* pParentDict = pFieldDict->GetDictFor("Parent");
- if (!pParentDict || !pParentDict->KeyExist("FT"))
+ CPDF_Dictionary* pParentDict =
+ pFieldDict->GetDictFor(pdfium::form_fields::kParent);
+ if (!pParentDict || !pParentDict->KeyExist(pdfium::form_fields::kFT))
return;
}
@@ -901,42 +904,45 @@
pField = m_pFieldTree->GetField(csWName);
if (!pField) {
CPDF_Dictionary* pParent = pFieldDict;
- if (!pFieldDict->KeyExist("T") &&
+ if (!pFieldDict->KeyExist(pdfium::form_fields::kT) &&
pFieldDict->GetStringFor("Subtype") == "Widget") {
- pParent = pFieldDict->GetDictFor("Parent");
+ pParent = pFieldDict->GetDictFor(pdfium::form_fields::kParent);
if (!pParent)
pParent = pFieldDict;
}
- if (pParent && pParent != pFieldDict && !pParent->KeyExist("FT")) {
- if (pFieldDict->KeyExist("FT")) {
- CPDF_Object* pFTValue = pFieldDict->GetDirectObjectFor("FT");
+ if (pParent && pParent != pFieldDict &&
+ !pParent->KeyExist(pdfium::form_fields::kFT)) {
+ if (pFieldDict->KeyExist(pdfium::form_fields::kFT)) {
+ CPDF_Object* pFTValue =
+ pFieldDict->GetDirectObjectFor(pdfium::form_fields::kFT);
if (pFTValue)
- pParent->SetFor("FT", pFTValue->Clone());
+ pParent->SetFor(pdfium::form_fields::kFT, pFTValue->Clone());
}
- if (pFieldDict->KeyExist("Ff")) {
- CPDF_Object* pFfValue = pFieldDict->GetDirectObjectFor("Ff");
+ if (pFieldDict->KeyExist(pdfium::form_fields::kFf)) {
+ CPDF_Object* pFfValue =
+ pFieldDict->GetDirectObjectFor(pdfium::form_fields::kFf);
if (pFfValue)
- pParent->SetFor("Ff", pFfValue->Clone());
+ pParent->SetFor(pdfium::form_fields::kFf, pFfValue->Clone());
}
}
auto newField = pdfium::MakeUnique<CPDF_FormField>(this, pParent);
pField = newField.get();
- CPDF_Object* pTObj = pDict->GetObjectFor("T");
+ CPDF_Object* pTObj = pDict->GetObjectFor(pdfium::form_fields::kT);
if (ToReference(pTObj)) {
std::unique_ptr<CPDF_Object> pClone = pTObj->CloneDirectObject();
if (pClone)
- pDict->SetFor("T", std::move(pClone));
+ pDict->SetFor(pdfium::form_fields::kT, std::move(pClone));
else
- pDict->SetNewFor<CPDF_Name>("T", ByteString());
+ pDict->SetNewFor<CPDF_Name>(pdfium::form_fields::kT, ByteString());
}
if (!m_pFieldTree->SetField(csWName, std::move(newField)))
return;
}
- CPDF_Array* pKids = pFieldDict->GetArrayFor("Kids");
+ CPDF_Array* pKids = pFieldDict->GetArrayFor(pdfium::form_fields::kKids);
if (pKids) {
for (size_t i = 0; i < pKids->size(); i++) {
CPDF_Dictionary* pKid = pKids->GetDictAt(i);
@@ -990,8 +996,10 @@
bFind = pdfium::ContainsValue(*fields, pField);
if (bIncludeOrExclude == bFind) {
const CPDF_Dictionary* pFieldDict = pField->GetDict();
- if (pField->IsRequired() && pFieldDict->GetStringFor("V").IsEmpty())
+ if (pField->IsRequired() &&
+ pFieldDict->GetStringFor(pdfium::form_fields::kV).IsEmpty()) {
return false;
+ }
}
}
return true;
@@ -1047,26 +1055,29 @@
continue;
if ((dwFlags & 0x02) != 0 &&
- pField->GetDict()->GetStringFor("V").IsEmpty()) {
+ pField->GetDict()->GetStringFor(pdfium::form_fields::kV).IsEmpty()) {
continue;
}
WideString fullname = FPDF_GetFullName(pField->GetFieldDict());
auto pFieldDict = pDoc->New<CPDF_Dictionary>();
- pFieldDict->SetNewFor<CPDF_String>("T", fullname);
+ pFieldDict->SetNewFor<CPDF_String>(pdfium::form_fields::kT, fullname);
if (pField->GetType() == CPDF_FormField::kCheckBox ||
pField->GetType() == CPDF_FormField::kRadioButton) {
WideString csExport = pField->GetCheckValue(false);
ByteString csBExport = PDF_EncodeText(csExport);
CPDF_Object* pOpt = FPDF_GetFieldAttr(pField->GetDict(), "Opt");
- if (pOpt)
- pFieldDict->SetNewFor<CPDF_String>("V", csBExport, false);
- else
- pFieldDict->SetNewFor<CPDF_Name>("V", csBExport);
+ if (pOpt) {
+ pFieldDict->SetNewFor<CPDF_String>(pdfium::form_fields::kV, csBExport,
+ false);
+ } else {
+ pFieldDict->SetNewFor<CPDF_Name>(pdfium::form_fields::kV, csBExport);
+ }
} else {
- CPDF_Object* pV = FPDF_GetFieldAttr(pField->GetDict(), "V");
+ CPDF_Object* pV =
+ FPDF_GetFieldAttr(pField->GetDict(), pdfium::form_fields::kV);
if (pV)
- pFieldDict->SetFor("V", pV->CloneDirectObject());
+ pFieldDict->SetFor(pdfium::form_fields::kV, pV->CloneDirectObject());
}
pFields->Add(std::move(pFieldDict));
}
diff --git a/core/fpdfdoc/cpvt_generateap.cpp b/core/fpdfdoc/cpvt_generateap.cpp
index 3117253..8f28c65 100644
--- a/core/fpdfdoc/cpvt_generateap.cpp
+++ b/core/fpdfdoc/cpvt_generateap.cpp
@@ -12,6 +12,7 @@
#include <utility>
#include "constants/annotation_common.h"
+#include "constants/form_fields.h"
#include "core/fpdfapi/font/cpdf_font.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_boolean.h"
@@ -365,7 +366,7 @@
const CPDF_Dictionary& pAnnotDict,
CPDF_Font* pDefFont,
const ByteString& sFontName) {
- WideString swValue(pAnnotDict.GetUnicodeTextFor("T"));
+ WideString swValue(pAnnotDict.GetUnicodeTextFor(pdfium::form_fields::kT));
swValue += L'\n';
swValue += pAnnotDict.GetUnicodeTextFor(pdfium::annotation::kContents);
CPVT_FontMap map(pDoc, nullptr, pDefFont, sFontName);
@@ -1079,15 +1080,18 @@
switch (type) {
case CPVT_GenerateAP::kTextField: {
WideString swValue =
- FPDF_GetFieldAttr(pAnnotDict, "V")
- ? FPDF_GetFieldAttr(pAnnotDict, "V")->GetUnicodeText()
+ FPDF_GetFieldAttr(pAnnotDict, pdfium::form_fields::kV)
+ ? FPDF_GetFieldAttr(pAnnotDict, pdfium::form_fields::kV)
+ ->GetUnicodeText()
: WideString();
int32_t nAlign = FPDF_GetFieldAttr(pAnnotDict, "Q")
? FPDF_GetFieldAttr(pAnnotDict, "Q")->GetInteger()
: 0;
- uint32_t dwFlags = FPDF_GetFieldAttr(pAnnotDict, "Ff")
- ? FPDF_GetFieldAttr(pAnnotDict, "Ff")->GetInteger()
- : 0;
+ uint32_t dwFlags =
+ FPDF_GetFieldAttr(pAnnotDict, pdfium::form_fields::kFf)
+ ? FPDF_GetFieldAttr(pAnnotDict, pdfium::form_fields::kFf)
+ ->GetInteger()
+ : 0;
uint32_t dwMaxLen =
FPDF_GetFieldAttr(pAnnotDict, "MaxLen")
? FPDF_GetFieldAttr(pAnnotDict, "MaxLen")->GetInteger()
@@ -1150,8 +1154,9 @@
}
case CPVT_GenerateAP::kComboBox: {
WideString swValue =
- FPDF_GetFieldAttr(pAnnotDict, "V")
- ? FPDF_GetFieldAttr(pAnnotDict, "V")->GetUnicodeText()
+ FPDF_GetFieldAttr(pAnnotDict, pdfium::form_fields::kV)
+ ? FPDF_GetFieldAttr(pAnnotDict, pdfium::form_fields::kV)
+ ->GetUnicodeText()
: WideString();
CPVT_FontMap map(
pDoc, pStreamDict ? pStreamDict->GetDictFor("Resources") : nullptr,
diff --git a/fpdfsdk/cpdfsdk_helpers.cpp b/fpdfsdk/cpdfsdk_helpers.cpp
index 2a64f5f..6715c99 100644
--- a/fpdfsdk/cpdfsdk_helpers.cpp
+++ b/fpdfsdk/cpdfsdk_helpers.cpp
@@ -6,6 +6,7 @@
#include "fpdfsdk/cpdfsdk_helpers.h"
+#include "constants/form_fields.h"
#include "constants/stream_dict_common.h"
#include "core/fpdfapi/cpdf_modulemgr.h"
#include "core/fpdfapi/page/cpdf_page.h"
@@ -390,7 +391,7 @@
break;
case CPDF_Annot::Subtype::WIDGET: {
const CPDF_Dictionary* pAnnotDict = pAnnot->GetAnnotDict();
- ByteString cbString = pAnnotDict->GetStringFor("FT");
+ ByteString cbString = pAnnotDict->GetStringFor(pdfium::form_fields::kFT);
if (cbString == "Sig")
RaiseUnSupportError(FPDF_UNSP_ANNOT_SIG);
break;