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"