Cleanup non-deprecated test::DirectTransport constructor

Relax 'network_thread' parameter to be TaskQueueBase instead of Thread
Annotate nullability of pointers

Bug: webrtc:42225410
Change-Id: I0e2f6b1c56b4ef2eb2af1fc6e2a355cf1b9f4847
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/478180
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#47885}
diff --git a/test/BUILD.gn b/test/BUILD.gn
index b03d019..721954d 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -990,28 +990,24 @@
     "../api:rtp_headers",
     "../api:rtp_parameters",
     "../api:sequence_checker",
-    "../api:simulated_network_api",
     "../api:transport_api",
     "../api/environment",
     "../api/task_queue",
     "../api/units:time_delta",
-    "../api/units:timestamp",
     "../call:call_interfaces",
+    "../call:fake_network",
     "../call:simulated_packet_receiver",
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../rtc_base:checks",
     "../rtc_base:copy_on_write_buffer",
     "../rtc_base:macromagic",
     "../rtc_base:task_queue_for_test",
-    "../rtc_base:threading",
-    "../rtc_base:timeutils",
     "../rtc_base/network:sent_packet",
     "../rtc_base/synchronization:mutex",
     "../rtc_base/task_utils:repeating_task",
     "../system_wrappers",
+    "//third_party/abseil-cpp/absl/base:nullability",
   ]
