Add some sequence checkers to simulator streams.

These were omitted by mistake when originally implementing the classes.

Bug: b/423646186
Change-Id: I93802c3dbf2490b2a355565956c6d7ca2547e89f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/478383
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47894}
diff --git a/video/timing/simulator/decodability_simulator.cc b/video/timing/simulator/decodability_simulator.cc
index 856bf78..acabf2e 100644
--- a/video/timing/simulator/decodability_simulator.cc
+++ b/video/timing/simulator/decodability_simulator.cc
@@ -47,7 +47,7 @@
       : env_(env), ssrc_(ssrc) {
     RTC_DCHECK_NE(ssrc_, 0);
   }
-  ~DecodableFrameCollector() override = default;
+  ~DecodableFrameCollector() override { RTC_DCHECK_RUN_ON(&sequence_checker_); }
 
   DecodableFrameCollector(const DecodableFrameCollector&) = delete;
   DecodableFrameCollector& operator=(const DecodableFrameCollector&) = delete;
@@ -139,7 +139,9 @@
     RTC_DCHECK_RUN_ON(&sequence_checker_);
     tracker_.SetDecodedFrameIdCallback(&assembler_);
   }
-  ~DecodabilitySimulatorStream() override = default;
+  ~DecodabilitySimulatorStream() override {
+    RTC_DCHECK_RUN_ON(&sequence_checker_);
+  }
 
   // Implements `RtcEventLogDriver::StreamInterface`.
   void InsertSimulatedPacket(
diff --git a/video/timing/simulator/receiver.cc b/video/timing/simulator/receiver.cc
index 138ba1c..da85562 100644
--- a/video/timing/simulator/receiver.cc
+++ b/video/timing/simulator/receiver.cc
@@ -56,10 +56,13 @@
   RTC_DCHECK_NE(ssrc_, rtx_ssrc_);
 }
 
-Receiver::~Receiver() = default;
+Receiver::~Receiver() {
+  RTC_DCHECK_RUN_ON(&sequence_checker_);
+}
 
 void Receiver::InsertSimulatedPacket(
     const RtpPacketSimulator::SimulatedPacket& simulated_packet) {
+  RTC_DCHECK_RUN_ON(&sequence_checker_);
   uint32_t packet_ssrc = simulated_packet.rtp_packet.Ssrc();
   bool is_video = (packet_ssrc == ssrc_);
   bool is_rtx = (packet_ssrc == rtx_ssrc_);
diff --git a/video/timing/simulator/rendering_simulator.cc b/video/timing/simulator/rendering_simulator.cc
index ca59379..9bb5527 100644
--- a/video/timing/simulator/rendering_simulator.cc
+++ b/video/timing/simulator/rendering_simulator.cc
@@ -51,7 +51,7 @@
       : env_(env), ssrc_(ssrc) {
     RTC_DCHECK_NE(ssrc_, 0);
   }
-  ~RenderedFrameCollector() override = default;
+  ~RenderedFrameCollector() override { RTC_DCHECK_RUN_ON(&sequence_checker_); }
 
   RenderedFrameCollector(const RenderedFrameCollector&) = delete;
   RenderedFrameCollector& operator=(const RenderedFrameCollector&) = delete;
@@ -196,7 +196,9 @@
     RTC_DCHECK_RUN_ON(&sequence_checker_);
     tracker_.SetDecodedFrameIdCallback(&assembler_);
   }
-  ~RenderingSimulatorStream() override = default;
+  ~RenderingSimulatorStream() override {
+    RTC_DCHECK_RUN_ON(&sequence_checker_);
+  }
 
   // Implements `RtcEventLogDriver::StreamInterface`.
   void InsertSimulatedPacket(
diff --git a/video/timing/simulator/rtc_event_log_driver.cc b/video/timing/simulator/rtc_event_log_driver.cc
index e46a6ed..7a6289b 100644
--- a/video/timing/simulator/rtc_event_log_driver.cc
+++ b/video/timing/simulator/rtc_event_log_driver.cc
@@ -88,11 +88,7 @@
   bool done = false;
   simulator_queue_->PostTask([this, &done]() {
     RTC_DCHECK_RUN_ON(simulator_queue_.get());
-    for (auto& stream : streams_) {
-      stream.second->Close();
-    }
-    receiving_streams_.clear();
-    streams_.clear();
+    TeardownOnQueue();
     done = true;
   });
   time_controller_.AdvanceTime(TimeDelta::Zero());
@@ -203,4 +199,13 @@
   });
 }
 
+void RtcEventLogDriver::TeardownOnQueue() {
+  RTC_DCHECK_RUN_ON(simulator_queue_.get());
+  for (auto& stream : streams_) {
+    stream.second->Close();
+  }
+  receiving_streams_.clear();
+  streams_.clear();
+}
+
 }  // namespace webrtc::video_timing_simulator
diff --git a/video/timing/simulator/rtc_event_log_driver.h b/video/timing/simulator/rtc_event_log_driver.h
index 72e7a71..48a8eee 100644
--- a/video/timing/simulator/rtc_event_log_driver.h
+++ b/video/timing/simulator/rtc_event_log_driver.h
@@ -22,6 +22,7 @@
 #include "absl/functional/any_invocable.h"
 #include "absl/strings/string_view.h"
 #include "api/environment/environment.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"
@@ -117,6 +118,9 @@
   void OnLoggedVideoRecvConfig(const LoggedVideoRecvConfig& config);
   void OnLoggedRtpPacketIncoming(const LoggedRtpPacketIncoming& packet);
 
+  // Destroy owned objects on `simulator_queue_`.
+  void TeardownOnQueue() RTC_RUN_ON(simulator_queue_);
+
   // Environment.
   const Config config_;
   SimulatedTimeTaskQueueController time_controller_;