Index: chrome/browser/metrics/chrome_metrics_service_client.cc |
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc |
index 2b6e1e1885a1aca2e24a7eb3cb54a3cad530145d..fe8d51653ae706d537088803a46aa6ad6e9867ef 100644 |
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc |
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc |
@@ -101,6 +101,18 @@ bool IsCellularLogicEnabled() { |
net::NetworkChangeNotifier::GetConnectionType()); |
} |
+#if defined(OS_ANDROID) |
+// Checks whether it is the first time that cellular uploads logic should be |
+// enabled based on whether the the preference for that logic is initialized. |
+// This should happen only once as the used preference will be initialized |
+// afterwards in |UmaSessionStats.java|. |
+bool needReset() { |
Alexei Svitkine (slow)
2015/05/12 16:40:00
Please use a better name.
Capitalize first letter
gayane -on leave until 09-2017
2015/05/13 13:56:12
Done.
|
+ PrefService* local_state = g_browser_process->local_state(); |
+ return !local_state->HasPrefPath(prefs::kMetricsReportingEnabled) && |
+ variations::GetVariationParamValue("UMA_EnableCellularLogUpload", |
+ "Enabled") == "true"; |
+} |
+#endif |
} // namespace |
Alexei Svitkine (slow)
2015/05/12 16:40:00
Nit: add a blank line after this.
gayane -on leave until 09-2017
2015/05/13 13:56:12
Done.
|
ChromeMetricsServiceClient::ChromeMetricsServiceClient( |
@@ -279,6 +291,16 @@ void ChromeMetricsServiceClient::LogPluginLoadingError( |
} |
void ChromeMetricsServiceClient::Initialize() { |
+// Reset metrics reports if it is the first time cellular upload logic should |
+// apply to avoid sudden bulk uploads. It needs to be done before initializing |
+// metrics service so that metrics log manager is initialized correctly. |
+#if defined(OS_ANDROID) |
Alexei Svitkine (slow)
2015/05/12 16:40:00
Instead of having the ifdefs in 3 places, how abou
gayane -on leave until 09-2017
2015/05/13 13:56:12
Done.
|
+ if (needReset()) { |
+ local_state->ClearPref(metrics::prefs::kMetricsInitialLogs); |
+ local_state->ClearPref(metrics::prefs::kMetricsOngoingLogs); |
+ } |
+#endif |
+ |
metrics_service_.reset(new metrics::MetricsService( |
metrics_state_manager_, this, g_browser_process->local_state())); |
@@ -363,6 +385,15 @@ void ChromeMetricsServiceClient::Initialize() { |
scoped_ptr<metrics::MetricsProvider>( |
SigninStatusMetricsProvider::CreateInstance())); |
#endif // !defined(OS_CHROMEOS) && !defined(OS_IOS) |
+ |
+// Reset stability metrics if it is the first time cellular upload logic should |
+// apply to avoid sudden bulk uploads. It needs to be done after all providers |
+// are registered. |
+#if defined(OS_ANDROID) |
+ if (needReset()) { |
Alexei Svitkine (slow)
2015/05/12 16:40:00
Nit: No {}'s
gayane -on leave until 09-2017
2015/05/13 13:56:12
Done.
|
+ metrics_service_->ClearSavedStabilityMetrics(); |
+ } |
+#endif |
} |
void ChromeMetricsServiceClient::OnInitTaskGotHardwareClass() { |