Revert "Launch WebRTC-SendPacketsOnWorkerThread"

This reverts commit 8d33105015183d02978ecefcedef241247af3802.

Reason for revert: Speculative revert, may have caused breakage in post submit tests. E.g. https://ci.chromium.org/p/webrtc/builders/ci/Linux32%20Debug/32343 (waterfall https://ci.chromium.org/p/webrtc/g/ci/console?limit=200)

Original change's description:
> Launch WebRTC-SendPacketsOnWorkerThread
>
> Bug: webrtc:14502, b/254640777
> Change-Id: I61269443b5ce87ba0c5354f863c731292c86dbce
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/293581
> Reviewed-by: Per Kjellander <perkj@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#39425}

Bug: webrtc:14502, b/254640777
Change-Id: Iec5d373fb7a73bc07d8cc4af4ca03a0f60331eda
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/295662
Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Owners-Override: Andrey Logvin <landrey@webrtc.org>
Auto-Submit: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39429}
diff --git a/modules/pacing/task_queue_paced_sender_unittest.cc b/modules/pacing/task_queue_paced_sender_unittest.cc
index 55ec1445..23a72ce 100644
--- a/modules/pacing/task_queue_paced_sender_unittest.cc
+++ b/modules/pacing/task_queue_paced_sender_unittest.cc
@@ -78,6 +78,79 @@
   return padding_packets;
 }
 
+class TaskQueueWithFakePrecisionFactory : public TaskQueueFactory {
+ public:
+  explicit TaskQueueWithFakePrecisionFactory(
+      TaskQueueFactory* task_queue_factory)
+      : task_queue_factory_(task_queue_factory) {}
+
+  std::unique_ptr<TaskQueueBase, TaskQueueDeleter> CreateTaskQueue(
+      absl::string_view name,
+      Priority priority) const override {
+    return std::unique_ptr<TaskQueueBase, TaskQueueDeleter>(
+        new TaskQueueWithFakePrecision(
+            const_cast<TaskQueueWithFakePrecisionFactory*>(this),
+            task_queue_factory_));
+  }
+
+  int delayed_low_precision_count() const {
+    return delayed_low_precision_count_;
+  }
+  int delayed_high_precision_count() const {
+    return delayed_high_precision_count_;
+  }
+
+ private:
+  friend class TaskQueueWithFakePrecision;
+
+  class TaskQueueWithFakePrecision : public TaskQueueBase {
+   public:
+    TaskQueueWithFakePrecision(
+        TaskQueueWithFakePrecisionFactory* parent_factory,
+        TaskQueueFactory* task_queue_factory)
+        : parent_factory_(parent_factory),
+          task_queue_(task_queue_factory->CreateTaskQueue(
+              "TaskQueueWithFakePrecision",
+              TaskQueueFactory::Priority::NORMAL)) {}
+    ~TaskQueueWithFakePrecision() override {}
+
+    void Delete() override {
+      // `task_queue_->Delete()` is implicitly called in the destructor due to
+      // TaskQueueDeleter.
+      delete this;
+    }
+    void PostTask(absl::AnyInvocable<void() &&> task) override {
+      task_queue_->PostTask(WrapTask(std::move(task)));
+    }
+    void PostDelayedTask(absl::AnyInvocable<void() &&> task,
+                         TimeDelta delay) override {
+      ++parent_factory_->delayed_low_precision_count_;
+      task_queue_->PostDelayedTask(WrapTask(std::move(task)), delay);
+    }
+    void PostDelayedHighPrecisionTask(absl::AnyInvocable<void() &&> task,
+                                      TimeDelta delay) override {
+      ++parent_factory_->delayed_high_precision_count_;
+      task_queue_->PostDelayedHighPrecisionTask(WrapTask(std::move(task)),
+                                                delay);
+    }
+
+   private:
+    absl::AnyInvocable<void() &&> WrapTask(absl::AnyInvocable<void() &&> task) {
+      return [this, task = std::move(task)]() mutable {
+        CurrentTaskQueueSetter set_current(this);
+        std::move(task)();
+      };
+    }
+
+    TaskQueueWithFakePrecisionFactory* parent_factory_;
+    std::unique_ptr<TaskQueueBase, TaskQueueDeleter> task_queue_;
+  };
+
+  TaskQueueFactory* task_queue_factory_;
+  std::atomic<int> delayed_low_precision_count_ = 0u;
+  std::atomic<int> delayed_high_precision_count_ = 0u;
+};
+
 }  // namespace
 
 namespace test {
@@ -115,15 +188,15 @@
   return packets;
 }
 
