Use stdlib TaskQueue implementation in webrtc fuzzers

Bug: chromium:939093, webrtc:10191
Change-Id: I90463a1b3a003ff575a61cd8f6351927947759f8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126221
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27030}
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 951865d..572d224 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -559,7 +559,6 @@
 }
 
 rtc_source_set("rtc_task_queue_stdlib") {
-  visibility = [ "../api/task_queue:default_task_queue_factory" ]
   sources = [
     "task_queue_stdlib.cc",
     "task_queue_stdlib.h",
diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn
index 862d59d..aeb79a1 100644
--- a/test/fuzzers/BUILD.gn
+++ b/test/fuzzers/BUILD.gn
@@ -15,7 +15,9 @@
     "webrtc_fuzzer_main.cc",
   ]
   deps = [
+    "../../api/task_queue:global_task_queue_factory",
     "../../rtc_base:rtc_base_approved",
+    "../../rtc_base:rtc_task_queue_stdlib",
     "//testing/libfuzzer:libfuzzer_main",
   ]
 
diff --git a/test/fuzzers/webrtc_fuzzer_main.cc b/test/fuzzers/webrtc_fuzzer_main.cc
index a52dd23..3e05be6 100644
--- a/test/fuzzers/webrtc_fuzzer_main.cc
+++ b/test/fuzzers/webrtc_fuzzer_main.cc
@@ -12,7 +12,9 @@
 // It's intended to set sane defaults, such as removing logging for further
 // fuzzing efficiency.
 
+#include "api/task_queue/global_task_queue_factory.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/task_queue_stdlib.h"
 
 namespace {
 bool g_initialized = false;
@@ -26,6 +28,13 @@
   rtc::LogMessage::LogToDebug(rtc::LS_NONE);
 #endif  // !defined(WEBRTC_CHROMIUM_BUILD)
 
+  // Chromium hijacked DefaultTaskQueueFactory with own implementation, but
+  // unable to use it without base::test::ScopedTaskEnvironment. Actual used
+  // task queue implementation shouldn't matter for the purpose of the fuzzers,
+  // so use stdlib implementation: that one is multiplatform. This is a
+  // temporary solution until bugs.webrtc.org/10284 is resolved.
+  webrtc::SetGlobalTaskQueueFactory(webrtc::CreateTaskQueueStdlibFactory());
+
   g_initialized = true;
 }
 }  // namespace