Avoid using GlobalTaskQueueFactory for TaskQueueForTest

To remove global task factory, rtc::TaskQueue need to loose it's convenient constructor
TaskQueueForTest can be used instead in tests and keep the convenient constructor.

Also cleanup the TaskQueueForTest a bit:
move the class to webrtc namespace
add default constructor
disallow copy using language construct instead of macro
cleanup build dependencies
rename build target (to match move out of the rtc namespace)

Bug: webrtc:10284
Change-Id: I17fddf3f8d4f363df7d495c28a5b0a28abda1ba7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127571
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27193}
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 0f6315c..1605127 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -456,7 +456,6 @@
       "../call:mock_rtp_interfaces",
       "../rtc_base:rtc_base",
       "../rtc_base:rtc_base_approved",
-      "../rtc_base:rtc_task_queue_for_test",
       "../rtc_base/third_party/sigslot",
       "../test:test_support",
       "//testing/gtest",
diff --git a/modules/audio_mixer/BUILD.gn b/modules/audio_mixer/BUILD.gn
index ee07704..70729db 100644
--- a/modules/audio_mixer/BUILD.gn
+++ b/modules/audio_mixer/BUILD.gn
@@ -98,7 +98,7 @@
       "../../audio/utility:audio_frame_operations",
       "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
-      "../../rtc_base:rtc_task_queue_for_test",
+      "../../rtc_base:task_queue_for_test",
       "../../test:test_support",
       "//third_party/abseil-cpp/absl/memory",
     ]