-constexpr char kSendPacketOnWorkerThreadFieldTrialDisabled[] =
-    "WebRTC-SendPacketsOnWorkerThread/Disabled/";
+constexpr char kSendPacketOnWorkerThreadFieldTrial[] =
+    "WebRTC-SendPacketsOnWorkerThread/Enabled/";
 
 std::vector<std::string> ParameterizedFieldTrials() {
-  return {{""}, {kSendPacketOnWorkerThreadFieldTrialDisabled}};
+  return {{""}, {kSendPacketOnWorkerThreadFieldTrial}};
 }
 
 bool UsingWorkerThread(absl::string_view field_trials) {
-  return field_trials.find(kSendPacketOnWorkerThreadFieldTrialDisabled) ==
+  return field_trials.find(kSendPacketOnWorkerThreadFieldTrial) !=
          std::string::npos;
 }
 
diff --git a/modules/utility/maybe_worker_thread.cc b/modules/utility/maybe_worker_thread.cc
index aaa79bb..abb52d4 100644
--- a/modules/utility/maybe_worker_thread.cc
+++ b/modules/utility/maybe_worker_thread.cc
@@ -24,7 +24,7 @@
                                      absl::string_view task_queue_name,
                                      TaskQueueFactory* factory)
     : owned_task_queue_(
-          !field_trials.IsDisabled("WebRTC-SendPacketsOnWorkerThread")
+          field_trials.IsEnabled("WebRTC-SendPacketsOnWorkerThread")
               ? nullptr
               : factory->CreateTaskQueue(task_queue_name,
                                          rtc::TaskQueue::Priority::NORMAL)),
diff --git a/modules/utility/maybe_worker_thread_unittests.cc b/modules/utility/maybe_worker_thread_unittests.cc
index 2ce4d19..f6a981f 100644
--- a/modules/utility/maybe_worker_thread_unittests.cc
+++ b/modules/utility/maybe_worker_thread_unittests.cc
@@ -23,13 +23,11 @@
 
 namespace {
 
-constexpr char kFieldTrialEnabledString[] =
+constexpr char kFieldTrialString[] =
     "WebRTC-SendPacketsOnWorkerThread/Enabled/";
-constexpr char kFieldTrialDisabledString[] =
-    "WebRTC-SendPacketsOnWorkerThread/Disabled/";
 
 TEST(MaybeWorkerThreadTest, RunOrPostRunOnWorkerThreadInExperiment) {
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialEnabledString);
+  test::ExplicitKeyValueConfig field_trial(kFieldTrialString);
   RealTimeController controller;
   MaybeWorkerThread m(field_trial, "test_tq", controller.GetTaskQueueFactory());
 
@@ -43,7 +41,7 @@
 }
 
 TEST(MaybeWorkerThreadTest, RunOrPostPostsOnTqPerDefault) {
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialDisabledString);
+  test::ExplicitKeyValueConfig field_trial("");
   RealTimeController controller;
   MaybeWorkerThread m(field_trial, "test_tq", controller.GetTaskQueueFactory());
 
@@ -57,7 +55,7 @@
 }
 
 TEST(MaybeWorkerThreadTest, RunSynchronousRunOnWorkerThreadInExperiment) {
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialEnabledString);
+  test::ExplicitKeyValueConfig field_trial(kFieldTrialString);
   RealTimeController controller;
   MaybeWorkerThread m(field_trial, "test_tq", controller.GetTaskQueueFactory());
 
@@ -71,7 +69,7 @@
 }
 
 TEST(MaybeWorkerThreadTest, RunSynchronousRunOnTqPerDefault) {
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialDisabledString);
+  test::ExplicitKeyValueConfig field_trial("");
   RealTimeController controller;
   MaybeWorkerThread m(field_trial, "test_tq", controller.GetTaskQueueFactory());
 
@@ -88,7 +86,7 @@
   // We cant really test that the return value from MaybeSafeTask is a SafeTask.
   // But we can test that the safety flag does not have more references after a
   // call.
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialDisabledString);
+  test::ExplicitKeyValueConfig field_trial("");
   RealTimeController controller;
   MaybeWorkerThread m(field_trial, "test_tq", controller.GetTaskQueueFactory());
 
@@ -103,7 +101,7 @@
   // We cant really test that the return value from MaybeSafeTask is a SafeTask.
   // But we can test that the safety flag does have one more references after a
   // call.
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialEnabledString);
+  test::ExplicitKeyValueConfig field_trial(kFieldTrialString);
   RealTimeController controller;
   MaybeWorkerThread m(field_trial, "test_tq", controller.GetTaskQueueFactory());
 
