Fix nits in CPDF_NameTree.
- Rename GetRootForTest() to GetRootForTesting(), to be consistent with
CreateForTesting().
- Make |m_pRoot| a const pointer. Move code to find the root dict into
GetNameTreeRoot().
Change-Id: Ida68b2a9f75ed3ab0b4d430b406d3f3daddaa930
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/68193
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfdoc/cpdf_nametree.cpp b/core/fpdfdoc/cpdf_nametree.cpp
index a42376e..549fccb 100644
--- a/core/fpdfdoc/cpdf_nametree.cpp
+++ b/core/fpdfdoc/cpdf_nametree.cpp
@@ -19,6 +19,19 @@
constexpr int kNameTreeMaxRecursion = 32;
+CPDF_Dictionary* GetNameTreeRoot(CPDF_Document* pDoc,
+ const ByteString& category) {
+ CPDF_Dictionary* pRoot = pDoc->GetRoot();
+ if (!pRoot)
+ return nullptr;
+
+ CPDF_Dictionary* pNames = pRoot->GetDictFor("Names");
+ if (!pNames)
+ return nullptr;
+
+ return pNames->GetDictFor(category);
+}
+
std::pair<WideString, WideString> GetNodeLimitsMaybeSwap(CPDF_Array* pLimits) {
ASSERT(pLimits);
WideString csLeft = pLimits->GetUnicodeTextAt(0);
@@ -298,17 +311,8 @@
CPDF_NameTree::CPDF_NameTree(CPDF_Dictionary* pRoot) : m_pRoot(pRoot) {}
-CPDF_NameTree::CPDF_NameTree(CPDF_Document* pDoc, const ByteString& category) {
- CPDF_Dictionary* pRoot = pDoc->GetRoot();
- if (!pRoot)
- return;
-
- CPDF_Dictionary* pNames = pRoot->GetDictFor("Names");
- if (!pNames)
- return;
-
- m_pRoot.Reset(pNames->GetDictFor(category));
-}
+CPDF_NameTree::CPDF_NameTree(CPDF_Document* pDoc, const ByteString& category)
+ : CPDF_NameTree(GetNameTreeRoot(pDoc, category)) {}
CPDF_NameTree::~CPDF_NameTree() = default;
diff --git a/core/fpdfdoc/cpdf_nametree.h b/core/fpdfdoc/cpdf_nametree.h
index 6ad1c1e..01d85aa 100644
--- a/core/fpdfdoc/cpdf_nametree.h
+++ b/core/fpdfdoc/cpdf_nametree.h
@@ -35,12 +35,12 @@
CPDF_Array* LookupNamedDest(CPDF_Document* pDoc, const WideString& sName);
size_t GetCount() const;
- CPDF_Dictionary* GetRootForTest() const { return m_pRoot.Get(); }
+ CPDF_Dictionary* GetRootForTesting() const { return m_pRoot.Get(); }
private:
explicit CPDF_NameTree(CPDF_Dictionary* pRoot);
- RetainPtr<CPDF_Dictionary> m_pRoot;
+ const RetainPtr<CPDF_Dictionary> m_pRoot;
};
#endif // CORE_FPDFDOC_CPDF_NAMETREE_H_
diff --git a/core/fpdfdoc/cpdf_nametree_unittest.cpp b/core/fpdfdoc/cpdf_nametree_unittest.cpp
index 6ef0d1b..9e3f483 100644
--- a/core/fpdfdoc/cpdf_nametree_unittest.cpp
+++ b/core/fpdfdoc/cpdf_nametree_unittest.cpp
@@ -208,7 +208,7 @@
// Check that the node on the first level has the expected limits.
CPDF_Dictionary* pKid1 =
- name_tree->GetRootForTest()->GetArrayFor("Kids")->GetDictAt(0);
+ name_tree->GetRootForTesting()->GetArrayFor("Kids")->GetDictAt(0);
ASSERT_TRUE(pKid1);
CheckLimitsArray(pKid1, "0.txt", "99.txt");
@@ -255,7 +255,7 @@
// Retrieve the kid dictionaries.
CPDF_Dictionary* pKid1 =
- name_tree->GetRootForTest()->GetArrayFor("Kids")->GetDictAt(0);
+ name_tree->GetRootForTesting()->GetArrayFor("Kids")->GetDictAt(0);
ASSERT_TRUE(pKid1);
CPDF_Dictionary* pKid2 = pKid1->GetArrayFor("Kids")->GetDictAt(0);
ASSERT_TRUE(pKid2);
@@ -325,9 +325,9 @@
EXPECT_EQ(555, name_tree->LookupValue(L"5.txt")->GetInteger());
EXPECT_TRUE(name_tree->LookupValueAndName(0, &csName));
EXPECT_STREQ(L"5.txt", csName.c_str());
- EXPECT_EQ(1u, name_tree->GetRootForTest()->GetArrayFor("Kids")->size());
+ EXPECT_EQ(1u, name_tree->GetRootForTesting()->GetArrayFor("Kids")->size());
EXPECT_TRUE(name_tree->DeleteValueAndName(0));
- EXPECT_EQ(0u, name_tree->GetRootForTest()->GetArrayFor("Kids")->size());
+ EXPECT_EQ(0u, name_tree->GetRootForTesting()->GetArrayFor("Kids")->size());
// Check that the tree is now empty.
EXPECT_EQ(0u, name_tree->GetCount());