Index: chrome/browser/android/data_usage/tab_data_use_entry_unittest.cc |
diff --git a/chrome/browser/android/data_usage/tab_data_use_entry_unittest.cc b/chrome/browser/android/data_usage/tab_data_use_entry_unittest.cc |
index 5cf09cb42b4e3edfee29a72890f44cad4950dd58..9927fcddc207c6245ba73d8fc0310eb96ed78719 100644 |
--- a/chrome/browser/android/data_usage/tab_data_use_entry_unittest.cc |
+++ b/chrome/browser/android/data_usage/tab_data_use_entry_unittest.cc |
@@ -10,6 +10,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/strings/stringprintf.h" |
+#include "base/test/histogram_tester.h" |
#include "base/time/time.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -415,8 +416,8 @@ TEST_F(MockTabDataUseEntryTest, ClosedTabSessionExpiry) { |
} |
// Checks that tracking session history does not grow beyond |
-// GetMaxSessionsPerTabForTests entries, and automatically compacts itself by |
-// removing the oldest tracking sessions. |
+// GetMaxSessionsPerTab entries, and automatically compacts itself by removing |
+// the oldest tracking sessions. |
TEST_F(MockTabDataUseEntryTest, CompactTabSessionHistory) { |
const uint32_t per_session_duration = 10; |
const uint32_t next_session_start_gap = 10; |
@@ -471,6 +472,66 @@ TEST_F(MockTabDataUseEntryTest, CompactTabSessionHistory) { |
} |
} |
+TEST_F(MockTabDataUseEntryTest, TrackingSessionLifetimeHistogram) { |
+ const char kUMATrackingSessionLifetimeSecondsHistogram[] = |
+ "DataUse.TabModel.TrackingSessionLifetime"; |
+ base::HistogramTester histogram_tester; |
+ |
+ // Tracking session from time=20 to time=30, lifetime of 10 seconds. |
+ tab_entry_->SetNowOffsetInSeconds(20); |
+ EXPECT_TRUE(tab_entry_->StartTracking(kTestLabel1)); |
+ tab_entry_->SetNowOffsetInSeconds(30); |
+ EXPECT_TRUE(tab_entry_->EndTracking()); |
+ |
+ histogram_tester.ExpectTotalCount(kUMATrackingSessionLifetimeSecondsHistogram, |
+ 1); |
+ histogram_tester.ExpectBucketCount( |
+ kUMATrackingSessionLifetimeSecondsHistogram, |
+ base::TimeDelta::FromSeconds(10).InMilliseconds(), 1); |
+ |
+ // Tracking session from time=40 to time=70, lifetime of 30 seconds. |
+ tab_entry_->SetNowOffsetInSeconds(40); |
+ EXPECT_TRUE(tab_entry_->StartTracking(kTestLabel1)); |
+ tab_entry_->SetNowOffsetInSeconds(70); |
+ EXPECT_TRUE(tab_entry_->EndTracking()); |
+ |
+ histogram_tester.ExpectTotalCount(kUMATrackingSessionLifetimeSecondsHistogram, |
+ 2); |
+ histogram_tester.ExpectBucketCount( |
+ kUMATrackingSessionLifetimeSecondsHistogram, |
+ base::TimeDelta::FromSeconds(30).InMilliseconds(), 1); |
+} |
+ |
+TEST_F(MockTabDataUseEntryTest, OldInactiveSessionRemovaltimeHistogram) { |
+ const char kUMAOldInactiveSessionRemovalDurationSecondsHistogram[] = |
+ "DataUse.TabModel.OldInactiveSessionRemovalDuration"; |
+ base::HistogramTester histogram_tester; |
+ const size_t max_sessions_per_tab = GetMaxSessionsPerTab(); |
+ |
+ // Start a tracking session at time=20, and end it at time=30. |
+ tab_entry_->SetNowOffsetInSeconds(20); |
+ EXPECT_TRUE(tab_entry_->StartTracking(kTestLabel1)); |
+ tab_entry_->SetNowOffsetInSeconds(30); |
+ EXPECT_TRUE(tab_entry_->EndTracking()); |
+ |
+ for (size_t session = 1; session < max_sessions_per_tab; ++session) { |
+ EXPECT_TRUE(tab_entry_->StartTracking(kTestLabel1)); |
+ EXPECT_TRUE(tab_entry_->EndTracking()); |
+ } |
+ |
+ // Add one more session at time=60. This removes the first inactive tracking |
+ // session that ended at time=30, with removal duration of 30 seconds. |
+ tab_entry_->SetNowOffsetInSeconds(60); |
+ EXPECT_TRUE(tab_entry_->StartTracking(kTestLabel1)); |
+ EXPECT_TRUE(tab_entry_->EndTracking()); |
+ |
+ histogram_tester.ExpectTotalCount( |
+ kUMAOldInactiveSessionRemovalDurationSecondsHistogram, 1); |
+ histogram_tester.ExpectBucketCount( |
+ kUMAOldInactiveSessionRemovalDurationSecondsHistogram, |
+ base::TimeDelta::FromSeconds(30).InMilliseconds(), 1); |
+} |
+ |
} // namespace android |
} // namespace chrome |