-  public_deps +=  # no-presubmit-check TODO(webrtc:8603)
-      [ "../call:fake_network" ]
 }
 
 rtc_library("fake_video_codecs") {
diff --git a/test/direct_transport.cc b/test/direct_transport.cc
index e6fa740..6285e40 100644
--- a/test/direct_transport.cc
+++ b/test/direct_transport.cc
@@ -17,6 +17,7 @@
 #include <span>
 #include <utility>
 
+#include "absl/base/nullability.h"
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
 #include "api/media_types.h"
@@ -38,7 +39,6 @@
 #include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/task_queue_for_test.h"
 #include "rtc_base/task_utils/repeating_task.h"
-#include "rtc_base/thread.h"
 
 namespace webrtc {
 namespace test {
@@ -69,13 +69,13 @@
     std::span<const RtpExtension> video_extensions)
     : clock_(*Clock::GetRealTimeClock()),
       send_call_(send_call),
-      network_thread_(task_queue),
+      network_thread_(*task_queue),
       demuxer_(payload_type_map),
       fake_network_(std::move(pipe)),
       audio_extensions_(audio_extensions),
       video_extensions_(video_extensions) {
-  RTC_DCHECK(network_thread_);
-  if (send_call) {
+  RTC_DCHECK(task_queue != nullptr);
+  if (send_call != nullptr) {
     RTC_DCHECK_EQ(task_queue, send_call->network_thread());
   }
   Start();
@@ -83,24 +83,23 @@
 
 DirectTransport::DirectTransport(
     const Environment& env,
-    Thread* network_thread,
-    std::unique_ptr<SimulatedPacketReceiverInterface> pipe,
-    Call* send_call,
+    TaskQueueBase* absl_nonnull network_thread,
+    absl_nonnull std::unique_ptr<SimulatedPacketReceiverInterface> pipe,
+    Call* absl_nullable send_call,
     const std::map<uint8_t, MediaType>& payload_type_map,
     std::span<const RtpExtension> audio_extensions,
     std::span<const RtpExtension> video_extensions)
     : env_(env),
       clock_(env.clock()),
       send_call_(send_call),
-      network_thread_(network_thread),
+      network_thread_(*network_thread),
       demuxer_(payload_type_map),
       fake_network_(std::move(pipe)),
       audio_extensions_(audio_extensions),
       video_extensions_(video_extensions) {
-  RTC_DCHECK(network_thread_);
-  if (send_call) {
-    RTC_DCHECK_EQ(static_cast<TaskQueueBase*>(network_thread),
-                  send_call->network_thread());
+  RTC_DCHECK(network_thread != nullptr);
+  if (send_call != nullptr) {
+    RTC_DCHECK_EQ(network_thread, send_call->network_thread());
   }
   Start();
 }
@@ -110,7 +109,7 @@
   // Synchronously stop delayed packet processing on the network thread. This
   // prevents use-after-free crashes if a scheduled process task executes after
   // the DirectTransport instance is destroyed.
-  SendTask(network_thread_, [&] {
+  SendTask(&network_thread_, [&] {
     MutexLock lock(&process_lock_);
     next_process_task_.Stop();
   });
@@ -132,7 +131,8 @@
     sent_packet.info.included_in_allocation = options.included_in_allocation;
     sent_packet.info.packet_size_bytes = data.size();
     sent_packet.info.packet_type = PacketType::kData;
-    SendTask(network_thread_, [&]() { send_call_->OnSentPacket(sent_packet); });
+    SendTask(&network_thread_,
+             [&]() { send_call_->OnSentPacket(sent_packet); });
   }
 
   const RtpHeaderExtensionMap* extensions = nullptr;
@@ -180,7 +180,7 @@
 void DirectTransport::Start() {
   RTC_DCHECK_RUN_ON(&worker_thread_checker_);
   if (send_call_) {
-    SendTask(network_thread_, [this]() {
+    SendTask(&network_thread_, [this]() {
       send_call_->SignalChannelNetworkState(MediaType::AUDIO, kNetworkUp);
       send_call_->SignalChannelNetworkState(MediaType::VIDEO, kNetworkUp);
     });
@@ -194,7 +194,7 @@
     return;
 
   next_process_task_ = RepeatingTaskHandle::DelayedStart(
-      network_thread_, TimeDelta::Millis(*initial_delay_ms), [this] {
+      &network_thread_, TimeDelta::Millis(*initial_delay_ms), [this] {
         fake_network_->Process();
         if (auto delay_ms = fake_network_->TimeUntilNextProcess())
           return TimeDelta::Millis(*delay_ms);
diff --git a/test/direct_transport.h b/test/direct_transport.h
index 9cc5ab3..f39e747 100644
--- a/test/direct_transport.h
+++ b/test/direct_transport.h
@@ -17,6 +17,7 @@
 #include <optional>
 #include <span>
 
+#include "absl/base/nullability.h"
 #include "api/call/transport.h"
 #include "api/environment/environment.h"
 #include "api/media_types.h"
@@ -28,7 +29,6 @@
 #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
 #include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/task_utils/repeating_task.h"
-#include "rtc_base/thread.h"
 #include "rtc_base/thread_annotations.h"
 #include "system_wrappers/include/clock.h"
 
@@ -62,24 +62,20 @@
                   std::span<const RtpExtension> audio_extensions,
                   std::span<const RtpExtension> video_extensions);
 
-  DirectTransport(const Environment& env,
-                  Thread* network_thread,
-                  std::unique_ptr<SimulatedPacketReceiverInterface> pipe,
-                  Call* send_call,
-                  const std::map<uint8_t, MediaType>& payload_type_map,
-                  std::span<const RtpExtension> audio_extensions,
-                  std::span<const RtpExtension> video_extensions);
+  DirectTransport(
+      const Environment& env,
+      TaskQueueBase* absl_nonnull network_thread,
+      absl_nonnull std::unique_ptr<SimulatedPacketReceiverInterface> pipe,
+      Call* absl_nullable send_call,
+      const std::map<uint8_t, MediaType>& payload_type_map,
+      std::span<const RtpExtension> audio_extensions,
+      std::span<const RtpExtension> video_extensions);
 
   ~DirectTransport() override;
 
   // TODO(holmer): Look into moving this to the constructor.
   virtual void SetReceiver(PacketReceiver* receiver);
 
-  // Backwards compatibility using statements.
-  // TODO(https://bugs.webrtc.org/15410): Remove when not needed.
-  using Transport::SendRtcp;
-  using Transport::SendRtp;
-
   bool SendRtp(std::span<const uint8_t> data,
                const PacketOptions& options) override;
   bool SendRtcp(std::span<const uint8_t> data,
@@ -96,9 +92,9 @@
   // constructor is updated.
   std::optional<Environment> env_;
   Clock& clock_;
-  Call* const send_call_;
+  Call* const absl_nullable send_call_;
 
-  TaskQueueBase* const network_thread_;
+  TaskQueueBase& network_thread_;
 
   Mutex process_lock_;
   RepeatingTaskHandle next_process_task_ RTC_GUARDED_BY(&process_lock_);