Merge rtc_task_queue(_api|_impl)? build targets into one

Ignore rtc_link_task_queue_impl flag,
instead use build_with_chromium for custom chromium implementation injection

This changes TaskQueue implementation used in webrtc fuzzers in chromium:
from own webrtc implementation to chromium's.

Bug: webrtc:10191
Change-Id: I63be28b680ae8ea8ee1dbf0c699263c392ce29d3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/125196
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26977}
diff --git a/api/task_queue/BUILD.gn b/api/task_queue/BUILD.gn
index f6bbbc3..c0648b7 100644
--- a/api/task_queue/BUILD.gn
+++ b/api/task_queue/BUILD.gn
@@ -59,44 +59,17 @@
     ":task_queue",
   ]
 
-  # TODO(bugs.webrtc.org/10284): Include implementation unconditionally when
-  # global task queue factory is removed.
-  if (rtc_link_task_queue_impl) {
-    deps += [ ":default_task_queue_factory_impl" ]
-  }
-}
-
-# TODO(bugs.webrtc.org/10191): Merge back to default_task_queue_factory when
-# rtc_task_queue_impl build target is removed.
-rtc_source_set("default_task_queue_factory_impl") {
-  # Include the implementation when rtc_link_task_queue_impl is set to default
-  # value of true or when explicit dependency on "rtc_task_queue_impl" is added.
-  visibility = [
-    ":default_task_queue_factory",
-    "../../rtc_base:rtc_task_queue_impl",
-  ]
-  deps = [
-    ":task_queue",
-  ]
   if (rtc_enable_libevent) {
-    sources = [
-      "default_task_queue_factory_libevent.cc",
-    ]
+    sources += [ "default_task_queue_factory_libevent.cc" ]
     deps += [ "../../rtc_base:rtc_task_queue_libevent" ]
   } else if (is_mac || is_ios) {
-    sources = [
-      "default_task_queue_factory_gcd.cc",
-    ]
+    sources += [ "default_task_queue_factory_gcd.cc" ]
     deps += [ "../../rtc_base:rtc_task_queue_gcd" ]
   } else if (is_win && current_os != "winuwp") {
-    sources = [
-      "default_task_queue_factory_win.cc",
-    ]
+    sources += [ "default_task_queue_factory_win.cc" ]
     deps += [ "../../rtc_base:rtc_task_queue_win" ]
   } else {
-    sources = [
-      "default_task_queue_factory_stdlib.cc",
-    ]
+    sources += [ "default_task_queue_factory_stdlib.cc" ]
     deps += [ "../../rtc_base:rtc_task_queue_stdlib" ]
   }
 }
@@ -115,8 +88,6 @@
   }
 }
 
