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

Unified Diff: metrics_daemon.cc

Issue 2576005: Update metrics_daemon to use base/time.h instead of time_t directly. (Closed) Base URL: ssh://git@chromiumos-git/chromeos
Patch Set: Remove unused constant. Created 10 years, 7 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 | « metrics_daemon.h ('k') | metrics_daemon_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: metrics_daemon.cc
diff --git a/metrics_daemon.cc b/metrics_daemon.cc
index 6e01932431a1bdceca399505fed1934454eb36ef..ecbea052d4b1bbb68ea87376e55c84dfce384b0c 100644
--- a/metrics_daemon.cc
+++ b/metrics_daemon.cc
@@ -10,6 +10,10 @@
#include <base/eintr_wrapper.h>
#include <base/logging.h>
+using base::Time;
+using base::TimeDelta;
+using base::TimeTicks;
+
#define SAFE_MESSAGE(e) (e.message ? e.message : "unknown error")
#define DBUS_IFACE_CONNMAN_MANAGER "org.moblin.connman.Manager"
#define DBUS_IFACE_POWER_MANAGER "org.chromium.Power.Manager"
@@ -25,7 +29,6 @@ static const int kSecondsPerMinute = 60;
static const int kMinutesPerHour = 60;
static const int kHoursPerDay = 24;
static const int kMinutesPerDay = kHoursPerDay * kMinutesPerHour;
-static const int kSecondsPerDay = kMinutesPerDay * kSecondsPerMinute;
// The daily use monitor is scheduled to a 1-minute interval after
// initial user activity and then it's exponentially backed off to
@@ -152,8 +155,9 @@ void MetricsDaemon::Loop() {
DBusHandlerResult MetricsDaemon::MessageFilter(DBusConnection* connection,
DBusMessage* message,
void* user_data) {
- time_t now = time(NULL);
- DLOG(INFO) << "message intercepted @ " << now;
+ Time now = Time::Now();
+ TimeTicks ticks = TimeTicks::Now();
+ DLOG(INFO) << "message intercepted @ " << now.ToInternalValue();
int message_type = dbus_message_get_type(message);
if (message_type != DBUS_MESSAGE_TYPE_SIGNAL) {
@@ -175,7 +179,7 @@ DBusHandlerResult MetricsDaemon::MessageFilter(DBusConnection* connection,
char *state_name;
dbus_message_iter_get_basic(&iter, &state_name);
- daemon->NetStateChanged(state_name, now);
+ daemon->NetStateChanged(state_name, ticks);
} else if (strcmp(interface, DBUS_IFACE_POWER_MANAGER) == 0) {
CHECK(strcmp(dbus_message_get_member(message),
"PowerStateChanged") == 0);
@@ -205,7 +209,7 @@ DBusHandlerResult MetricsDaemon::MessageFilter(DBusConnection* connection,
return DBUS_HANDLER_RESULT_HANDLED;
}
-void MetricsDaemon::NetStateChanged(const char* state_name, time_t now) {
+void MetricsDaemon::NetStateChanged(const char* state_name, TimeTicks ticks) {
DLOG(INFO) << "network state: " << state_name;
NetworkState state = LookupNetworkState(state_name);
@@ -219,7 +223,8 @@ void MetricsDaemon::NetStateChanged(const char* state_name, time_t now) {
if (state != kNetworkStateOnline &&
network_state_ == kNetworkStateOnline &&
power_state_ != kPowerStateMem) {
- int online_time = static_cast<int>(now - network_state_last_);
+ TimeDelta since_online = ticks - network_state_last_;
+ int online_time = static_cast<int>(since_online.InSeconds());
SendMetric(kMetricTimeToNetworkDropName, online_time,
kMetricTimeToNetworkDropMin,
kMetricTimeToNetworkDropMax,
@@ -227,7 +232,7 @@ void MetricsDaemon::NetStateChanged(const char* state_name, time_t now) {
}
network_state_ = state;
- network_state_last_ = now;
+ network_state_last_ = ticks;
}
MetricsDaemon::NetworkState
@@ -241,7 +246,7 @@ MetricsDaemon::LookupNetworkState(const char* state_name) {
return kUnknownNetworkState;
}
-void MetricsDaemon::PowerStateChanged(const char* state_name, time_t now) {
+void MetricsDaemon::PowerStateChanged(const char* state_name, Time now) {
DLOG(INFO) << "power state: " << state_name;
power_state_ = LookupPowerState(state_name);
@@ -260,8 +265,7 @@ MetricsDaemon::LookupPowerState(const char* state_name) {
return kUnknownPowerState;
}
-void MetricsDaemon::ScreenSaverStateChanged(const char* state_name,
- time_t now) {
+void MetricsDaemon::ScreenSaverStateChanged(const char* state_name, Time now) {
DLOG(INFO) << "screen-saver state: " << state_name;
screensaver_state_ = LookupScreenSaverState(state_name);
SetUserActiveState(screensaver_state_ == kScreenSaverStateUnlocked, now);
@@ -278,8 +282,7 @@ MetricsDaemon::LookupScreenSaverState(const char* state_name) {
return kUnknownScreenSaverState;
}
-void MetricsDaemon::SessionStateChanged(const char* state_name,
- time_t now) {
+void MetricsDaemon::SessionStateChanged(const char* state_name, Time now) {
DLOG(INFO) << "user session state: " << state_name;
session_state_ = LookupSessionState(state_name);
SetUserActiveState(session_state_ == kSessionStateStarted, now);
@@ -296,13 +299,23 @@ MetricsDaemon::LookupSessionState(const char* state_name) {
return kUnknownSessionState;
}
-void MetricsDaemon::SetUserActiveState(bool active, time_t now) {
+void MetricsDaemon::SetUserActiveState(bool active, Time now) {
DLOG(INFO) << "user: " << (active ? "active" : "inactive");
// Calculates the seconds of active use since the last update and
- // the day since Epoch, and logs the usage data.
- int seconds = user_active_ ? (now - user_active_last_) : 0;
- int day = now / kSecondsPerDay;
+ // the day since Epoch, and logs the usage data. Guards against the
+ // time jumping back and forth due to the user changing it by
+ // discarding the new use time.
+ int seconds = 0;
+ if (user_active_ && now > user_active_last_) {
+ TimeDelta since_active = now - user_active_last_;
+ if (since_active < TimeDelta::FromSeconds(
+ kUseMonitorIntervalMax + kSecondsPerMinute)) {
+ seconds = static_cast<int>(since_active.InSeconds());
+ }
+ }
+ TimeDelta since_epoch = now - Time();
+ int day = since_epoch.InDays();
LogDailyUseRecord(day, seconds);
// Schedules a use monitor on inactive->active transitions and
@@ -388,7 +401,7 @@ gboolean MetricsDaemon::UseMonitorStatic(gpointer data) {
}
bool MetricsDaemon::UseMonitor() {
- SetUserActiveState(user_active_, time(NULL));
+ SetUserActiveState(user_active_, Time::Now());
// If a new monitor source/instance is scheduled, returns false to
// tell GLib to destroy this monitor source/instance. Returns true
« no previous file with comments | « metrics_daemon.h ('k') | metrics_daemon_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698