Add possibility to get the last processed RTT from the call stats class (to be used by RTP/RTCP module).

R=mflodman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5139 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/video_engine/call_stats_unittest.cc b/webrtc/video_engine/call_stats_unittest.cc
index e5b23611..f504094 100644
--- a/webrtc/video_engine/call_stats_unittest.cc
+++ b/webrtc/video_engine/call_stats_unittest.cc
@@ -41,15 +41,24 @@
 
 TEST_F(CallStatsTest, AddAndTriggerCallback) {
   MockStatsObserver stats_observer;
-  RtcpRttObserver* rtcp_observer = call_stats_->rtcp_rtt_observer();
+  RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
   call_stats_->RegisterStatsObserver(&stats_observer);
   TickTime::AdvanceFakeClock(1000);
+  EXPECT_EQ(0U, rtcp_rtt_stats->LastProcessedRtt());
 
-  uint32_t rtt = 25;
-  rtcp_observer->OnRttUpdate(rtt);
-  EXPECT_CALL(stats_observer, OnRttUpdate(rtt))
+  const uint32_t kRtt = 25;
+  rtcp_rtt_stats->OnRttUpdate(kRtt);
+  EXPECT_CALL(stats_observer, OnRttUpdate(kRtt))
       .Times(1);
   call_stats_->Process();
+  EXPECT_EQ(kRtt, rtcp_rtt_stats->LastProcessedRtt());
+
+  const int kRttTimeOutMs = 1500 + 10;
+  TickTime::AdvanceFakeClock(kRttTimeOutMs);
+  EXPECT_CALL(stats_observer, OnRttUpdate(_))
+      .Times(0);
+  call_stats_->Process();
+  EXPECT_EQ(0U, rtcp_rtt_stats->LastProcessedRtt());
 
   call_stats_->DeregisterStatsObserver(&stats_observer);
 }
@@ -57,8 +66,8 @@
 TEST_F(CallStatsTest, ProcessTime) {
   MockStatsObserver stats_observer;
   call_stats_->RegisterStatsObserver(&stats_observer);
-  RtcpRttObserver* rtcp_observer = call_stats_->rtcp_rtt_observer();
-  rtcp_observer->OnRttUpdate(100);
+  RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
+  rtcp_rtt_stats->OnRttUpdate(100);
 
   // Time isn't updated yet.
   EXPECT_CALL(stats_observer, OnRttUpdate(_))
@@ -73,7 +82,7 @@
 
   // Advance clock just too little to get an update.
   TickTime::AdvanceFakeClock(999);
-  rtcp_observer->OnRttUpdate(100);
+  rtcp_rtt_stats->OnRttUpdate(100);
   EXPECT_CALL(stats_observer, OnRttUpdate(_))
       .Times(0);
   call_stats_->Process();
@@ -98,9 +107,9 @@
   call_stats_->RegisterStatsObserver(&stats_observer_2);
   call_stats_->RegisterStatsObserver(&stats_observer_2);
 
-  RtcpRttObserver* rtcp_observer = call_stats_->rtcp_rtt_observer();
+  RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
   uint32_t rtt = 100;
-  rtcp_observer->OnRttUpdate(rtt);
+  rtcp_rtt_stats->OnRttUpdate(rtt);
 
   // Verify both observers are updated.
   TickTime::AdvanceFakeClock(1000);
@@ -113,7 +122,7 @@
   // Deregister the second observer and verify update is only sent to the first
   // observer.
   call_stats_->DeregisterStatsObserver(&stats_observer_2);
-  rtcp_observer->OnRttUpdate(rtt);
+  rtcp_rtt_stats->OnRttUpdate(rtt);
   TickTime::AdvanceFakeClock(1000);
   EXPECT_CALL(stats_observer_1, OnRttUpdate(rtt))
       .Times(1);
@@ -123,7 +132,7 @@
 
   // Deregister the first observer.
   call_stats_->DeregisterStatsObserver(&stats_observer_1);
-  rtcp_observer->OnRttUpdate(rtt);
+  rtcp_rtt_stats->OnRttUpdate(rtt);
   TickTime::AdvanceFakeClock(1000);
   EXPECT_CALL(stats_observer_1, OnRttUpdate(rtt))
       .Times(0);
@@ -136,14 +145,14 @@
 TEST_F(CallStatsTest, ChangeRtt) {
   MockStatsObserver stats_observer;
   call_stats_->RegisterStatsObserver(&stats_observer);
-  RtcpRttObserver* rtcp_observer = call_stats_->rtcp_rtt_observer();
+  RtcpRttStats* rtcp_rtt_stats = call_stats_->rtcp_rtt_stats();
 
   // Advance clock to be ready for an update.
   TickTime::AdvanceFakeClock(1000);
 
   // Set a first value and verify the callback is triggered.
   const uint32_t first_rtt = 100;
-  rtcp_observer->OnRttUpdate(first_rtt);
+  rtcp_rtt_stats->OnRttUpdate(first_rtt);
   EXPECT_CALL(stats_observer, OnRttUpdate(first_rtt))
       .Times(1);
   call_stats_->Process();
@@ -151,7 +160,7 @@
   // Increase rtt and verify the new value is reported.
   TickTime::AdvanceFakeClock(1000);
   const uint32_t high_rtt = first_rtt + 20;
-  rtcp_observer->OnRttUpdate(high_rtt);
+  rtcp_rtt_stats->OnRttUpdate(high_rtt);
   EXPECT_CALL(stats_observer, OnRttUpdate(high_rtt))
       .Times(1);
   call_stats_->Process();
@@ -161,13 +170,13 @@
   // in the callback.
   TickTime::AdvanceFakeClock(1000);
   const uint32_t low_rtt = first_rtt - 20;
-  rtcp_observer->OnRttUpdate(low_rtt);
+  rtcp_rtt_stats->OnRttUpdate(low_rtt);
   EXPECT_CALL(stats_observer, OnRttUpdate(high_rtt))
       .Times(1);
   call_stats_->Process();
 
-  // Advance time to make the high report invalid, the lower rtt should no be in
-  // the callback.
+  // Advance time to make the high report invalid, the lower rtt should now be
+  // in the callback.
   TickTime::AdvanceFakeClock(1000);
   EXPECT_CALL(stats_observer, OnRttUpdate(low_rtt))
       .Times(1);