Remove RetainedTreeNode<T>.
This appears to have been unused for some time, following the conversion
to cppgc in xfa.
Change-Id: I5feacd6932ae1b9bf17e4ee64caca5b82d39e2fa
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/100676
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Auto-Submit: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxcrt/BUILD.gn b/core/fxcrt/BUILD.gn
index 00e46d2..867fc0d 100644
--- a/core/fxcrt/BUILD.gn
+++ b/core/fxcrt/BUILD.gn
@@ -78,7 +78,6 @@
"observed_ptr.h",
"pauseindicator_iface.h",
"retain_ptr.h",
- "retained_tree_node.h",
"scoped_set_insertion.h",
"shared_copy_on_write.h",
"small_buffer.h",
@@ -193,7 +192,6 @@
"observed_ptr_unittest.cpp",
"pdfium_span_unittest.cpp",
"retain_ptr_unittest.cpp",
- "retained_tree_node_unittest.cpp",
"scoped_set_insertion_unittest.cpp",
"shared_copy_on_write_unittest.cpp",
"small_buffer_unittest.cpp",
diff --git a/core/fxcrt/retained_tree_node.h b/core/fxcrt/retained_tree_node.h
deleted file mode 100644
index 832a133..0000000
--- a/core/fxcrt/retained_tree_node.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2019 The PDFium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CORE_FXCRT_RETAINED_TREE_NODE_H_
-#define CORE_FXCRT_RETAINED_TREE_NODE_H_
-
-#include "core/fxcrt/retain_ptr.h"
-#include "core/fxcrt/tree_node.h"
-#include "third_party/base/check.h"
-
-namespace fxcrt {
-
-// For DOM/XML-ish trees, where references outside the tree are RetainPtr<T>,
-// and the parent node also "retains" its children but doesn't always have
-// a direct pointer to them.
-template <typename T>
-class RetainedTreeNode : public TreeNode<T> {
- public:
- template <typename U, typename... Args>
- friend RetainPtr<U> pdfium::MakeRetain(Args&&... args);
-
- void AppendFirstChild(const RetainPtr<T>& child) {
- TreeNode<T>::AppendFirstChild(child.Get());
- }
-
- void AppendLastChild(const RetainPtr<T>& child) {
- TreeNode<T>::AppendLastChild(child.Get());
- }
-
- void InsertBefore(const RetainPtr<T>& child, T* other) {
- TreeNode<T>::InsertBefore(child.Get(), other);
- }
-
- void InsertAfter(const RetainPtr<T>& child, T* other) {
- TreeNode<T>::InsertAfter(child.Get(), other);
- }
-
- void RemoveChild(const RetainPtr<T>& child) {
- TreeNode<T>::RemoveChild(child.Get());
- }
-
- void RemoveSelfIfParented() {
- if (T* parent = TreeNode<T>::GetParent()) {
- parent->TreeNode<T>::RemoveChild(
- pdfium::WrapRetain(static_cast<T*>(this)).Get());
- }
- }
-
- protected:
- RetainedTreeNode() = default;
- ~RetainedTreeNode() override {
- while (auto* pChild = TreeNode<T>::GetFirstChild())
- RemoveChild(pdfium::WrapRetain(pChild));
- }
-
- private:
- template <typename U>
- friend struct ReleaseDeleter;
-
- template <typename U>
- friend class RetainPtr;
-
- RetainedTreeNode(const RetainedTreeNode& that) = delete;
- RetainedTreeNode& operator=(const RetainedTreeNode& that) = delete;
-
- void Retain() { ++m_nRefCount; }
- void Release() {
- DCHECK(m_nRefCount > 0);
- if (--m_nRefCount == 0 && !TreeNode<T>::GetParent())
- delete this;
- }
-
- intptr_t m_nRefCount = 0;
-};
-
-} // namespace fxcrt
-
-using fxcrt::RetainedTreeNode;
-
-#endif // CORE_FXCRT_RETAINED_TREE_NODE_H_
diff --git a/core/fxcrt/retained_tree_node_unittest.cpp b/core/fxcrt/retained_tree_node_unittest.cpp
deleted file mode 100644
index 157322b..0000000
--- a/core/fxcrt/retained_tree_node_unittest.cpp
+++ /dev/null
@@ -1,187 +0,0 @@
-// Copyright 2019 The PDFium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "core/fxcrt/retained_tree_node.h"
-
-#include "core/fxcrt/observed_ptr.h"
-#include "core/fxcrt/retain_ptr.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace fxcrt {
-namespace {
-
-class ObservableRetainedTreeNodeForTest
- : public RetainedTreeNode<ObservableRetainedTreeNodeForTest>,
- public Observable {
- public:
- CONSTRUCT_VIA_MAKE_RETAIN;
-
- private:
- ObservableRetainedTreeNodeForTest() = default;
-};
-
-void AddClutterToFront(
- const RetainPtr<ObservableRetainedTreeNodeForTest>& parent) {
- for (int i = 0; i < 4; ++i) {
- parent->AppendFirstChild(
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>());
- }
-}
-
-void AddClutterToBack(
- const RetainPtr<ObservableRetainedTreeNodeForTest>& parent) {
- for (int i = 0; i < 4; ++i) {
- parent->AppendLastChild(
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>());
- }
-}
-
-} // namespace
-
-TEST(RetainedTreeNode, NoParent) {
- ObservedPtr<ObservableRetainedTreeNodeForTest> watcher;
- {
- RetainPtr<ObservableRetainedTreeNodeForTest> ptr =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- EXPECT_FALSE(ptr->HasChild(ptr.Get()));
- watcher = ObservedPtr<ObservableRetainedTreeNodeForTest>(ptr.Get());
- EXPECT_TRUE(watcher.Get());
- }
- EXPECT_FALSE(watcher.Get());
-}
-
-TEST(RetainedTreeNode, FirstHasParent) {
- ObservedPtr<ObservableRetainedTreeNodeForTest> watcher;
- RetainPtr<ObservableRetainedTreeNodeForTest> parent =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- {
- RetainPtr<ObservableRetainedTreeNodeForTest> ptr =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- watcher = ObservedPtr<ObservableRetainedTreeNodeForTest>(ptr.Get());
- parent->AppendFirstChild(ptr);
- EXPECT_FALSE(parent->HasChild(parent.Get()));
- EXPECT_TRUE(parent->HasChild(ptr.Get()));
- EXPECT_TRUE(watcher.Get());
- }
- EXPECT_TRUE(watcher.Get());
- parent->RemoveChild(pdfium::WrapRetain(watcher.Get()));
- EXPECT_FALSE(watcher.Get());
- // Now add some clutter.
- {
- RetainPtr<ObservableRetainedTreeNodeForTest> ptr =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- watcher = ObservedPtr<ObservableRetainedTreeNodeForTest>(ptr.Get());
- parent->AppendFirstChild(ptr);
- AddClutterToFront(parent);
- AddClutterToBack(parent);
- EXPECT_TRUE(watcher.Get());
- }
- EXPECT_TRUE(watcher.Get());
- parent->RemoveChild(pdfium::WrapRetain(watcher.Get()));
- EXPECT_FALSE(watcher.Get());
-}
-
-TEST(RetainedTreeNode, LastHasParent) {
- ObservedPtr<ObservableRetainedTreeNodeForTest> watcher;
- RetainPtr<ObservableRetainedTreeNodeForTest> parent =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- {
- RetainPtr<ObservableRetainedTreeNodeForTest> ptr =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- watcher = ObservedPtr<ObservableRetainedTreeNodeForTest>(ptr.Get());
- parent->AppendLastChild(ptr);
- EXPECT_FALSE(parent->HasChild(parent.Get()));
- EXPECT_TRUE(parent->HasChild(ptr.Get()));
- EXPECT_TRUE(watcher.Get());
- }
- {
- // Now add some clutter.
- RetainPtr<ObservableRetainedTreeNodeForTest> ptr =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- watcher = ObservedPtr<ObservableRetainedTreeNodeForTest>(ptr.Get());
- parent->AppendLastChild(ptr);
- AddClutterToFront(parent);
- AddClutterToBack(parent);
- EXPECT_TRUE(watcher.Get());
- }
- EXPECT_TRUE(watcher.Get());
- parent->RemoveChild(pdfium::WrapRetain(watcher.Get()));
- EXPECT_FALSE(watcher.Get());
-}
-
-TEST(RetainedTreeNode, GrandChildCleanedUp) {
- ObservedPtr<ObservableRetainedTreeNodeForTest> watcher;
- RetainPtr<ObservableRetainedTreeNodeForTest> grandparent =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- {
- RetainPtr<ObservableRetainedTreeNodeForTest> parent =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- grandparent->AppendFirstChild(parent);
- {
- RetainPtr<ObservableRetainedTreeNodeForTest> ptr =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- watcher = ObservedPtr<ObservableRetainedTreeNodeForTest>(ptr.Get());
- parent->AppendFirstChild(ptr);
- EXPECT_TRUE(watcher.Get());
- }
- grandparent->RemoveChild(parent);
- EXPECT_TRUE(watcher.Get());
- }
- EXPECT_FALSE(watcher.Get());
-}
-
-TEST(RetainedTreeNode, RemoveSelf) {
- ObservedPtr<ObservableRetainedTreeNodeForTest> watcher;
- auto parent = pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- {
- auto child = pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- watcher = ObservedPtr<ObservableRetainedTreeNodeForTest>(child.Get());
- parent->AppendFirstChild(child);
- }
- EXPECT_TRUE(watcher.Get());
- watcher->RemoveSelfIfParented();
- EXPECT_FALSE(watcher.Get());
-}
-
-TEST(RetainedTreeNode, InsertBeforeAfter) {
- ObservedPtr<ObservableRetainedTreeNodeForTest> watcher;
- RetainPtr<ObservableRetainedTreeNodeForTest> parent =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
-
- AddClutterToFront(parent);
- {
- RetainPtr<ObservableRetainedTreeNodeForTest> ptr =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
- watcher = ObservedPtr<ObservableRetainedTreeNodeForTest>(ptr.Get());
- parent->AppendFirstChild(ptr);
- parent->InsertBefore(pdfium::WrapRetain(parent->GetFirstChild()),
- parent->GetLastChild());
- parent->InsertAfter(pdfium::WrapRetain(parent->GetLastChild()),
- parent->GetFirstChild());
- EXPECT_TRUE(watcher.Get());
- }
- parent->RemoveChild(pdfium::WrapRetain(watcher.Get()));
- EXPECT_FALSE(watcher.Get());
-}
-
-TEST(RetainedTreeNode, Traversal) {
- RetainPtr<ObservableRetainedTreeNodeForTest> parent =
- pdfium::MakeRetain<ObservableRetainedTreeNodeForTest>();
-
- AddClutterToFront(parent);
- int count = 0;
- for (ObservableRetainedTreeNodeForTest* pNode = parent->GetFirstChild();
- pNode; pNode = pNode->GetNextSibling()) {
- ++count;
- }
- EXPECT_EQ(4, count);
- count = 0;
- for (ObservableRetainedTreeNodeForTest* pNode = parent->GetLastChild(); pNode;
- pNode = pNode->GetPrevSibling()) {
- ++count;
- }
- EXPECT_EQ(4, count);
-}
-
-} // namespace fxcrt
diff --git a/xfa/fxfa/layout/cxfa_layoutitem.h b/xfa/fxfa/layout/cxfa_layoutitem.h
index 3fbe06b..e372196 100644
--- a/xfa/fxfa/layout/cxfa_layoutitem.h
+++ b/xfa/fxfa/layout/cxfa_layoutitem.h
@@ -7,7 +7,6 @@
#ifndef XFA_FXFA_LAYOUT_CXFA_LAYOUTITEM_H_
#define XFA_FXFA_LAYOUT_CXFA_LAYOUTITEM_H_
-#include "core/fxcrt/retained_tree_node.h"
#include "fxjs/gc/gced_tree_node.h"
#include "fxjs/gc/heap.h"
#include "v8/include/cppgc/member.h"