Variable audio bitrate.

This is a first CL wiring up AudioSendStream to BitrateAllocator. This
is still experimental and there is a test added for the audio only case,
combined audio video variable bitrate test cases will be added as a
follow up.

BUG=5079

Review-Url: https://codereview.webrtc.org/2165743003
Cr-Original-Commit-Position: refs/heads/master@{#13527}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 86cc6ffc7ca14c79d760695e89ab9698ed251873
diff --git a/audio/audio_send_stream_unittest.cc b/audio/audio_send_stream_unittest.cc
index ea70d30..7f940fc 100644
--- a/audio/audio_send_stream_unittest.cc
+++ b/audio/audio_send_stream_unittest.cc
@@ -50,6 +50,13 @@
 const int kTelephoneEventCode = 45;
 const int kTelephoneEventDuration = 6789;
 
+class MockLimitObserver : public BitrateAllocator::LimitObserver {
+ public:
+  MOCK_METHOD2(OnAllocationLimitsChanged,
+               void(uint32_t min_send_bitrate_bps,
+                    uint32_t max_padding_bitrate_bps));
+};
+
 struct ConfigHelper {
   ConfigHelper()
       : simulated_clock_(123456),
@@ -57,7 +64,8 @@
         congestion_controller_(&simulated_clock_,
                                &bitrate_observer_,
                                &remote_bitrate_observer_,
-                               &event_log_) {
+                               &event_log_),
+        bitrate_allocator_(&limit_observer_) {
     using testing::Invoke;
     using testing::StrEq;
 
@@ -116,6 +124,7 @@
   CongestionController* congestion_controller() {
     return &congestion_controller_;
   }
+  BitrateAllocator* bitrate_allocator() { return &bitrate_allocator_; }
 
   void SetupMockForSendTelephoneEvent() {
     EXPECT_TRUE(channel_proxy_);
@@ -170,6 +179,8 @@
   testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_;
   CongestionController congestion_controller_;
   MockRtcEventLog event_log_;
+  testing::NiceMock<MockLimitObserver> limit_observer_;
+  BitrateAllocator bitrate_allocator_;
 };
 }  // namespace
 
@@ -192,13 +203,15 @@
 TEST(AudioSendStreamTest, ConstructDestruct) {
   ConfigHelper helper;
   internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
-                                        helper.congestion_controller());
+                                        helper.congestion_controller(),
+                                        helper.bitrate_allocator());
 }
 
 TEST(AudioSendStreamTest, SendTelephoneEvent) {
   ConfigHelper helper;
   internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
-                                        helper.congestion_controller());
+                                        helper.congestion_controller(),
+                                        helper.bitrate_allocator());
   helper.SetupMockForSendTelephoneEvent();
   EXPECT_TRUE(send_stream.SendTelephoneEvent(kTelephoneEventPayloadType,
       kTelephoneEventCode, kTelephoneEventDuration));
@@ -207,7 +220,8 @@
 TEST(AudioSendStreamTest, SetMuted) {
   ConfigHelper helper;
   internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
-                                        helper.congestion_controller());
+                                        helper.congestion_controller(),
+                                        helper.bitrate_allocator());
   EXPECT_CALL(*helper.channel_proxy(), SetInputMute(true));
   send_stream.SetMuted(true);
 }
@@ -215,7 +229,8 @@
 TEST(AudioSendStreamTest, GetStats) {
   ConfigHelper helper;
   internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
-                                        helper.congestion_controller());
+                                        helper.congestion_controller(),
+                                        helper.bitrate_allocator());
   helper.SetupMockForGetStats();
   AudioSendStream::Stats stats = send_stream.GetStats();
   EXPECT_EQ(kSsrc, stats.local_ssrc);
@@ -243,7 +258,8 @@
 TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) {
   ConfigHelper helper;
   internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
-                                        helper.congestion_controller());
+                                        helper.congestion_controller(),
+                                        helper.bitrate_allocator());
   helper.SetupMockForGetStats();
   EXPECT_FALSE(send_stream.GetStats().typing_noise_detected);