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..4017645c1d6f022988184fb5ac67b44ccc509649 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, 50000, 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, 50000, 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 the network is down. |
+ EXPECT_EQ(300000 / 2, start_bitrate); |
+ EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_); |
+ EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_); |
+ |
+ // Set network back up. |
+ allocator_->OnNetworkChanged(1500000, 0, 50); |
+ EXPECT_EQ(750000u, bitrate_observer_1.last_bitrate_); |
+ EXPECT_EQ(750000u, bitrate_observer_2.last_bitrate_); |
+} |
+ |
} // namespace webrtc |