shill: Add support for Network.*.TimeResumeToReady
BUG=chromium-os:24440
TEST=Unit tests, network_WiFiManager, manually suspend/resume system
Change-Id: Ica618f2c713bac92f609d7894b16b0dd93af1645
Reviewed-on: https://gerrit.chromium.org/gerrit/17263
Commit-Ready: Thieu Le <thieule@chromium.org>
Reviewed-by: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
diff --git a/metrics.cc b/metrics.cc
index a5cf731..c08f835 100644
--- a/metrics.cc
+++ b/metrics.cc
@@ -43,6 +43,8 @@
const int Metrics::kMetricTimeToDropSecondsMax = 8 * 60 * 60; // 8 hours
const int Metrics::kMetricTimeToDropSecondsMin = 1;
+const char Metrics::kMetricTimeResumeToReadyMilliseconds[] =
+ "Network.Shill.%s.TimeResumeToReady";
const char Metrics::kMetricTimeToConfigMilliseconds[] =
"Network.Shill.%s.TimeToConfig";
const char Metrics::kMetricTimeToJoinMilliseconds[] =
@@ -71,12 +73,16 @@
const uint16 Metrics::kWiFiFrequency5745 = 5745;
const uint16 Metrics::kWiFiFrequency5825 = 5825;
+// static
+const char Metrics::kMetricPowerManagerKey[] = "metrics";
+
Metrics::Metrics()
: library_(&metrics_library_),
last_default_technology_(Technology::kUnknown),
was_online_(false),
time_online_timer_(new chromeos_metrics::Timer),
- time_to_drop_timer_(new chromeos_metrics::Timer) {
+ time_to_drop_timer_(new chromeos_metrics::Timer),
+ time_resume_to_ready_timer_(new chromeos_metrics::Timer) {
metrics_library_.Init();
chromeos_metrics::TimerReporter::set_metrics_lib(library_);
}
@@ -207,9 +213,6 @@
time_online_timer_->Start();
}
- // TODO(thieule): Ignore changes when suspending.
- // crosbug.com/24440
-
// Ignore changes that are not online/offline transitions; e.g.
// switching between wired and wireless. TimeToDrop measures
// time online regardless of how we are connected.
@@ -247,7 +250,10 @@
if (new_state != Service::kStateConnected)
return;
- service->SendPostReadyStateMetrics();
+ base::TimeDelta time_resume_to_ready;
+ time_resume_to_ready_timer_->GetElapsedTime(&time_resume_to_ready);
+ time_resume_to_ready_timer_->Reset();
+ service->SendPostReadyStateMetrics(time_resume_to_ready.InMilliseconds());
}
string Metrics::GetFullMetricName(const char *metric_name,
@@ -267,9 +273,12 @@
kMetricDisconnectNumBuckets);
}
-void Metrics::NotifyPower() {
- // TODO(thieule): Handle suspend and resume.
- // crosbug.com/24440
+void Metrics::NotifyPowerStateChange(PowerManager::SuspendState new_state) {
+ if (new_state == PowerManagerProxyDelegate::kOn) {
+ time_resume_to_ready_timer_->Start();
+ } else {
+ time_resume_to_ready_timer_->Reset();
+ }
}
bool Metrics::SendEnumToUMA(const string &name, int sample, int max) {