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

Unified Diff: ash/metrics/user_metrics_recorder.h

Issue 1093483002: Changed when the UMA metric Ash.NumberOfVisibleWindowsInPrimaryDisplay is recorded. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added unittests. Created 5 years, 8 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: ash/metrics/user_metrics_recorder.h
diff --git a/ash/metrics/user_metrics_recorder.h b/ash/metrics/user_metrics_recorder.h
index da39a1063c89f0923feafa03646277d667b74631..9e6b5e383950fd35a929bcaca33bf926933007fe 100644
--- a/ash/metrics/user_metrics_recorder.h
+++ b/ash/metrics/user_metrics_recorder.h
@@ -127,14 +127,39 @@ enum UserMetricsAction {
// (RecordUserMetricsAction) are passed through the UserMetricsRecorder.
class ASH_EXPORT UserMetricsRecorder {
public:
+ // Creates a UserMetricsRecorder that will automatically start the repeating
+ // timer. Equivalent to calling UserMetricsRecorder(true).
UserMetricsRecorder();
- ~UserMetricsRecorder();
+ // Creates a UserMetricsRecorder and will only start the repeating timer if
+ // |record_periodic_metrics| is true. This is useful for tests that do not
+ // want the timer to be started.
+ // TODO(bruthig): Add a constructor that accepts a base::RepeatingTimer so
+ // that tests can inject a test double that can be controlled by the test. The
+ // missing piece is a suitable base::RepeatingTimer test double.
+ explicit UserMetricsRecorder(bool record_periodic_metrics);
+
+ virtual ~UserMetricsRecorder();
+
+ // Records an Ash owned user action.
void RecordUserMetricsAction(ash::UserMetricsAction action);
- private:
+
+ protected:
+ // Records UMA metrics. Is invoked periodically by the |timer_|.
void RecordPeriodicMetrics();
+ // Returns true if there is an active user and their session isn't currently
+ // locked.
+ bool UserIsActive();
+
+ private:
+ // Starts the |timer_| and binds it to |RecordPeriodicMetrics|.
+ void StartTimer();
+
+ // The periodic timer that triggers metrics to be recorded.
base::RepeatingTimer<UserMetricsRecorder> timer_;
+
+ DISALLOW_COPY_AND_ASSIGN(UserMetricsRecorder);
};
} // namespace ash

Powered by Google App Engine
This is Rietveld 408576698