Update call Rampup tests not to rely on DEPRECATED_SingleThreadedTaskQueueForTesting

Bug: webrtc:10933
Change-Id: I24ace9f9c1986b369ead0ddd81d1808edab5a6e7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157880
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29557}
diff --git a/call/BUILD.gn b/call/BUILD.gn
index f6cf691..07e3645 100644
--- a/call/BUILD.gn
+++ b/call/BUILD.gn
@@ -459,6 +459,8 @@
       "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:task_queue_for_test",
+      "../rtc_base:task_queue_for_test",
+      "../rtc_base/task_utils:repeating_task",
       "../system_wrappers",
       "../system_wrappers:metrics",
       "../test:direct_transport",
diff --git a/call/rampup_tests.cc b/call/rampup_tests.cc
index 2741ebf..882baf6 100644
--- a/call/rampup_tests.cc
+++ b/call/rampup_tests.cc
@@ -38,7 +38,7 @@
 namespace webrtc {
 namespace {
 
-static const int64_t kPollIntervalMs = 20;
+constexpr TimeDelta kPollInterval = TimeDelta::Millis<20>();
 static const int kExpectedHighVideoBitrateBps = 80000;
 static const int kExpectedHighAudioBitrateBps = 30000;
 static const int kLowBandwidthLimitBps = 20000;
@@ -54,17 +54,16 @@
 }
 }  // namespace
 
-RampUpTester::RampUpTester(
-    size_t num_video_streams,
-    size_t num_audio_streams,
-    size_t num_flexfec_streams,
-    unsigned int start_bitrate_bps,
-    int64_t min_run_time_ms,
-    const std::string& extension_type,
-    bool rtx,
-    bool red,
-    bool report_perf_stats,
-    test::DEPRECATED_SingleThreadedTaskQueueForTesting* task_queue)
+RampUpTester::RampUpTester(size_t num_video_streams,
+                           size_t num_audio_streams,
+                           size_t num_flexfec_streams,
+                           unsigned int start_bitrate_bps,
+                           int64_t min_run_time_ms,
+                           const std::string& extension_type,
+                           bool rtx,
+                           bool red,
+                           bool report_perf_stats,
+                           TaskQueueBase* task_queue)
     : EndToEndTest(test::CallTest::kLongTimeoutMs),
       clock_(Clock::GetRealTimeClock()),
       num_video_streams_(num_video_streams),
@@ -94,14 +93,7 @@
 
 RampUpTester::~RampUpTester() {
   // Special case for WebRTC-QuickPerfTest/Enabled/
-  SendTask(RTC_FROM_HERE, task_queue_, [this]() {
-    if (pending_task_ !=
-        static_cast<test::DEPRECATED_SingleThreadedTaskQueueForTesting::TaskId>(
-            -1)) {
-      task_queue_->CancelTask(pending_task_);
-      pending_task_ = -1;
-    }
-  });
+  SendTask(RTC_FROM_HERE, task_queue_, [this] { pending_task_.Stop(); });
 }
 
 void RampUpTester::ModifySenderBitrateConfig(
@@ -323,15 +315,15 @@
 void RampUpTester::OnCallsCreated(Call* sender_call, Call* receiver_call) {
   RTC_DCHECK(sender_call);
   sender_call_ = sender_call;
-  pending_task_ = task_queue_->PostTask([this]() { PollStats(); });
+  pending_task_ = RepeatingTaskHandle::Start(task_queue_, [this] {
+    PollStats();
+    return kPollInterval;
+  });
 }
 
 void RampUpTester::PollStats() {
   RTC_DCHECK_RUN_ON(task_queue_);
 
-  EnsurePollTimeSet();
-
-  pending_task_ = -1;
   Call::Stats stats = sender_call_->GetStats();
   EXPECT_GE(expected_bitrate_bps_, 0);
 
@@ -340,9 +332,7 @@
        clock_->TimeInMilliseconds() - test_start_ms_ >= min_run_time_ms_)) {
     ramp_up_finished_ms_ = clock_->TimeInMilliseconds();
     observation_complete_.Set();
-  } else {
-    pending_task_ = task_queue_->PostDelayedTask([this]() { PollStats(); },
-                                                 GetIntervalForNextPoll());
+    pending_task_.Stop();
   }
 }
 
@@ -381,14 +371,7 @@
 
   // Stop polling stats.
   // Corner case for field_trials=WebRTC-QuickPerfTest/Enabled/
-  SendTask(RTC_FROM_HERE, task_queue_, [this]() {
-    if (pending_task_ !=
-        static_cast<test::DEPRECATED_SingleThreadedTaskQueueForTesting::TaskId>(
-            -1)) {
-      task_queue_->CancelTask(pending_task_);
-      pending_task_ = -1;
-    }
-  });
+  SendTask(RTC_FROM_HERE, task_queue_, [this] { pending_task_.Stop(); });
 
   VideoSendStream::Stats send_stats = send_stream_->GetStats();
   send_stream_ = nullptr;  // To avoid dereferencing a bad pointer.
@@ -431,33 +414,16 @@
   TriggerTestDone();
 }
 
