Let MetricsService know about some Android Activities
To tune our crash states more finely, we need to track which Activity is in the
foreground when Chrome is killed. Add piping to let MetricsService know when
Activities are swapped in and out by the user.
The CL makes MetricsService track how many times particular Activities have been
launched, as well as how often Chrome was improperly closed while one of these
Activities was in the foreground (i.e. crashed). These numbers are concatenated
into a histogram, which is then sent to the server.
BUG=321346
Review URL: https://codereview.chromium.org/137623002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250410 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/metrics/metrics_service.cc b/chrome/browser/metrics/metrics_service.cc
index cc90ada..a3c0b83 100644
--- a/chrome/browser/metrics/metrics_service.cc
+++ b/chrome/browser/metrics/metrics_service.cc
@@ -482,6 +482,10 @@
registry->RegisterInt64Pref(prefs::kUninstallMetricsUptimeSec, 0);
registry->RegisterInt64Pref(prefs::kUninstallLastLaunchTimeSec, 0);
registry->RegisterInt64Pref(prefs::kUninstallLastObservedRunTimeSec, 0);
+
+#if defined(OS_ANDROID)
+ RegisterPrefsAndroid(registry);
+#endif // defined(OS_ANDROID)
}
// static
@@ -510,6 +514,10 @@
local_state->ClearPref(prefs::kMetricsInitialLogs);
local_state->ClearPref(prefs::kMetricsOngoingLogs);
+
+#if defined(OS_ANDROID)
+ DiscardOldStabilityStatsAndroid(local_state);
+#endif // defined(OS_ANDROID)
}
MetricsService::MetricsService()
@@ -946,6 +954,10 @@
session_id_ = pref->GetInteger(prefs::kMetricsSessionID);
+#if defined(OS_ANDROID)
+ LogAndroidStabilityToPrefs(pref);
+#endif // defined(OS_ANDROID)
+
if (!pref->GetBoolean(prefs::kStabilityExitedCleanly)) {
IncrementPrefValue(prefs::kStabilityCrashCount);
// Reset flag, and wait until we call LogNeedForCleanShutdown() before
@@ -1534,6 +1546,10 @@
log_manager_.PauseCurrentLog();
log_manager_.BeginLoggingWithLog(initial_stability_log.release(),
MetricsLog::INITIAL_LOG);
+#if defined(OS_ANDROID)
+ ConvertAndroidStabilityPrefsToHistograms(pref);
+ RecordCurrentStabilityHistograms();
+#endif // defined(OS_ANDROID)
log_manager_.FinishCurrentLog();
log_manager_.ResumePausedLog();
@@ -1560,6 +1576,9 @@
// before writing them.
log_manager_.PauseCurrentLog();
log_manager_.BeginLoggingWithLog(initial_metrics_log_.release(), log_type);
+#if defined(OS_ANDROID)
+ ConvertAndroidStabilityPrefsToHistograms(pref);
+#endif // defined(OS_ANDROID)
RecordCurrentHistograms();
log_manager_.FinishCurrentLog();
log_manager_.ResumePausedLog();