[go: nahoru, domu]

[Code Health] Remove a use of base::SupportsWeakPtr. (net/dns)

Bug: 40485134
Change-Id: If8697f456037d6c2b6e3c767e83c0f34d8539e77
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5634532
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Eric Orth <ericorth@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1315837}
diff --git a/net/dns/host_resolver_dns_task.cc b/net/dns/host_resolver_dns_task.cc
index 77b56a0..2c14414 100644
--- a/net/dns/host_resolver_dns_task.cc
+++ b/net/dns/host_resolver_dns_task.cc
@@ -631,8 +631,9 @@
     // Sort() potentially calls OnTransactionSorted() synchronously.
     client_->GetAddressSorter()->Sort(
         endpoints_to_sort,
-        base::BindOnce(&HostResolverDnsTask::OnTransactionSorted, AsWeakPtr(),
-                       insertion_result.first, std::move(transaction_results)));
+        base::BindOnce(&HostResolverDnsTask::OnTransactionSorted,
+                       weak_ptr_factory_.GetWeakPtr(), insertion_result.first,
+                       std::move(transaction_results)));
   } else {
     HandleTransactionResults(std::move(transaction_info),
                              std::move(transaction_results));
@@ -831,7 +832,8 @@
       // Sort addresses if needed.  Sort could complete synchronously.
       client_->GetAddressSorter()->Sort(
           ip_endpoints,
-          base::BindOnce(&HostResolverDnsTask::OnSortComplete, AsWeakPtr(),
+          base::BindOnce(&HostResolverDnsTask::OnSortComplete,
+                         weak_ptr_factory_.GetWeakPtr(),
                          tick_clock_->NowTicks(), std::move(results), secure_));
       return;
     }
diff --git a/net/dns/host_resolver_dns_task.h b/net/dns/host_resolver_dns_task.h
index 48c1a2f..388546a 100644
--- a/net/dns/host_resolver_dns_task.h
+++ b/net/dns/host_resolver_dns_task.h
@@ -40,8 +40,7 @@
 // a DNS stub resolver. One DnsTransaction is created for each resolution
 // needed, which for AF_UNSPEC resolutions includes both A and AAAA. The
 // transactions are scheduled separately and started separately.
-class NET_EXPORT_PRIVATE HostResolverDnsTask
-    : public base::SupportsWeakPtr<HostResolverDnsTask> {
+class NET_EXPORT_PRIVATE HostResolverDnsTask final {
  public:
   using Results = std::set<std::unique_ptr<HostResolverInternalResult>>;
 
@@ -114,6 +113,10 @@
 
   void StartNextTransaction();
 
+  base::WeakPtr<HostResolverDnsTask> AsWeakPtr() {
+    return weak_ptr_factory_.GetWeakPtr();
+  }
+
  private:
   enum class TransactionErrorBehavior {
     // Errors lead to task fallback (immediately unless another pending/started
@@ -258,6 +261,8 @@
   bool fallback_available_;
 
   const HostResolver::HttpsSvcbOptions https_svcb_options_;
+
+  base::WeakPtrFactory<HostResolverDnsTask> weak_ptr_factory_{this};
 };
 
 }  // namespace net
diff --git a/net/dns/mdns_client_impl.cc b/net/dns/mdns_client_impl.cc
index 9d6d8b9..8ad8398 100644
--- a/net/dns/mdns_client_impl.cc
+++ b/net/dns/mdns_client_impl.cc
@@ -423,7 +423,7 @@
     // happens while iterating over the observer list.
     base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask(
         FROM_HERE, base::BindOnce(&MDnsClientImpl::Core::CleanupObserverList,
-                                  AsWeakPtr(), key));
+                                  weak_ptr_factory_.GetWeakPtr(), key));
   }
 }
 
@@ -628,8 +628,8 @@
     return;
   }
 
-  next_refresh_.Reset(
-      base::BindRepeating(&MDnsListenerImpl::DoRefresh, AsWeakPtr()));
+  next_refresh_.Reset(base::BindRepeating(&MDnsListenerImpl::DoRefresh,
+                                          weak_ptr_factory_.GetWeakPtr()));
 
   // Schedule refreshes at both 85% and 95% of the original TTL. These will both
   // be canceled and rescheduled if the record's TTL is updated due to a
@@ -680,7 +680,7 @@
   DCHECK(!started_);
   started_ = true;
 
-  base::WeakPtr<MDnsTransactionImpl> weak_this = AsWeakPtr();
+  base::WeakPtr<MDnsTransactionImpl> weak_this = weak_ptr_factory_.GetWeakPtr();
   if (flags_ & MDnsTransaction::QUERY_CACHE) {
     ServeRecordsFromCache();
 
@@ -754,7 +754,7 @@
 
 void MDnsTransactionImpl::ServeRecordsFromCache() {
   std::vector<const RecordParsed*> records;
-  base::WeakPtr<MDnsTransactionImpl> weak_this = AsWeakPtr();
+  base::WeakPtr<MDnsTransactionImpl> weak_this = weak_ptr_factory_.GetWeakPtr();
 
   if (client_->core()) {
     client_->core()->QueryCache(rrtype_, name_, &records);
@@ -788,8 +788,8 @@
   if (!client_->core()->SendQuery(rrtype_, name_))
     return false;
 
-  timeout_.Reset(
-      base::BindOnce(&MDnsTransactionImpl::SignalTransactionOver, AsWeakPtr()));
+  timeout_.Reset(base::BindOnce(&MDnsTransactionImpl::SignalTransactionOver,
+                                weak_ptr_factory_.GetWeakPtr()));
   base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask(
       FROM_HERE, timeout_.callback(), kTransactionTimeout);
 
diff --git a/net/dns/mdns_client_impl.h b/net/dns/mdns_client_impl.h
index bc98f70..1b0b0a5 100644
--- a/net/dns/mdns_client_impl.h
+++ b/net/dns/mdns_client_impl.h
@@ -17,6 +17,7 @@
 #include "base/containers/queue.h"
 #include "base/gtest_prod_util.h"
 #include "base/memory/raw_ptr.h"
+#include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
 #include "base/time/time.h"
 #include "net/base/io_buffer.h"
@@ -131,7 +132,7 @@
   // whenever the number of listeners reaches zero. The deletion happens
   // asychronously, so destroying the last listener does not immediately
   // invalidate the core.
-  class Core : public base::SupportsWeakPtr<Core>, MDnsConnection::Delegate {
+  class Core final : public MDnsConnection::Delegate {
    public:
     Core(base::Clock* clock, base::OneShotTimer* timer);
 
@@ -210,6 +211,7 @@
     base::Time scheduled_cleanup_;
 
     std::unique_ptr<MDnsConnection> connection_;
+    base::WeakPtrFactory<Core> weak_ptr_factory_{this};
   };
 
   MDnsClientImpl();
@@ -248,8 +250,7 @@
   std::unique_ptr<Core> core_;
 };
 
-class MDnsListenerImpl : public MDnsListener,
-                         public base::SupportsWeakPtr<MDnsListenerImpl> {
+class MDnsListenerImpl final : public MDnsListener {
  public:
   MDnsListenerImpl(uint16_t rrtype,
                    const std::string& name,
@@ -297,11 +298,11 @@
   bool active_refresh_ = false;
 
   base::CancelableRepeatingClosure next_refresh_;
+  base::WeakPtrFactory<MDnsListenerImpl> weak_ptr_factory_{this};
 };
 
-class MDnsTransactionImpl : public base::SupportsWeakPtr<MDnsTransactionImpl>,
-                            public MDnsTransaction,
-                            public MDnsListener::Delegate {
+class MDnsTransactionImpl final : public MDnsTransaction,
+                                  public MDnsListener::Delegate {
  public:
   MDnsTransactionImpl(uint16_t rrtype,
                       const std::string& name,
@@ -362,6 +363,7 @@
 
   bool started_ = false;
   int flags_;
+  base::WeakPtrFactory<MDnsTransactionImpl> weak_ptr_factory_{this};
 };
 
 }  // namespace net