-# Linking with global_task_queue_factory adds link-time implementation of the
-# rtc::TaskQueue that allows run-time injection of the TaskQueue implementaion.
 rtc_source_set("global_task_queue_factory") {
   # TODO(bugs.webrtc.org/10284): Remove this target when task queue factory
   # propagated to all components that create TaskQueues.
@@ -124,16 +95,16 @@
   sources = [
     "global_task_queue_factory.cc",
     "global_task_queue_factory.h",
-
-    # TODO(bugs.webrtc.org/10191): Move task_queue.cc to private build
-    # "rtc_task_queue" when "rtc_task_queue_api", "rtc_task_queue",
-    # and "rtc_task_queue_impl" can be joined.
-    "task_queue.cc",
   ]
   deps = [
-    ":default_task_queue_factory",
     ":task_queue",
     "../../rtc_base:checks",
-    "../../rtc_base:rtc_task_queue_api",
   ]
+
+  if (build_with_chromium) {
+    # Chromium uses link-time injection of the CreateDefaultTaskQueueFactory
+    sources += [ "default_task_queue_factory.h" ]
+  } else {
+    deps += [ ":default_task_queue_factory" ]
+  }
 }
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index bb4a256..84d558c 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -468,46 +468,33 @@
 
 rtc_source_set("rtc_task_queue") {
   visibility = [ "*" ]
-  deps = []
-  public_deps = [
-    ":rtc_task_queue_api",
-  ]
-
-  if (rtc_link_task_queue_impl) {
-    deps += [ ":rtc_task_queue_impl" ]
-  }
-}
-
-# WebRTC targets must not directly depend on rtc_task_queue_api or
-# rtc_task_queue_impl. Instead, depend on rtc_task_queue.
-# The build flag |rtc_link_task_queue_impl| decides if WebRTC targets will link
-# to the default implemenation in rtc_task_queue_impl or if an externally
-# provided implementation should be used. An external implementation should
-# depend on rtc_task_queue_api.
-rtc_source_set("rtc_task_queue_api") {
-  # The visibility list is commented out so that we won't break external
-  # implementations, but left here to manually test as well as for sake of what
-  # targets we expect to depend on rtc_task_queue_api.
-  # visibility = [
-  #   ":rtc_task_queue",
-  #   ":rtc_task_queue_impl",
-  #   ":sequenced_task_checker",
-  # ]
   sources = [
+    "task_queue.cc",
     "task_queue.h",
   ]
   deps = [
     ":macromagic",
     "../api/task_queue",
+    "../api/task_queue:global_task_queue_factory",
     "system:rtc_export",
     "task_utils:to_queued_task",
     "//third_party/abseil-cpp/absl/memory",
   ]
+
+  # TODO(danilchap): Move this conditional dependency to global_task_queue_factory
+  # after removing task_queue_impl -> global_task_queue_factory dependency in chromium.
+  if (build_with_chromium) {
+    deps += [ "../../webrtc_overrides:task_queue_impl" ]
+  }
+}
+
+rtc_source_set("rtc_task_queue_api") {
+  visibility = [ "*" ]
 }
 
 if (rtc_enable_libevent) {
   rtc_source_set("rtc_task_queue_libevent") {
-    visibility = [ "../api/task_queue:default_task_queue_factory_impl" ]
+    visibility = [ "../api/task_queue:default_task_queue_factory" ]
     sources = [
       "task_queue_libevent.cc",
       "task_queue_libevent.h",
@@ -533,7 +520,7 @@
 
 if (is_mac || is_ios) {
   rtc_source_set("rtc_task_queue_gcd") {
-    visibility = [ "../api/task_queue:default_task_queue_factory_impl" ]
+    visibility = [ "../api/task_queue:default_task_queue_factory" ]
     sources = [
       "task_queue_gcd.cc",
       "task_queue_gcd.h",
@@ -550,7 +537,7 @@
 
 if (is_win) {
   rtc_source_set("rtc_task_queue_win") {
-    visibility = [ "../api/task_queue:default_task_queue_factory_impl" ]
+    visibility = [ "../api/task_queue:default_task_queue_factory" ]
     sources = [
       "task_queue_win.cc",
       "task_queue_win.h",
@@ -562,7 +549,6 @@
       ":macromagic",
       ":platform_thread",
       ":rtc_event",
-      ":rtc_task_queue_api",
       ":safe_conversions",
       ":timeutils",
       "../api/task_queue",
@@ -573,7 +559,7 @@
 }
 
 rtc_source_set("rtc_task_queue_stdlib") {
-  visibility = [ "../api/task_queue:default_task_queue_factory_impl" ]
+  visibility = [ "../api/task_queue:default_task_queue_factory" ]
   sources = [
     "task_queue_stdlib.cc",
     "task_queue_stdlib.h",
@@ -585,7 +571,6 @@
     ":macromagic",
     ":platform_thread",
     ":rtc_event",
-    ":rtc_task_queue_api",
     ":safe_conversions",
     ":timeutils",
     "../api/task_queue",
@@ -594,14 +579,6 @@
   ]
 }
 
-rtc_source_set("rtc_task_queue_impl") {
-  visibility = [ "*" ]
-  deps = [
-    "../api/task_queue:default_task_queue_factory_impl",
-    "../api/task_queue:global_task_queue_factory",
-  ]
-}
-
 rtc_source_set("sequenced_task_checker") {
   sources = [
     "sequenced_task_checker.h",
diff --git a/api/task_queue/task_queue.cc b/rtc_base/task_queue.cc
similarity index 100%
rename from api/task_queue/task_queue.cc
rename to rtc_base/task_queue.cc
diff --git a/rtc_base/task_utils/BUILD.gn b/rtc_base/task_utils/BUILD.gn
index 126bff8..0ec6739 100644
--- a/rtc_base/task_utils/BUILD.gn
+++ b/rtc_base/task_utils/BUILD.gn
@@ -15,7 +15,7 @@
   ]
   deps = [
     "..:logging",
-    "..:rtc_task_queue_api",
+    "..:rtc_task_queue",
     "..:sequenced_task_checker",
     "..:thread_checker",
     "..:timeutils",
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index fcae6b2..fe1f19e 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -629,7 +629,7 @@
       "../../modules/video_coding:video_coding_utility",
       "../../rtc_base:checks",
       "../../rtc_base:rtc_base",
-      "../../rtc_base:rtc_task_queue_api",
+      "../../rtc_base:rtc_task_queue",
       "../../rtc_base:sequenced_task_checker",
       "../../rtc_base:weak_ptr",
       "../../system_wrappers:field_trial",
@@ -690,7 +690,7 @@
       "../../modules/video_coding:video_coding_utility",
       "../../rtc_base:checks",
       "../../rtc_base:rtc_base",
-      "../../rtc_base:rtc_task_queue_api",
+      "../../rtc_base:rtc_task_queue",
       "//third_party/libyuv",
     ]
   }
diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn
index a7f2b68..6eee940 100644
--- a/test/fuzzers/BUILD.gn
+++ b/test/fuzzers/BUILD.gn
@@ -47,10 +47,6 @@
     deps += [
       ":fuzz_data_helper",
       ":webrtc_fuzzer_main",
-
-      # Link unconditionally with webrtc's TaskQueue, regardless of
-      # rtc_link_task_queue_impl flag.
-      "../../rtc_base:rtc_task_queue_impl",
     ]
     if (!build_with_chromium && is_clang) {
       suppressed_configs = [ "//build/config/clang:find_bad_constructs" ]
diff --git a/test/scenario/network/BUILD.gn b/test/scenario/network/BUILD.gn
index 3a00d06..3a2270f 100644
--- a/test/scenario/network/BUILD.gn
+++ b/test/scenario/network/BUILD.gn
@@ -32,7 +32,7 @@
     "../../../api/units:time_delta",
     "../../../api/units:timestamp",
     "../../../rtc_base:rtc_base",
-    "../../../rtc_base:rtc_task_queue_api",
+    "../../../rtc_base:rtc_task_queue",
     "../../../rtc_base:safe_minmax",
     "../../../rtc_base/task_utils:repeating_task",
     "../../../rtc_base/third_party/sigslot:sigslot",
diff --git a/video/BUILD.gn b/video/BUILD.gn
index de13991..17b05de4 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -132,7 +132,7 @@
     "../api/video_codecs:video_codecs_api",
     "../modules/video_coding:video_coding",
     "../rtc_base:rtc_base_approved",
-    "../rtc_base:rtc_task_queue_api",
+    "../rtc_base:rtc_task_queue",
     "../system_wrappers:system_wrappers",
     "//third_party/abseil-cpp/absl/memory",
     "//third_party/abseil-cpp/absl/types:optional",