Delete AsyncInvoker usage from StunProber

Bug: webrtc:12339
Change-Id: I643a06a26d5aa38e135c252d5b71aee3d073ea3b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212504
Reviewed-by: Taylor <deadbeef@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33518}
diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn
index 7ccad67..8cdb663 100644
--- a/p2p/BUILD.gn
+++ b/p2p/BUILD.gn
@@ -310,6 +310,8 @@
     "../rtc_base:socket_address",
     "../rtc_base:threading",
     "../rtc_base/system:rtc_export",
+    "../rtc_base/task_utils:pending_task_safety_flag",
+    "../rtc_base/task_utils:to_queued_task",
   ]
 }
 
diff --git a/p2p/stunprober/stun_prober.cc b/p2p/stunprober/stun_prober.cc
index 513097d..d85d5f2 100644
--- a/p2p/stunprober/stun_prober.cc
+++ b/p2p/stunprober/stun_prober.cc
@@ -24,6 +24,7 @@
 #include "rtc_base/constructor_magic.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/task_utils/to_queued_task.h"
 #include "rtc_base/thread.h"
 #include "rtc_base/time_utils.h"
 
@@ -261,6 +262,7 @@
       networks_(networks) {}
 
 StunProber::~StunProber() {
+  RTC_DCHECK(thread_checker_.IsCurrent());
   for (auto* req : requesters_) {
     if (req) {
       delete req;
@@ -357,8 +359,8 @@
 
   // Deletion of AsyncResolverInterface can't be done in OnResolveResult which
   // handles SignalDone.
-  invoker_.AsyncInvoke<void>(RTC_FROM_HERE, thread_,
-                             [resolver] { resolver->Destroy(false); });
+  thread_->PostTask(
+      webrtc::ToQueuedTask([resolver] { resolver->Destroy(false); }));
   servers_.pop_back();
 
   if (servers_.size()) {
@@ -451,12 +453,13 @@
 }
 
 void StunProber::MaybeScheduleStunRequests() {
-  RTC_DCHECK(thread_checker_.IsCurrent());
+  RTC_DCHECK_RUN_ON(thread_);
   int64_t now = rtc::TimeMillis();
 
   if (Done()) {
-    invoker_.AsyncInvokeDelayed<void>(
-        RTC_FROM_HERE, thread_, [this] { ReportOnFinished(SUCCESS); },
+    thread_->PostDelayedTask(
+        webrtc::ToQueuedTask(task_safety_.flag(),
+                             [this] { ReportOnFinished(SUCCESS); }),
         timeout_ms_);
     return;
   }
@@ -467,8 +470,9 @@
     }
     next_request_time_ms_ = now + interval_ms_;
   }
-  invoker_.AsyncInvokeDelayed<void>(
-      RTC_FROM_HERE, thread_, [this] { MaybeScheduleStunRequests(); },
+  thread_->PostDelayedTask(
+      webrtc::ToQueuedTask(task_safety_.flag(),
+                           [this] { MaybeScheduleStunRequests(); }),
       get_wake_up_interval_ms());
 }
 
diff --git a/p2p/stunprober/stun_prober.h b/p2p/stunprober/stun_prober.h
index 4153fd6..43d84ff 100644
--- a/p2p/stunprober/stun_prober.h
+++ b/p2p/stunprober/stun_prober.h
@@ -16,13 +16,13 @@
 #include <vector>
 
 #include "api/sequence_checker.h"
-#include "rtc_base/async_invoker.h"
 #include "rtc_base/byte_buffer.h"
 #include "rtc_base/constructor_magic.h"
 #include "rtc_base/ip_address.h"
 #include "rtc_base/network.h"
 #include "rtc_base/socket_address.h"
 #include "rtc_base/system/rtc_export.h"
+#include "rtc_base/task_utils/pending_task_safety_flag.h"
 #include "rtc_base/thread.h"
 
 namespace rtc {
@@ -233,8 +233,6 @@
   // This tracks how many of the sockets are ready.
   size_t total_ready_sockets_ = 0;
 
-  rtc::AsyncInvoker invoker_;
-
   Observer* observer_ = nullptr;
   // TODO(guoweis): Remove this once all dependencies move away from
   // AsyncCallback.
@@ -242,6 +240,8 @@
 
   rtc::NetworkManager::NetworkList networks_;
 
+  webrtc::ScopedTaskSafety task_safety_;
+
   RTC_DISALLOW_COPY_AND_ASSIGN(StunProber);
 };