Commit 09e9a5f4 authored by gayane's avatar gayane Committed by Commit bot

Reset metrics if cellular uploads logic should be applied.

In order to avoid large quantity of uploads after always enabling cellular uploads on Android reset metrics. This should happen only once.

BUG=455847

Review URL: https://codereview.chromium.org/1130993005

Cr-Commit-Position: refs/heads/master@{#329661}
parent d7f2f2b2
...@@ -101,8 +101,24 @@ bool IsCellularLogicEnabled() { ...@@ -101,8 +101,24 @@ bool IsCellularLogicEnabled() {
net::NetworkChangeNotifier::GetConnectionType()); net::NetworkChangeNotifier::GetConnectionType());
} }
// 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 ShouldClearSavedMetrics() {
#if defined(OS_ANDROID)
PrefService* local_state = g_browser_process->local_state();
return !local_state->HasPrefPath(prefs::kMetricsReportingEnabled) &&
variations::GetVariationParamValue("UMA_EnableCellularLogUpload",
"Enabled") == "true";
#else
return false;
#endif
}
} // namespace } // namespace
ChromeMetricsServiceClient::ChromeMetricsServiceClient( ChromeMetricsServiceClient::ChromeMetricsServiceClient(
metrics::MetricsStateManager* state_manager) metrics::MetricsStateManager* state_manager)
: metrics_state_manager_(state_manager), : metrics_state_manager_(state_manager),
...@@ -279,6 +295,15 @@ void ChromeMetricsServiceClient::LogPluginLoadingError( ...@@ -279,6 +295,15 @@ void ChromeMetricsServiceClient::LogPluginLoadingError(
} }
void ChromeMetricsServiceClient::Initialize() { void ChromeMetricsServiceClient::Initialize() {
// Clear 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 (ShouldClearSavedMetrics()) {
PrefService* local_state = g_browser_process->local_state();
local_state->ClearPref(metrics::prefs::kMetricsInitialLogs);
local_state->ClearPref(metrics::prefs::kMetricsOngoingLogs);
}
metrics_service_.reset(new metrics::MetricsService( metrics_service_.reset(new metrics::MetricsService(
metrics_state_manager_, this, g_browser_process->local_state())); metrics_state_manager_, this, g_browser_process->local_state()));
...@@ -363,6 +388,12 @@ void ChromeMetricsServiceClient::Initialize() { ...@@ -363,6 +388,12 @@ void ChromeMetricsServiceClient::Initialize() {
scoped_ptr<metrics::MetricsProvider>( scoped_ptr<metrics::MetricsProvider>(
SigninStatusMetricsProvider::CreateInstance())); SigninStatusMetricsProvider::CreateInstance()));
#endif // !defined(OS_CHROMEOS) && !defined(OS_IOS) #endif // !defined(OS_CHROMEOS) && !defined(OS_IOS)
// Clear 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 (ShouldClearSavedMetrics())
metrics_service_->ClearSavedStabilityMetrics();
} }
void ChromeMetricsServiceClient::OnInitTaskGotHardwareClass() { void ChromeMetricsServiceClient::OnInitTaskGotHardwareClass() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment