Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Unified Diff: chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker_unittest.cc

Issue 2385103003: [DesktopSessionDurationTracker] Remove visibility-switch timeout from session length. (Closed)
Patch Set: Fix unittests. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698