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

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: Addressed comments from patch set 4. 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
« no previous file with comments | « ash/ash.gyp ('k') | ash/metrics/user_metrics_recorder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..afc7ad7c21bc3f16dcbcee07a3cf6f6e06ada33b 100644
--- a/ash/metrics/user_metrics_recorder.h
+++ b/ash/metrics/user_metrics_recorder.h
@@ -10,6 +10,10 @@
namespace ash {
+namespace test {
+class UserMetricsRecorderTestAPI;
+}
+
enum UserMetricsAction {
UMA_ACCEL_EXIT_FIRST_Q,
UMA_ACCEL_EXIT_SECOND_Q,
@@ -127,14 +131,40 @@ enum UserMetricsAction {
// (RecordUserMetricsAction) are passed through the UserMetricsRecorder.
class ASH_EXPORT UserMetricsRecorder {
public:
+ // Creates a UserMetricsRecorder that records metrics periodically. Equivalent
+ // to calling UserMetricsRecorder(true).
UserMetricsRecorder();
- ~UserMetricsRecorder();
+ virtual ~UserMetricsRecorder();
+
+ // Records an Ash owned user action.
void RecordUserMetricsAction(ash::UserMetricsAction action);
+
private:
+ friend class test::UserMetricsRecorderTestAPI;
+
+ // Creates a UserMetricsRecorder and will only record periodic metrics if
+ // |record_periodic_metrics| is true. This is used by 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);
+
+ // Records UMA metrics. Invoked periodically by the |timer_|.
void RecordPeriodicMetrics();
+ // Returns true if the user's session is active and they are in a desktop
+ // environment.
+ bool IsUserInActiveDesktopEnvironment() const;
+
+ // 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
« no previous file with comments | « ash/ash.gyp ('k') | ash/metrics/user_metrics_recorder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698