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_);