-void RampUpTester::EnsurePollTimeSet() {
-  RTC_DCHECK_RUN_ON(task_queue_);
-  if (!next_scheduled_poll_time_ms_)
-    next_scheduled_poll_time_ms_ = rtc::TimeMillis();
-}
-
-int64_t RampUpTester::GetIntervalForNextPoll() {
-  RTC_DCHECK_RUN_ON(task_queue_);
-  RTC_DCHECK_NE(next_scheduled_poll_time_ms_, 0)
-      << "No call to EnsurePollTimeSet()";
-  auto now = rtc::TimeMillis();
-  next_scheduled_poll_time_ms_ += kPollIntervalMs;
-  auto interval = next_scheduled_poll_time_ms_ - now;
-  return interval > 0 ? interval : 0;
-}
-
-RampUpDownUpTester::RampUpDownUpTester(
-    size_t num_video_streams,
-    size_t num_audio_streams,
-    size_t num_flexfec_streams,
-    unsigned int start_bitrate_bps,
-    const std::string& extension_type,
-    bool rtx,
-    bool red,
-    const std::vector<int>& loss_rates,
-    bool report_perf_stats,
-    test::DEPRECATED_SingleThreadedTaskQueueForTesting* task_queue)
+RampUpDownUpTester::RampUpDownUpTester(size_t num_video_streams,
+                                       size_t num_audio_streams,
+                                       size_t num_flexfec_streams,
+                                       unsigned int start_bitrate_bps,
+                                       const std::string& extension_type,
+                                       bool rtx,
+                                       bool red,
+                                       const std::vector<int>& loss_rates,
+                                       bool report_perf_stats,
+                                       TaskQueueBase* task_queue)
     : RampUpTester(num_video_streams,
                    num_audio_streams,
                    num_flexfec_streams,
@@ -485,10 +451,9 @@
 RampUpDownUpTester::~RampUpDownUpTester() {}
 
 void RampUpDownUpTester::PollStats() {
-  EnsurePollTimeSet();
-
-  pending_task_ = -1;
-  bool last_round = (test_state_ == kTestEnd);
+  if (test_state_ == kTestEnd) {
+    pending_task_.Stop();
+  }
 
   int transmit_bitrate_bps = 0;
   bool suspended = false;
@@ -506,11 +471,6 @@
   }
 
   EvolveTestState(transmit_bitrate_bps, suspended);
-
-  if (!last_round) {
-    pending_task_ = task_queue_->PostDelayedTask([this]() { PollStats(); },
-                                                 GetIntervalForNextPoll());
-  }
 }
 
 void RampUpDownUpTester::ModifyReceiverBitrateConfig(
diff --git a/call/rampup_tests.h b/call/rampup_tests.h
index 34e1740..075de6d 100644
--- a/call/rampup_tests.h
+++ b/call/rampup_tests.h
@@ -23,6 +23,7 @@
 #include "call/call.h"
 #include "call/simulated_network.h"
 #include "rtc_base/event.h"
+#include "rtc_base/task_utils/repeating_task.h"
 #include "test/call_test.h"
 
 namespace webrtc {
@@ -45,7 +46,7 @@
                bool rtx,
                bool red,
                bool report_perf_stats,
-               test::DEPRECATED_SingleThreadedTaskQueueForTesting* task_queue);
+               TaskQueueBase* task_queue);
   ~RampUpTester() override;
 
   size_t GetNumVideoStreams() const override;
@@ -114,38 +115,23 @@
   std::vector<uint32_t> video_rtx_ssrcs_;
   std::vector<uint32_t> audio_ssrcs_;
 
-  // Initially zero, then set to the target time in milliseconds for when
-  // PollStats() will next be called.
-  int64_t next_scheduled_poll_time_ms_ = 0;
-
  protected:
-  // Call from within PollStats to ensure that initial PollStats() timestamp
-  // is captured.
-  void EnsurePollTimeSet();
-
-  // Calculates the interval from now and until when PollStats() next should be
-  // called. Internally updates a timestamp, so each call will yield the
-  // subsequent timestamp (in milliseconds).
-  // Must be called from the |task_queue_|.
-  int64_t GetIntervalForNextPoll();
-
-  test::DEPRECATED_SingleThreadedTaskQueueForTesting* const task_queue_;
-  test::DEPRECATED_SingleThreadedTaskQueueForTesting::TaskId pending_task_ = -1;
+  TaskQueueBase* const task_queue_;
+  RepeatingTaskHandle pending_task_;
 };
 
 class RampUpDownUpTester : public RampUpTester {
  public:
-  RampUpDownUpTester(
-      size_t num_video_streams,
-      size_t num_audio_streams,
-      size_t num_flexfec_streams,
-      unsigned int start_bitrate_bps,
-      const std::string& extension_type,
-      bool rtx,
-      bool red,
-      const std::vector<int>& loss_rates,
-      bool report_perf_stats,
-      test::DEPRECATED_SingleThreadedTaskQueueForTesting* task_queue);
+  RampUpDownUpTester(size_t num_video_streams,
+                     size_t num_audio_streams,
+                     size_t num_flexfec_streams,
+                     unsigned int start_bitrate_bps,
+                     const std::string& extension_type,
+                     bool rtx,
+                     bool red,
+                     const std::vector<int>& loss_rates,
+                     bool report_perf_stats,
+                     TaskQueueBase* task_queue);
   ~RampUpDownUpTester() override;
 
  protected: