| Index: webrtc/audio/audio_send_stream_unittest.cc
 | 
| diff --git a/webrtc/audio/audio_send_stream_unittest.cc b/webrtc/audio/audio_send_stream_unittest.cc
 | 
| index 9ae0a879990db1e859426b389783691ac67fa0e0..0a8b4b8a302f46c8f293abeec66ff6842c8c943c 100644
 | 
| --- a/webrtc/audio/audio_send_stream_unittest.cc
 | 
| +++ b/webrtc/audio/audio_send_stream_unittest.cc
 | 
| @@ -15,6 +15,7 @@
 | 
|  #include "webrtc/audio/audio_state.h"
 | 
|  #include "webrtc/audio/conversion.h"
 | 
|  #include "webrtc/base/task_queue.h"
 | 
| +#include "webrtc/call/rtp_transport_controller.h"
 | 
|  #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h"
 | 
|  #include "webrtc/modules/audio_mixer/audio_mixer_impl.h"
 | 
|  #include "webrtc/modules/audio_processing/include/mock_audio_processing.h"
 | 
| @@ -64,14 +65,33 @@ class MockLimitObserver : public BitrateAllocator::LimitObserver {
 | 
|  };
 | 
|  
 | 
|  struct ConfigHelper {
 | 
| +  class FakeRtpTransportController
 | 
| +      : public RtpTransportControllerSendInterface {
 | 
| +   public:
 | 
| +    explicit FakeRtpTransportController(RtcEventLog* event_log)
 | 
| +        : simulated_clock_(123456),
 | 
| +          congestion_controller_(&simulated_clock_,
 | 
| +                                 &bitrate_observer_,
 | 
| +                                 &remote_bitrate_observer_,
 | 
| +                                 event_log,
 | 
| +                                 &packet_router_) {}
 | 
| +    CongestionController* congestion_controller() override {
 | 
| +      return &congestion_controller_;
 | 
| +    }
 | 
| +    VieRemb* remb() override { return nullptr; }
 | 
| +    PacketRouter* packet_router() override { return &packet_router_; }
 | 
| +
 | 
| +   private:
 | 
| +    SimulatedClock simulated_clock_;
 | 
| +    testing::NiceMock<MockCongestionObserver> bitrate_observer_;
 | 
| +    testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_;
 | 
| +    PacketRouter packet_router_;
 | 
| +    CongestionController congestion_controller_;
 | 
| +  };
 | 
| +
 | 
|    explicit ConfigHelper(bool audio_bwe_enabled)
 | 
| -      : simulated_clock_(123456),
 | 
| -        stream_config_(nullptr),
 | 
| -        congestion_controller_(&simulated_clock_,
 | 
| -                               &bitrate_observer_,
 | 
| -                               &remote_bitrate_observer_,
 | 
| -                               &event_log_,
 | 
| -                               &packet_router_),
 | 
| +      : stream_config_(nullptr),
 | 
| +        fake_transport_(&event_log_),
 | 
|          bitrate_allocator_(&limit_observer_),
 | 
|          worker_queue_("ConfigHelper_worker_queue") {
 | 
|      using testing::Invoke;
 | 
| @@ -120,10 +140,7 @@ struct ConfigHelper {
 | 
|    AudioSendStream::Config& config() { return stream_config_; }
 | 
|    rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; }
 | 
|    MockVoEChannelProxy* channel_proxy() { return channel_proxy_; }
 | 
| -  PacketRouter* packet_router() { return &packet_router_; }
 | 
| -  CongestionController* congestion_controller() {
 | 
| -    return &congestion_controller_;
 | 
| -  }
 | 
| +  RtpTransportControllerSendInterface* transport() { return &fake_transport_; }
 | 
|    BitrateAllocator* bitrate_allocator() { return &bitrate_allocator_; }
 | 
|    rtc::TaskQueue* worker_queue() { return &worker_queue_; }
 | 
|    RtcEventLog* event_log() { return &event_log_; }
 | 
| @@ -139,23 +156,16 @@ struct ConfigHelper {
 | 
|      EXPECT_CALL(*channel_proxy_,
 | 
|                  SetSendAudioLevelIndicationStatus(true, kAudioLevelId))
 | 
|          .Times(1);
 | 
| -
 | 
|      if (audio_bwe_enabled) {
 | 
|        EXPECT_CALL(*channel_proxy_,
 | 
|                    EnableSendTransportSequenceNumber(kTransportSequenceNumberId))
 | 
|            .Times(1);
 | 
| -      EXPECT_CALL(*channel_proxy_,
 | 
| -                  RegisterSenderCongestionControlObjects(
 | 
| -                      congestion_controller_.pacer(),
 | 
| -                      congestion_controller_.GetTransportFeedbackObserver(),
 | 
| -                      packet_router(), Ne(nullptr)))
 | 
| +      EXPECT_CALL(*channel_proxy_, RegisterSenderCongestionControlObjects(
 | 
| +                                       &fake_transport_, Ne(nullptr)))
 | 
|            .Times(1);
 | 
|      } else {
 | 
| -      EXPECT_CALL(*channel_proxy_,
 | 
| -                  RegisterSenderCongestionControlObjects(
 | 
| -                      congestion_controller_.pacer(),
 | 
| -                      congestion_controller_.GetTransportFeedbackObserver(),
 | 
| -                      packet_router(), Eq(nullptr)))
 | 
| +      EXPECT_CALL(*channel_proxy_, RegisterSenderCongestionControlObjects(
 | 
| +                                       &fake_transport_, Eq(nullptr)))
 | 
|            .Times(1);
 | 
|      }
 | 
|      EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()).Times(1);
 | 
| @@ -233,17 +243,13 @@ struct ConfigHelper {
 | 
|    }
 | 
|  
 | 
|   private:
 | 
| -  SimulatedClock simulated_clock_;
 | 
|    testing::StrictMock<MockVoiceEngine> voice_engine_;
 | 
|    rtc::scoped_refptr<AudioState> audio_state_;
 | 
|    AudioSendStream::Config stream_config_;
 | 
|    testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr;
 | 
| -  testing::NiceMock<MockCongestionObserver> bitrate_observer_;
 | 
| -  testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_;
 | 
|    MockAudioProcessing audio_processing_;
 | 
|    AudioProcessing::AudioProcessingStatistics audio_processing_stats_;
 | 
| -  PacketRouter packet_router_;
 | 
| -  CongestionController congestion_controller_;
 | 
| +  FakeRtpTransportController fake_transport_;
 | 
|    MockRtcEventLog event_log_;
 | 
|    MockRtcpRttStats rtcp_rtt_stats_;
 | 
|    testing::NiceMock<MockLimitObserver> limit_observer_;
 | 
| @@ -290,16 +296,16 @@ TEST(AudioSendStreamTest, ConstructDestruct) {
 | 
|    ConfigHelper helper(false);
 | 
|    internal::AudioSendStream send_stream(
 | 
|        helper.config(), helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|  }
 | 
|  
 | 
|  TEST(AudioSendStreamTest, SendTelephoneEvent) {
 | 
|    ConfigHelper helper(false);
 | 
|    internal::AudioSendStream send_stream(
 | 
|        helper.config(), helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|    helper.SetupMockForSendTelephoneEvent();
 | 
|    EXPECT_TRUE(send_stream.SendTelephoneEvent(kTelephoneEventPayloadType,
 | 
|        kTelephoneEventPayloadFrequency, kTelephoneEventCode,
 | 
| @@ -310,8 +316,8 @@ TEST(AudioSendStreamTest, SetMuted) {
 | 
|    ConfigHelper helper(false);
 | 
|    internal::AudioSendStream send_stream(
 | 
|        helper.config(), helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|    EXPECT_CALL(*helper.channel_proxy(), SetInputMute(true));
 | 
|    send_stream.SetMuted(true);
 | 
|  }
 | 
| @@ -320,24 +326,24 @@ TEST(AudioSendStreamTest, AudioBweCorrectObjectsOnChannelProxy) {
 | 
|    ConfigHelper helper(true);
 | 
|    internal::AudioSendStream send_stream(
 | 
|        helper.config(), helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|  }
 | 
|  
 | 
|  TEST(AudioSendStreamTest, NoAudioBweCorrectObjectsOnChannelProxy) {
 | 
|    ConfigHelper helper(false);
 | 
|    internal::AudioSendStream send_stream(
 | 
|        helper.config(), helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|  }
 | 
|  
 | 
|  TEST(AudioSendStreamTest, GetStats) {
 | 
|    ConfigHelper helper(false);
 | 
|    internal::AudioSendStream send_stream(
 | 
|        helper.config(), helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|    helper.SetupMockForGetStats();
 | 
|    AudioSendStream::Stats stats = send_stream.GetStats();
 | 
|    EXPECT_EQ(kSsrc, stats.local_ssrc);
 | 
| @@ -367,8 +373,8 @@ TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) {
 | 
|    ConfigHelper helper(false);
 | 
|    internal::AudioSendStream send_stream(
 | 
|        helper.config(), helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|    helper.SetupMockForGetStats();
 | 
|    EXPECT_FALSE(send_stream.GetStats().typing_noise_detected);
 | 
|  
 | 
| @@ -421,8 +427,8 @@ TEST(AudioSendStreamTest, SendCodecAppliesConfigParams) {
 | 
|        EnableAudioNetworkAdaptor(*stream_config.audio_network_adaptor_config));
 | 
|    internal::AudioSendStream send_stream(
 | 
|        stream_config, helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|  }
 | 
|  
 | 
|  // VAD is applied when codec is mono and the CNG frequency matches the codec
 | 
| @@ -438,16 +444,16 @@ TEST(AudioSendStreamTest, SendCodecCanApplyVad) {
 | 
|        .WillOnce(Return(true));
 | 
|    internal::AudioSendStream send_stream(
 | 
|        stream_config, helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|  }
 | 
|  
 | 
|  TEST(AudioSendStreamTest, DoesNotPassHigherBitrateThanMaxBitrate) {
 | 
|    ConfigHelper helper(false);
 | 
|    internal::AudioSendStream send_stream(
 | 
|        helper.config(), helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|    EXPECT_CALL(*helper.channel_proxy(),
 | 
|                SetBitrate(helper.config().max_bitrate_bps, _));
 | 
|    send_stream.OnBitrateUpdated(helper.config().max_bitrate_bps + 5000, 0.0, 50,
 | 
| @@ -458,8 +464,8 @@ TEST(AudioSendStreamTest, ProbingIntervalOnBitrateUpdated) {
 | 
|    ConfigHelper helper(false);
 | 
|    internal::AudioSendStream send_stream(
 | 
|        helper.config(), helper.audio_state(), helper.worker_queue(),
 | 
| -      helper.packet_router(), helper.congestion_controller(),
 | 
| -      helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
 | 
| +      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
 | 
| +      helper.rtcp_rtt_stats());
 | 
|    EXPECT_CALL(*helper.channel_proxy(), SetBitrate(_, 5000));
 | 
|    send_stream.OnBitrateUpdated(50000, 0.0, 50, 5000);
 | 
|  }
 | 
| 
 |