Chromium Code Reviews| 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 8954197117c9b35a4d1ba0d4a5d44bf6d59bf963..10f0049a98b05dc49163bcd71e061cae5da495d4 100644 |
| --- a/chrome/browser/metrics/chrome_metrics_service_client.cc |
| +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc |
| @@ -11,6 +11,7 @@ |
| #include "base/command_line.h" |
| #include "base/files/file_path.h" |
| #include "base/logging.h" |
| +#include "base/metrics/field_trial.h" |
| #include "base/metrics/histogram.h" |
| #include "base/prefs/pref_registry_simple.h" |
| #include "base/prefs/pref_service.h" |
| @@ -98,6 +99,24 @@ metrics::SystemProfileProto::Channel AsProtobufChannel( |
| return metrics::SystemProfileProto::CHANNEL_UNKNOWN; |
| } |
| +// Standard interval between log uploads, in seconds. |
| +#if defined(OS_ANDROID) || defined(OS_IOS) |
| +const int kStandardUploadIntervalSeconds = 5 * 60; // Five minutes. |
| +const int kStandardUploadIntervalCellularSeconds = 15 * 60; // Fifteen minutes. |
| +#else |
| +const int kStandardUploadIntervalSeconds = 30 * 60; // Thirty minutes. |
| +#endif |
| + |
| +#if defined(OS_ANDROID) || defined(OS_IOS) |
| +// Returns true if the user is assigned to the experiment group for enabled |
| +// cellular uploads. |
| +bool IsCellularEnabledByExperiment() { |
| + const std::string group_name = |
| + base::FieldTrialList::FindFullName("UMA_EnableCellularLogUpload"); |
| + return group_name == "Enabled"; |
| +} |
| +#endif |
| + |
| } // namespace |
| ChromeMetricsServiceClient::ChromeMetricsServiceClient( |
| @@ -246,6 +265,18 @@ ChromeMetricsServiceClient::CreateUploader( |
| on_upload_complete)); |
| } |
| +base::TimeDelta ChromeMetricsServiceClient::GetStandardUploadInterval() { |
| +#if defined(OS_ANDROID) || defined(OS_IOS) |
| + bool is_cellular = false; |
| + if (!cellular_callback_.is_null()) |
| + cellular_callback_.Run(&is_cellular); |
| + |
| + if (is_cellular && IsCellularEnabledByExperiment()) |
| + return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds); |
| +#endif |
| + return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds); |
| +} |
| + |
| base::string16 ChromeMetricsServiceClient::GetRegistryBackupKey() { |
| #if defined(OS_WIN) |
| return L"Software\\" PRODUCT_STRING_PATH L"\\StabilityMetrics"; |
| @@ -276,9 +307,7 @@ void ChromeMetricsServiceClient::Initialize() { |
| scoped_ptr<metrics::NetworkMetricsProvider> network_metrics_provider( |
| new metrics::NetworkMetricsProvider( |
| content::BrowserThread::GetBlockingPool())); |
| - base::Callback<void(bool*)> cellular_callback = |
| - network_metrics_provider->GetConnectionCallback(); |
| - metrics_service_->SetConnectionTypeCallback(cellular_callback); |
| + cellular_callback_ = network_metrics_provider->GetConnectionCallback(); |
|
Alexei Svitkine (slow)
2015/03/09 17:26:17
Instead of having this callback, how about just ke
gayane -on leave until 09-2017
2015/03/09 18:18:36
In that case we need to think about how to pass a
Alexei Svitkine (slow)
2015/03/09 18:20:42
Ah you're right. I guess it's fine keeping the cal
gunsch
2015/03/13 00:48:24
Acknowledged.
|
| metrics_service_->RegisterMetricsProvider(network_metrics_provider.Pass()); |
| metrics_service_->RegisterMetricsProvider( |
| @@ -289,7 +318,7 @@ void ChromeMetricsServiceClient::Initialize() { |
| scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider())); |
| profiler_metrics_provider_ = |
| - new metrics::ProfilerMetricsProvider(cellular_callback); |
| + new metrics::ProfilerMetricsProvider(cellular_callback_); |
| metrics_service_->RegisterMetricsProvider( |
| scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); |