| Index: metrics_daemon.h
|
| diff --git a/metrics_daemon.h b/metrics_daemon.h
|
| index ba9e13c846121097c0dc4e7693c85aff1fb010a9..835aca36a168a3026f831d4d015efa52ee326b6e 100644
|
| --- a/metrics_daemon.h
|
| +++ b/metrics_daemon.h
|
| @@ -7,11 +7,11 @@
|
|
|
| #include <dbus/dbus.h>
|
| #include <glib.h>
|
| -#include <time.h>
|
|
|
| #include "metrics_library.h"
|
|
|
| #include <gtest/gtest_prod.h> // for FRIEND_TEST
|
| +#include <base/time.h>
|
|
|
| class MetricsDaemon {
|
|
|
| @@ -19,12 +19,10 @@ class MetricsDaemon {
|
| MetricsDaemon()
|
| : daily_use_record_file_(NULL),
|
| network_state_(kUnknownNetworkState),
|
| - network_state_last_(0),
|
| power_state_(kUnknownPowerState),
|
| screensaver_state_(kUnknownScreenSaverState),
|
| session_state_(kUnknownSessionState),
|
| user_active_(false),
|
| - user_active_last_(0),
|
| daily_use_day_last_(0),
|
| usemon_interval_(0),
|
| usemon_source_(NULL) {}
|
| @@ -56,6 +54,7 @@ class MetricsDaemon {
|
| FRIEND_TEST(MetricsDaemonTest, SessionStateChanged);
|
| FRIEND_TEST(MetricsDaemonTest, SetUserActiveStateSendOnLogin);
|
| FRIEND_TEST(MetricsDaemonTest, SetUserActiveStateSendOnMonitor);
|
| + FRIEND_TEST(MetricsDaemonTest, SetUserActiveStateTimeJump);
|
|
|
| // The network states (see network_states.h).
|
| enum NetworkState {
|
| @@ -131,25 +130,25 @@ class MetricsDaemon {
|
| void* user_data);
|
|
|
| // Processes network state change.
|
| - void NetStateChanged(const char* state_name, time_t now);
|
| + void NetStateChanged(const char* state_name, base::TimeTicks ticks);
|
|
|
| // Given the state name, returns the state id.
|
| NetworkState LookupNetworkState(const char* state_name);
|
|
|
| // Processes power state change.
|
| - void PowerStateChanged(const char* state_name, time_t now);
|
| + void PowerStateChanged(const char* state_name, base::Time now);
|
|
|
| // Given the state name, returns the state id.
|
| PowerState LookupPowerState(const char* state_name);
|
|
|
| // Processes screen-saver state change.
|
| - void ScreenSaverStateChanged(const char* state_name, time_t now);
|
| + void ScreenSaverStateChanged(const char* state_name, base::Time now);
|
|
|
| // Given the state name, returns the state id.
|
| ScreenSaverState LookupScreenSaverState(const char* state_name);
|
|
|
| // Processes user session state change.
|
| - void SessionStateChanged(const char* state_name, time_t now);
|
| + void SessionStateChanged(const char* state_name, base::Time now);
|
|
|
| // Given the state name, returns the state id.
|
| SessionState LookupSessionState(const char* state_name);
|
| @@ -158,7 +157,10 @@ class MetricsDaemon {
|
| // since the last update. If the user has just become active,
|
| // reschedule the daily use monitor for more frequent updates --
|
| // this is followed by an exponential back-off (see UseMonitor).
|
| - void SetUserActiveState(bool active, time_t now);
|
| + // While in active use, this method should be called at intervals no
|
| + // longer than kUseMonitorIntervalMax otherwise new use time will be
|
| + // discarded.
|
| + void SetUserActiveState(bool active, base::Time now);
|
|
|
| // Updates the daily usage file, if necessary, by adding |seconds|
|
| // of active use to the |day| since Epoch. If there's usage data for
|
| @@ -205,8 +207,10 @@ class MetricsDaemon {
|
| // Current network state.
|
| NetworkState network_state_;
|
|
|
| - // Timestamps last network state update.
|
| - time_t network_state_last_;
|
| + // Timestamps last network state update. This timestamp is used to
|
| + // sample the time from the network going online to going offline so
|
| + // TimeTicks ensures a monotonically increasing TimeDelta.
|
| + base::TimeTicks network_state_last_;
|
|
|
| // Current power state.
|
| PowerState power_state_;
|
| @@ -221,10 +225,12 @@ class MetricsDaemon {
|
| // started, screen is not locked.
|
| bool user_active_;
|
|
|
| - // Timestamps last user active update.
|
| - time_t user_active_last_;
|
| + // Timestamps last user active update. Active use time is
|
| + // aggregated each day before sending to UMA so using time since the
|
| + // epoch as the timestamp.
|
| + base::Time user_active_last_;
|
|
|
| - // Last stored daily use day (since epoch).
|
| + // Last stored daily use day (since the epoch).
|
| int daily_use_day_last_;
|
|
|
| // Sleep period until the next daily usage aggregation performed by
|
|
|