@@ -115,7 +113,7 @@
 }
 
 TEST(MaybeWorkerThreadTest, IsCurrentBehavesCorrectPerDefault) {
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialDisabledString);
+  test::ExplicitKeyValueConfig field_trial("");
   RealTimeController controller;
   MaybeWorkerThread m(field_trial, "test_tq", controller.GetTaskQueueFactory());
 
@@ -124,7 +122,7 @@
 }
 
 TEST(MaybeWorkerThreadTest, IsCurrentBehavesCorrectInExperiment) {
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialEnabledString);
+  test::ExplicitKeyValueConfig field_trial(kFieldTrialString);
   RealTimeController controller;
   MaybeWorkerThread m(field_trial, "test_tq", controller.GetTaskQueueFactory());
 
@@ -140,7 +138,7 @@
 }
 
 TEST(MaybeWorkerThreadTest, IsCurrentCanBeCalledInDestructorPerDefault) {
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialDisabledString);
+  test::ExplicitKeyValueConfig field_trial("");
   RealTimeController controller;
   {
     MaybeWorkerThread m(field_trial, "test_tq",
@@ -150,7 +148,7 @@
 }
 
 TEST(MaybeWorkerThreadTest, IsCurrentCanBeCalledInDestructorInExperiment) {
-  test::ExplicitKeyValueConfig field_trial(kFieldTrialEnabledString);
+  test::ExplicitKeyValueConfig field_trial(kFieldTrialString);
   RealTimeController controller;
   {
     MaybeWorkerThread m(field_trial, "test_tq",
diff --git a/test/scenario/BUILD.gn b/test/scenario/BUILD.gn
index 077d1ae..5da6dce 100644
--- a/test/scenario/BUILD.gn
+++ b/test/scenario/BUILD.gn
@@ -150,7 +150,6 @@
       "../time_controller",
     ]
     absl_deps = [
-      "//third_party/abseil-cpp/absl/cleanup",
       "//third_party/abseil-cpp/absl/flags:flag",
       "//third_party/abseil-cpp/absl/flags:parse",
       "//third_party/abseil-cpp/absl/functional:any_invocable",
diff --git a/test/scenario/network_node.cc b/test/scenario/network_node.cc
index c9aee68..e149bb1 100644
--- a/test/scenario/network_node.cc
+++ b/test/scenario/network_node.cc
@@ -10,10 +10,9 @@
 #include "test/scenario/network_node.h"
 
 #include <algorithm>
-#include <memory>
 #include <vector>
 
-#include "absl/cleanup/cleanup.h"
+#include <memory>
 #include "rtc_base/net_helper.h"
 #include "rtc_base/numerics/safe_minmax.h"
 
@@ -128,25 +127,13 @@
     current_network_route_ = route;
   }
 
-  // Must be called from the worker thread.
-  rtc::Event event;
-  auto cleanup = absl::MakeCleanup([&event] { event.Set(); });
-  auto&& task = [this, &route, cleanup = std::move(cleanup)] {
-    sender_call_->GetTransportControllerSend()->OnNetworkRouteChanged(
-        kDummyTransportName, route);
-  };
-  if (!sender_call_->worker_thread()->IsCurrent()) {
-    sender_call_->worker_thread()->PostTask(std::move(task));
-  } else {
-    std::move(task)();
-  }
-  event.Wait(TimeDelta::Seconds(1));
+  sender_call_->GetTransportControllerSend()->OnNetworkRouteChanged(
+      kDummyTransportName, route);
 }
 
 void NetworkNodeTransport::Disconnect() {
   MutexLock lock(&mutex_);
   current_network_route_.connected = false;
-
   sender_call_->GetTransportControllerSend()->OnNetworkRouteChanged(
       kDummyTransportName, current_network_route_);
   current_network_route_ = {};
diff --git a/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc
index 0fcc5e4..c38dcd0 100644
--- a/video/video_send_stream_impl_unittest.cc
+++ b/video/video_send_stream_impl_unittest.cc
@@ -16,7 +16,6 @@
 
 #include "absl/types/optional.h"
 #include "api/rtc_event_log/rtc_event_log.h"
-#include "api/sequence_checker.h"
 #include "api/task_queue/task_queue_base.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
@@ -162,7 +161,7 @@
       int initial_encoder_max_bitrate,
       double initial_encoder_bitrate_priority,
       VideoEncoderConfig::ContentType content_type) {
-    RTC_DCHECK_RUN_ON(&worker_queue_);
+    RTC_DCHECK(!worker_queue_.IsCurrent());
 
     EXPECT_CALL(bitrate_allocator_, GetStartBitrate(_))
         .WillOnce(Return(123000));