Ensure that the start bitrate can be set multiple times.

If the start bitrate is set twice, it will be set to the sum of the start
bitrates of the currently registered bitrate observers, or left unchanged
if the current estimate actually is greater than the sum.

BUG=3503
R=henrik.lundin@webrtc.org, pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/15839004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6491 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc b/webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc
index b15eb29..8523d50 100644
--- a/webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc
+++ b/webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc
@@ -83,6 +83,24 @@
   controller_->RemoveBitrateObserver(&bitrate_observer);
 }
 
+TEST_F(BitrateControllerTest, UpdatingBitrateObserver) {
+  TestBitrateObserver bitrate_observer;
+  controller_->SetBitrateObserver(&bitrate_observer, 200000, 100000, 1500000);
+  clock_.AdvanceTimeMilliseconds(25);
+  controller_->Process();
+  EXPECT_EQ(200000u, bitrate_observer.last_bitrate_);
+
+  controller_->SetBitrateObserver(&bitrate_observer, 1500000, 100000, 1500000);
+  clock_.AdvanceTimeMilliseconds(25);
+  controller_->Process();
+  EXPECT_EQ(1500000u, bitrate_observer.last_bitrate_);
+
+  controller_->SetBitrateObserver(&bitrate_observer, 500000, 100000, 1500000);
+  clock_.AdvanceTimeMilliseconds(25);
+  controller_->Process();
+  EXPECT_EQ(1500000u, bitrate_observer.last_bitrate_);
+}
+
 TEST_F(BitrateControllerTest, OneBitrateObserverOneRtcpObserver) {
   TestBitrateObserver bitrate_observer;
   controller_->SetBitrateObserver(&bitrate_observer, 200000, 100000, 300000);