Index: webrtc/call/bitrate_allocator_unittest.cc |
diff --git a/webrtc/call/bitrate_allocator_unittest.cc b/webrtc/call/bitrate_allocator_unittest.cc |
index 253d3fb3df54cda2e5491633090479218cc306d4..98ebc0962066e4d6ae4e6875fd63ed127944b5d4 100644 |
--- a/webrtc/call/bitrate_allocator_unittest.cc |
+++ b/webrtc/call/bitrate_allocator_unittest.cc |
@@ -222,4 +222,32 @@ TEST_F(BitrateAllocatorTest, ThreeBitrateObserversLowRembEnforceMin) { |
allocator_->RemoveObserver(&bitrate_observer_2); |
allocator_->RemoveObserver(&bitrate_observer_3); |
} |
+ |
+TEST_F(BitrateAllocatorTest, AddObserverWhileNetworkDown) { |
+ TestBitrateObserver bitrate_observer_1; |
+ int start_bitrate = |
+ allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, true); |
+ EXPECT_EQ(300000, start_bitrate); |
+ |
+ // Set network down, ie, no available bitrate. |
+ allocator_->OnNetworkChanged(0, 0, 0); |
+ |
+ EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_); |
+ |
+ TestBitrateObserver bitrate_observer_2; |
+ start_bitrate = |
+ allocator_->AddObserver(&bitrate_observer_2, 200000, 400000, true); |
+ |
+ // Expect the start_bitrate to be set as if the network was still up but that |
+ // the new observer have been notified that that the network is down. |
+ EXPECT_EQ(200000, start_bitrate); |
+ EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_); |
+ EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_); |
+ |
+ // Set network is back up. |
+ allocator_->OnNetworkChanged(1500000, 0, 50); |
+ EXPECT_EQ(700000u, bitrate_observer_1.last_bitrate_); |
+ EXPECT_EQ(800000u, bitrate_observer_2.last_bitrate_); |
+} |
+ |
} // namespace webrtc |