diff --git a/modules/audio_mixer/audio_mixer_impl_unittest.cc b/modules/audio_mixer/audio_mixer_impl_unittest.cc
index 397bbf5..ab20378 100644
--- a/modules/audio_mixer/audio_mixer_impl_unittest.cc
+++ b/modules/audio_mixer/audio_mixer_impl_unittest.cc
@@ -372,7 +372,7 @@
 // This test checks that the initialization and participant addition
 // can be done on a different thread.
 TEST(AudioMixer, ConstructFromOtherThread) {
-  rtc::test::TaskQueueForTest init_queue("init");
+  TaskQueueForTest init_queue("init");
   rtc::scoped_refptr<AudioMixer> mixer;
   init_queue.SendTask([&mixer]() { mixer = AudioMixerImpl::Create(); });
 
@@ -382,7 +382,7 @@
 
   ResetFrame(participant.fake_frame());
 
-  rtc::test::TaskQueueForTest participant_queue("participant");
+  TaskQueueForTest participant_queue("participant");
   participant_queue.SendTask(
       [&mixer, &participant]() { mixer->AddSource(&participant); });
 
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 8f6fa0c..b6314bd 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -585,7 +585,6 @@
       "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_task_queue",
-      "../../rtc_base:rtc_task_queue_for_test",
       "../../rtc_base:sequenced_task_checker",
       "../../rtc_base/task_utils:to_queued_task",
       "../../test:test_support",
@@ -663,7 +662,7 @@
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_base_tests_utils",
       "../../rtc_base:rtc_event",
-      "../../rtc_base:rtc_task_queue_for_test",
+      "../../rtc_base:task_queue_for_test",
       "../../system_wrappers",
       "../../test:fileutils",
       "../../test:perf_test",
@@ -849,7 +848,7 @@
       "../../rtc_base:rtc_base_tests_utils",
       "../../rtc_base:rtc_numerics",
       "../../rtc_base:rtc_task_queue",
-      "../../rtc_base:rtc_task_queue_for_test",
+      "../../rtc_base:task_queue_for_test",
       "../../rtc_base/experiments:jitter_upper_bound_experiment",
       "../../system_wrappers",
       "../../system_wrappers:field_trial",
diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
index e38fcaf..f49b0ce 100644
--- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
@@ -405,7 +405,7 @@
 
   // To emulate operation on a production VideoStreamEncoder, we call the
   // codecs on a task queue.
-  rtc::test::TaskQueueForTest task_queue("VidProc TQ");
+  TaskQueueForTest task_queue("VidProc TQ");
 
   SetUpAndInitObjects(&task_queue,
                       static_cast<const int>(rate_profiles[0].target_kbps),
@@ -625,7 +625,7 @@
 }
 
 void VideoCodecTestFixtureImpl::SetUpAndInitObjects(
-    rtc::test::TaskQueueForTest* task_queue,
+    TaskQueueForTest* task_queue,
     int initial_bitrate_kbps,
     int initial_framerate_fps) {
   config_.codec_settings.minBitrate = 0;
@@ -681,7 +681,7 @@
 }
 
 void VideoCodecTestFixtureImpl::ReleaseAndCloseObjects(
-    rtc::test::TaskQueueForTest* task_queue) {
+    TaskQueueForTest* task_queue) {
   task_queue->SendTask([this]() {
     processor_.reset();
     // The VideoProcessor must be destroyed before the codecs.
@@ -702,7 +702,7 @@
 }
 
 void VideoCodecTestFixtureImpl::PrintSettings(
-    rtc::test::TaskQueueForTest* task_queue) const {
+    TaskQueueForTest* task_queue) const {
   printf("==> Config\n");
   printf("%s\n", config_.ToString().c_str());
 
diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h
index a54f6bd..9f4dbc5 100644
--- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h
+++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h
@@ -62,10 +62,10 @@
 
   void CreateEncoderAndDecoder();
   void DestroyEncoderAndDecoder();
-  void SetUpAndInitObjects(rtc::test::TaskQueueForTest* task_queue,
+  void SetUpAndInitObjects(TaskQueueForTest* task_queue,
                            int initial_bitrate_kbps,
                            int initial_framerate_fps);
-  void ReleaseAndCloseObjects(rtc::test::TaskQueueForTest* task_queue);
+  void ReleaseAndCloseObjects(TaskQueueForTest* task_queue);
 
   void ProcessAllFrames(rtc::TaskQueue* task_queue,
                         const std::vector<RateProfile>& rate_profiles);
@@ -83,7 +83,7 @@
       size_t target_bitrate_kbps,
       float input_framerate_fps);
 
-  void PrintSettings(rtc::test::TaskQueueForTest* task_queue) const;
+  void PrintSettings(TaskQueueForTest* task_queue) const;
 
   // Codecs.
   const std::unique_ptr<VideoEncoderFactory> encoder_factory_;
diff --git a/modules/video_coding/codecs/test/videoprocessor_unittest.cc b/modules/video_coding/codecs/test/videoprocessor_unittest.cc
index dbf8300..4a9c3aa 100644
--- a/modules/video_coding/codecs/test/videoprocessor_unittest.cc
+++ b/modules/video_coding/codecs/test/videoprocessor_unittest.cc
@@ -77,7 +77,7 @@
     EXPECT_CALL(*decoder_mock_, RegisterDecodeCompleteCallback(_)).Times(1);
   }
 
-  rtc::test::TaskQueueForTest q_;
+  TaskQueueForTest q_;
 
   VideoCodecTestFixture::Config config_;
 
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index ffa43bb..8ca719d 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -1107,8 +1107,7 @@
   ]
 }
 
-rtc_source_set("rtc_task_queue_for_test") {
-  visibility = [ "*" ]
+rtc_source_set("task_queue_for_test") {
   testonly = true
 
   sources = [
@@ -1117,9 +1116,12 @@
   ]
   deps = [
     ":checks",
-    ":rtc_base_approved",
+    ":macromagic",
+    ":rtc_event",
     ":rtc_task_queue",
+    "../api/task_queue:default_task_queue_factory",
     "task_utils:to_queued_task",
+    "//third_party/abseil-cpp/absl/strings",
   ]
 }
 
diff --git a/rtc_base/task_queue_for_test.cc b/rtc_base/task_queue_for_test.cc
index 7806e73..cb6b23c 100644
--- a/rtc_base/task_queue_for_test.cc
+++ b/rtc_base/task_queue_for_test.cc
@@ -10,8 +10,12 @@
 
 #include "rtc_base/task_queue_for_test.h"
 
-namespace rtc {
-namespace test {
-TaskQueueForTest::~TaskQueueForTest() = default;
-}  // namespace test
-}  // namespace rtc
+#include "api/task_queue/default_task_queue_factory.h"
+
+namespace webrtc {
+
+TaskQueueForTest::TaskQueueForTest(absl::string_view name, Priority priority)
+    : TaskQueue(
+          CreateDefaultTaskQueueFactory()->CreateTaskQueue(name, priority)) {}
+
+}  // namespace webrtc
diff --git a/rtc_base/task_queue_for_test.h b/rtc_base/task_queue_for_test.h
index 315f161..e578a61 100644
--- a/rtc_base/task_queue_for_test.h
+++ b/rtc_base/task_queue_for_test.h
@@ -11,19 +11,24 @@
 #ifndef RTC_BASE_TASK_QUEUE_FOR_TEST_H_
 #define RTC_BASE_TASK_QUEUE_FOR_TEST_H_
 
+#include <utility>
+
+#include "absl/strings/string_view.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/constructor_magic.h"
 #include "rtc_base/event.h"
 #include "rtc_base/task_queue.h"
 #include "rtc_base/task_utils/to_queued_task.h"
 #include "rtc_base/thread_annotations.h"
 
-namespace rtc {
-namespace test {
-class RTC_LOCKABLE TaskQueueForTest : public TaskQueue {
+namespace webrtc {
+
+class RTC_LOCKABLE TaskQueueForTest : public rtc::TaskQueue {
  public:
-  using TaskQueue::TaskQueue;
-  ~TaskQueueForTest();
+  explicit TaskQueueForTest(absl::string_view name = "TestQueue",
+                            Priority priority = Priority::NORMAL);
+  TaskQueueForTest(const TaskQueueForTest&) = delete;
+  TaskQueueForTest& operator=(const TaskQueueForTest&) = delete;
+  ~TaskQueueForTest() = default;
 
   // A convenience, test-only method that blocks the current thread while
   // a task executes on the task queue.
@@ -34,11 +39,9 @@
   void SendTask(Closure* task) {
     RTC_DCHECK(!IsCurrent());
     rtc::Event event;
-    PostTask(webrtc::ToQueuedTask(
-        [&task]() {
-          RTC_CHECK_EQ(false, static_cast<webrtc::QueuedTask*>(task)->Run());
-        },
-        [&event]() { event.Set(); }));
+    PostTask(ToQueuedTask(
+        [&task] { RTC_CHECK_EQ(false, static_cast<QueuedTask*>(task)->Run()); },
+        [&event] { event.Set(); }));
     event.Wait(rtc::Event::kForever);
   }
 
@@ -48,15 +51,12 @@
   void SendTask(Closure&& task) {
     RTC_DCHECK(!IsCurrent());
     rtc::Event event;
-    PostTask(webrtc::ToQueuedTask(std::forward<Closure>(task),
-                                  [&event] { event.Set(); }));
+    PostTask(
+        ToQueuedTask(std::forward<Closure>(task), [&event] { event.Set(); }));
     event.Wait(rtc::Event::kForever);
   }
-
- private:
-  RTC_DISALLOW_COPY_AND_ASSIGN(TaskQueueForTest);
 };
-}  // namespace test
-}  // namespace rtc
+
+}  // namespace webrtc
 
 #endif  // RTC_BASE_TASK_QUEUE_FOR_TEST_H_
diff --git a/test/scenario/BUILD.gn b/test/scenario/BUILD.gn
index bdedf04..c0cd3ef 100644
--- a/test/scenario/BUILD.gn
+++ b/test/scenario/BUILD.gn
@@ -127,9 +127,9 @@
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_base_tests_utils",
       "../../rtc_base:rtc_task_queue",
-      "../../rtc_base:rtc_task_queue_for_test",
       "../../rtc_base:safe_minmax",
       "../../rtc_base:sequenced_task_checker",
+      "../../rtc_base:task_queue_for_test",
       "../../system_wrappers",
       "../../system_wrappers:field_trial",
       "../../video",
diff --git a/test/scenario/quality_stats.h b/test/scenario/quality_stats.h
index 8afe30f..0a0ce12 100644
--- a/test/scenario/quality_stats.h
+++ b/test/scenario/quality_stats.h
@@ -50,7 +50,7 @@
   std::vector<std::function<void(const VideoFrameQualityInfo&)>>
       frame_info_handlers_;
   std::deque<VideoFrame> captured_frames_;
-  rtc::test::TaskQueueForTest task_queue_;
+  TaskQueueForTest task_queue_;
 };
 
 struct VideoQualityStats {
diff --git a/video/BUILD.gn b/video/BUILD.gn
index 27697fd..a9a3c04 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -561,7 +561,7 @@
       "../rtc_base:rtc_base_tests_utils",
       "../rtc_base:rtc_numerics",
       "../rtc_base:rtc_task_queue",
-      "../rtc_base:rtc_task_queue_for_test",
+      "../rtc_base:task_queue_for_test",
       "../rtc_base/experiments:alr_experiment",
       "../rtc_base/task_utils:to_queued_task",
       "../system_wrappers",
diff --git a/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc
index 6315352..d874c4d 100644
--- a/video/video_send_stream_impl_unittest.cc
+++ b/video/video_send_stream_impl_unittest.cc
@@ -137,7 +137,7 @@
   RtcEventLogNullImpl event_log_;
   VideoSendStream::Config config_;
   SendDelayStats send_delay_stats_;
-  rtc::test::TaskQueueForTest test_queue_;
+  TaskQueueForTest test_queue_;
   std::unique_ptr<ProcessThread> process_thread_;
   CallStats call_stats_;
   SendStatisticsProxy stats_proxy_;