Merge SendTask implementation for SingleThreadedTaskQueueForTesting and TaskQueueForTest

That allows to use SingleThreadedTaskQueueForTesting via TaskQueueBase interface
but still have access to test-only SendTask function.

Bug: webrtc:10933
Change-Id: I3cc397e55ea2f1ed9e5d885d6a2ccda412beb826
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156002
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29480}
diff --git a/modules/video_coding/utility/quality_scaler_unittest.cc b/modules/video_coding/utility/quality_scaler_unittest.cc
index 012ef72..939865d 100644
--- a/modules/video_coding/utility/quality_scaler_unittest.cc
+++ b/modules/video_coding/utility/quality_scaler_unittest.cc
@@ -71,15 +71,17 @@
       : scoped_field_trial_(GetParam()),
         task_queue_("QualityScalerTestQueue"),
         observer_(new MockAdaptationObserver()) {
-    task_queue_.SendTask([this] {
-      qs_ = std::unique_ptr<QualityScaler>(new QualityScalerUnderTest(
-          &task_queue_, observer_.get(),
-          VideoEncoder::QpThresholds(kLowQp, kHighQp)));
-    });
+    task_queue_.SendTask(
+        [this] {
+          qs_ = std::unique_ptr<QualityScaler>(new QualityScalerUnderTest(
+              &task_queue_, observer_.get(),
+              VideoEncoder::QpThresholds(kLowQp, kHighQp)));
+        },
+        RTC_FROM_HERE);
   }
 
   ~QualityScalerTest() {
-    task_queue_.SendTask([this] { qs_ = nullptr; });
+    task_queue_.SendTask([this] { qs_ = nullptr; }, RTC_FROM_HERE);
   }
 
   void TriggerScale(ScaleDirection scale_direction) {
@@ -118,46 +120,52 @@
         ""));
 
 TEST_P(QualityScalerTest, DownscalesAfterContinuousFramedrop) {
-  task_queue_.SendTask([this] { TriggerScale(kScaleDown); });
+  task_queue_.SendTask([this] { TriggerScale(kScaleDown); }, RTC_FROM_HERE);
   EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(1, observer_->adapt_down_events_);
   EXPECT_EQ(0, observer_->adapt_up_events_);
 }
 
 TEST_P(QualityScalerTest, KeepsScaleAtHighQp) {
-  task_queue_.SendTask([this] { TriggerScale(kKeepScaleAtHighQp); });
+  task_queue_.SendTask([this] { TriggerScale(kKeepScaleAtHighQp); },
+                       RTC_FROM_HERE);
   EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(0, observer_->adapt_down_events_);
   EXPECT_EQ(0, observer_->adapt_up_events_);
 }
 
 TEST_P(QualityScalerTest, DownscalesAboveHighQp) {
-  task_queue_.SendTask([this] { TriggerScale(kScaleDownAboveHighQp); });
+  task_queue_.SendTask([this] { TriggerScale(kScaleDownAboveHighQp); },
+                       RTC_FROM_HERE);
   EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(1, observer_->adapt_down_events_);
   EXPECT_EQ(0, observer_->adapt_up_events_);
 }
 
 TEST_P(QualityScalerTest, DownscalesAfterTwoThirdsFramedrop) {
-  task_queue_.SendTask([this] {
-    for (int i = 0; i < kFramerate * 5; ++i) {
-      qs_->ReportDroppedFrameByMediaOpt();
-      qs_->ReportDroppedFrameByMediaOpt();
-      qs_->ReportQp(kHighQp, 0);
-    }
-  });
+  task_queue_.SendTask(
+      [this] {
+        for (int i = 0; i < kFramerate * 5; ++i) {
+          qs_->ReportDroppedFrameByMediaOpt();
+          qs_->ReportDroppedFrameByMediaOpt();
+          qs_->ReportQp(kHighQp, 0);
+        }
+      },
+      RTC_FROM_HERE);
   EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(1, observer_->adapt_down_events_);
   EXPECT_EQ(0, observer_->adapt_up_events_);
 }
 
 TEST_P(QualityScalerTest, DoesNotDownscaleAfterHalfFramedrop) {
-  task_queue_.SendTask([this] {
-    for (int i = 0; i < kFramerate * 5; ++i) {
-      qs_->ReportDroppedFrameByMediaOpt();
-      qs_->ReportQp(kHighQp, 0);
-    }
-  });
+  task_queue_.SendTask(
+      [this] {
+        for (int i = 0; i < kFramerate * 5; ++i) {
+          qs_->ReportDroppedFrameByMediaOpt();
+          qs_->ReportQp(kHighQp, 0);
+        }
+      },
+      RTC_FROM_HERE);
   EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(0, observer_->adapt_down_events_);
   EXPECT_EQ(0, observer_->adapt_up_events_);
@@ -165,84 +173,98 @@
 
 TEST_P(QualityScalerTest, DownscalesAfterTwoThirdsIfFieldTrialEnabled) {
   const bool kDownScaleExpected = !GetParam().empty();
-  task_queue_.SendTask([this] {
-    for (int i = 0; i < kFramerate * 5; ++i) {
-      qs_->ReportDroppedFrameByMediaOpt();
-      qs_->ReportDroppedFrameByEncoder();
-      qs_->ReportQp(kHighQp, 0);
-    }
-  });
+  task_queue_.SendTask(
+      [this] {
+        for (int i = 0; i < kFramerate * 5; ++i) {
+          qs_->ReportDroppedFrameByMediaOpt();
+          qs_->ReportDroppedFrameByEncoder();
+          qs_->ReportQp(kHighQp, 0);
+        }
+      },
+      RTC_FROM_HERE);
   EXPECT_EQ(kDownScaleExpected, observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(kDownScaleExpected ? 1 : 0, observer_->adapt_down_events_);
   EXPECT_EQ(0, observer_->adapt_up_events_);
 }
 
 TEST_P(QualityScalerTest, KeepsScaleOnNormalQp) {
-  task_queue_.SendTask([this] { TriggerScale(kKeepScaleAboveLowQp); });
+  task_queue_.SendTask([this] { TriggerScale(kKeepScaleAboveLowQp); },
+                       RTC_FROM_HERE);
   EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(0, observer_->adapt_down_events_);
   EXPECT_EQ(0, observer_->adapt_up_events_);
 }
 
 TEST_P(QualityScalerTest, UpscalesAfterLowQp) {
-  task_queue_.SendTask([this] { TriggerScale(kScaleUp); });
+  task_queue_.SendTask([this] { TriggerScale(kScaleUp); }, RTC_FROM_HERE);
   EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(0, observer_->adapt_down_events_);
   EXPECT_EQ(1, observer_->adapt_up_events_);
 }
 
 TEST_P(QualityScalerTest, ScalesDownAndBackUp) {
-  task_queue_.SendTask([this] { TriggerScale(kScaleDown); });
+  task_queue_.SendTask([this] { TriggerScale(kScaleDown); }, RTC_FROM_HERE);
   EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(1, observer_->adapt_down_events_);
   EXPECT_EQ(0, observer_->adapt_up_events_);
-  task_queue_.SendTask([this] { TriggerScale(kScaleUp); });
+  task_queue_.SendTask([this] { TriggerScale(kScaleUp); }, RTC_FROM_HERE);
   EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(1, observer_->adapt_down_events_);
   EXPECT_EQ(1, observer_->adapt_up_events_);
 }
 
 TEST_P(QualityScalerTest, DoesNotScaleUntilEnoughFramesObserved) {
-  task_queue_.SendTask([this] {
-    // Not enough frames to make a decision.
-    for (int i = 0; i < kMinFramesNeededToScale - 1; ++i) {
-      qs_->ReportQp(kLowQp, 0);
-    }
-  });
+  task_queue_.SendTask(
+      [this] {
+        // Not enough frames to make a decision.
+        for (int i = 0; i < kMinFramesNeededToScale - 1; ++i) {
+          qs_->ReportQp(kLowQp, 0);
+        }
+      },
+      RTC_FROM_HERE);
   EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs));
-  task_queue_.SendTask([this] {
-    // Send 1 more. Enough frames observed, should result in an adapt request.
-    qs_->ReportQp(kLowQp, 0);
-  });
+  task_queue_.SendTask(
+      [this] {
+        // Send 1 more. Enough frames observed, should result in an adapt
+        // request.
+        qs_->ReportQp(kLowQp, 0);
+      },
+      RTC_FROM_HERE);
   EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(0, observer_->adapt_down_events_);
   EXPECT_EQ(1, observer_->adapt_up_events_);
 
   // Samples should be cleared after an adapt request.
-  task_queue_.SendTask([this] {
-    // Not enough frames to make a decision.
-    qs_->ReportQp(kLowQp, 0);
-  });
+  task_queue_.SendTask(
+      [this] {
+        // Not enough frames to make a decision.
+        qs_->ReportQp(kLowQp, 0);
+      },
+      RTC_FROM_HERE);
   EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(0, observer_->adapt_down_events_);
   EXPECT_EQ(1, observer_->adapt_up_events_);
 }
 
 TEST_P(QualityScalerTest, ScalesDownAndBackUpWithMinFramesNeeded) {
-  task_queue_.SendTask([this] {
-    for (int i = 0; i < kMinFramesNeededToScale; ++i) {
-      qs_->ReportQp(kHighQp + 1, 0);
-    }
-  });
+  task_queue_.SendTask(
+      [this] {
+        for (int i = 0; i < kMinFramesNeededToScale; ++i) {
+          qs_->ReportQp(kHighQp + 1, 0);
+        }
+      },
+      RTC_FROM_HERE);
   EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(1, observer_->adapt_down_events_);
   EXPECT_EQ(0, observer_->adapt_up_events_);
   // Samples cleared.
-  task_queue_.SendTask([this] {
-    for (int i = 0; i < kMinFramesNeededToScale; ++i) {
-      qs_->ReportQp(kLowQp, 0);
-    }
-  });
+  task_queue_.SendTask(
+      [this] {
+        for (int i = 0; i < kMinFramesNeededToScale; ++i) {
+          qs_->ReportQp(kLowQp, 0);
+        }
+      },
+      RTC_FROM_HERE);
   EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
   EXPECT_EQ(1, observer_->adapt_down_events_);
   EXPECT_EQ(1, observer_->adapt_up_events_);