Index: chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker_unittest.cc |
diff --git a/chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker_unittest.cc b/chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker_unittest.cc |
index fa5eaf8c3a152099ef8dcc46a22b5ba9f0f4b37a..85ac27082a468f38ed7a2c6f59b40515186af3f1 100644 |
--- a/chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker_unittest.cc |
+++ b/chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker_unittest.cc |
@@ -10,6 +10,12 @@ |
#include "base/test/test_mock_time_task_runner.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+namespace { |
+ |
+const base::TimeDelta kZeroTime = base::TimeDelta::FromSeconds(0); |
+ |
+} // namespace |
+ |
// Mock class for |DesktopSessionDurationTracker| for testing. |
class MockDesktopSessionDurationTracker |
: public metrics::DesktopSessionDurationTracker { |
@@ -40,7 +46,7 @@ TEST(DesktopSessionDurationTrackerTest, TestVisibility) { |
MockDesktopSessionDurationTracker instance; |
// The browser becomes visible but it shouldn't start the session. |
- instance.OnVisibilityChanged(true); |
+ instance.OnVisibilityChanged(true, kZeroTime); |
EXPECT_FALSE(instance.in_session()); |
EXPECT_TRUE(instance.is_visible()); |
EXPECT_FALSE(instance.is_audio_playing()); |
@@ -56,19 +62,19 @@ TEST(DesktopSessionDurationTrackerTest, TestVisibility) { |
// session. |
instance.OnUserEvent(); |
instance.OnUserEvent(); |
- instance.OnVisibilityChanged(false); |
+ instance.OnVisibilityChanged(false, kZeroTime); |
EXPECT_FALSE(instance.in_session()); |
EXPECT_FALSE(instance.is_visible()); |
EXPECT_FALSE(instance.is_audio_playing()); |
histogram_tester.ExpectTotalCount("Session.TotalDuration", 1); |
// For the second time only visibility change should start the session. |
- instance.OnVisibilityChanged(true); |
+ instance.OnVisibilityChanged(true, kZeroTime); |
EXPECT_TRUE(instance.in_session()); |
EXPECT_TRUE(instance.is_visible()); |
EXPECT_FALSE(instance.is_audio_playing()); |
histogram_tester.ExpectTotalCount("Session.TotalDuration", 1); |
- instance.OnVisibilityChanged(false); |
+ instance.OnVisibilityChanged(false, kZeroTime); |
EXPECT_FALSE(instance.in_session()); |
EXPECT_FALSE(instance.is_visible()); |
EXPECT_FALSE(instance.is_audio_playing()); |
@@ -94,7 +100,7 @@ TEST(DesktopSessionDurationTrackerTest, TestUserEvent) { |
EXPECT_FALSE(instance.is_audio_playing()); |
histogram_tester.ExpectTotalCount("Session.TotalDuration", 0); |
- instance.OnVisibilityChanged(true); |
+ instance.OnVisibilityChanged(true, kZeroTime); |
instance.OnUserEvent(); |
EXPECT_TRUE(instance.in_session()); |
EXPECT_TRUE(instance.is_visible()); |
@@ -119,14 +125,14 @@ TEST(DesktopSessionDurationTrackerTest, TestAudioEvent) { |
MockDesktopSessionDurationTracker instance; |
instance.SetInactivityTimeoutForTesting(1); |
- instance.OnVisibilityChanged(true); |
+ instance.OnVisibilityChanged(true, kZeroTime); |
instance.OnAudioStart(); |
EXPECT_TRUE(instance.in_session()); |
EXPECT_TRUE(instance.is_visible()); |
EXPECT_TRUE(instance.is_audio_playing()); |
histogram_tester.ExpectTotalCount("Session.TotalDuration", 0); |
- instance.OnVisibilityChanged(false); |
+ instance.OnVisibilityChanged(false, kZeroTime); |
EXPECT_TRUE(instance.in_session()); |
EXPECT_FALSE(instance.is_visible()); |
EXPECT_TRUE(instance.is_audio_playing()); |
@@ -149,7 +155,36 @@ TEST(DesktopSessionDurationTrackerTest, TestAudioEvent) { |
histogram_tester.ExpectTotalCount("Session.TotalDuration", 1); |
} |
-TEST(DesktopSessionDurationTrackerTest, TestTimeoutDiscount) { |
+TEST(DesktopSessionDurationTrackerTest, TestInputTimeoutDiscount) { |
+ base::MessageLoop loop(base::MessageLoop::TYPE_DEFAULT); |
+ base::HistogramTester histogram_tester; |
+ MockDesktopSessionDurationTracker instance; |
+ |
+ int inactivity_interval_seconds = 2; |
+ instance.SetInactivityTimeoutForTesting(inactivity_interval_seconds); |
+ |
+ instance.OnVisibilityChanged(true, kZeroTime); |
+ base::TimeTicks before_session_start = base::TimeTicks::Now(); |
+ instance.OnUserEvent(); // This should start the session |
+ histogram_tester.ExpectTotalCount("Session.TotalDuration", 0); |
+ |
+ // Wait until the session expires. |
+ while (!instance.is_timeout()) { |
+ base::RunLoop().RunUntilIdle(); |
+ } |
+ base::TimeTicks after_session_end = base::TimeTicks::Now(); |
+ |
+ histogram_tester.ExpectTotalCount("Session.TotalDuration", 1); |
+ base::Bucket bucket = |
+ histogram_tester.GetAllSamples("Session.TotalDuration")[0]; |
+ int max_expected_value = |
+ (after_session_end - before_session_start - |
+ base::TimeDelta::FromSeconds(inactivity_interval_seconds)) |
+ .InMilliseconds(); |
+ EXPECT_LE(bucket.min, max_expected_value); |
+} |
Alexei Svitkine (slow)
2016/10/03 16:50:33
I'm having trouble seeing how this test is differe
chrisha
2016/10/03 16:58:40
Oops, was in the middle of writing this and comple
|
+ |
+TEST(DesktopSessionDurationTrackerTest, TestVisibilityTimeoutDiscount) { |
base::MessageLoop loop(base::MessageLoop::TYPE_DEFAULT); |
base::HistogramTester histogram_tester; |
MockDesktopSessionDurationTracker instance; |
@@ -157,7 +192,7 @@ TEST(DesktopSessionDurationTrackerTest, TestTimeoutDiscount) { |
int inactivity_interval_seconds = 2; |
instance.SetInactivityTimeoutForTesting(inactivity_interval_seconds); |
- instance.OnVisibilityChanged(true); |
+ instance.OnVisibilityChanged(true, kZeroTime); |
base::TimeTicks before_session_start = base::TimeTicks::Now(); |
instance.OnUserEvent(); // This should start the session |
histogram_tester.ExpectTotalCount("Session.TotalDuration", 0); |